This file is indexed.

/usr/share/gap/lib/function.gd is in gap-libs 4r8p6-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#############################################################################
##
#W  function.gd                GAP library                     Steve Linton
##
##
#Y  Copyright (C) 2015 The GAP Group
##
##  This file contains the declarations of the functions and operations
##  relating to functions and function-calling which are not so basic
##  that they need to be in function.g
##


#############################################################################
##
#F  CallWithTimeout( <timeout>, <func>[, <arg1>[, <arg2>....]] )  
##         . . call a function with a time limit
#F  CallWithTimeoutList( <timeout>, <func>, <arglist> )  
##
##  <#GAPDoc Label="CallWithTimeout">
##  <Index>Timeouts</Index>
##  <ManSection>
##  <Func Name="CallWithTimeout" Arg='timeout, func, .....'/>
##  <Func Name="CallWithTimeoutList" Arg='timeout, func, arglist'/>
##
##  <Description>
##    <C>CallWithTimeout</C> and <C>CallWithTimeoutList</C> support calling a function
##  with a limit on the CPU time it can consume. <P/>
##
##  This functionality may not be available on all systems and you should check 
##  <Ref Var="GAPInfo.TimeoutsSupported"/> before using this functionality.<P/>
##
##  <C>CallWithTimeout</C> is variadic. 
##  Its third and subsequent arguments, if any, are the arguments passed to <A>func</A>.
##  <C>CallWithTimeoutList</C> in contrast takes exactly three arguments, of which the third is a list
##  (possibly empty) or arguments to pass to <A>func</A>. <P/>
##
##  If the call completes within the allotted time and returns a value <C>res</C>, the result of 
##  <C>CallWithTimeout[List]</C> is a length 2 list of the form <C> [ true, res ] </C>. <P/>
##  
##  If the call completes within the allotted time and returns no value, the result of 
##  <C>CallWithTimeout[List]</C> is a list of length 1 containing the value <C>true</C>.<P/>
##
##  If the call does not complete within the timeout, the result of <C>CallWithTimeout[List]</C>
##  is a list of length 1 containing the value <C>false</C>  In this case, just as if you had
##  <C>quit</C> from a break loop, there is some risk that internal data structures in &GAP; may
##  have been left in an inconsistent state, and you should proceed with caution.<P/>
##
##  The timer is suspended during execution of a break loop and abandoned when you quit from a break loop.<P/>
##
##  Timeouts may not be nested. That is, during execution of <C>CallWithTimeout(<A>timeout</A>,<A>func</A>,...)</C>,
##  <A>func</A> (or functions it calls) may not call <C>CallWithTimeout</C> or <C>CallWithTimeoutList</C>. 
##  This restriction may be lifted on at least some systems in future releases. It is 
##  permitted to use <C>CallWithTimeout</C> or <C>CallWithTimeoutList</C> from within a break loop, even if a
##  suspended timeout exists, although there is limit on the depth of such nesting.<P/>
##
##  The limit <A>timeout</A> is specified as a record. At present the following components are recognised
##  <C>nanoseconds</C>, <C>microseconds</C>, <C>milliseconds</C>, <C>seconds</C>, 
##  <C>minutes</C>, <C>hours</C>, <C>days</C> and <C>weeks</C>. Any of these 
##  components which is present should be bound to a positive integer, rational or float and the times
##  represented are totalled to give the actual timeout. As a shorthand, a single positive 
##  integers may be supplied, and is taken as a number of microseconds.
##  Further components are permitted and ignored, to allow for future functionality.<P/>
##
##  The precision of the timeouts is not guaranteed, and there is a system dependent upper limit on the timeout 
##  which is typically about 8 years on 32 bit systems and about 30 billion years on 64 bit systems. Timeouts longer
##  than this will be reduced to this limit. On Windows systems, timing is based on elapsed time, not CPU time
##  because the necessary POSIX CPU timing API is not supported.<P/>
##  </Description>
##  </ManSection>
##  <#/GAPDoc>

DeclareGlobalFunction("CallWithTimeout");
DeclareGlobalFunction("CallWithTimeoutList");