  
  [1X9 [33X[0;0YTechnical Details[133X[101X
  
  
  [1X9.1 [33X[0;0YThe Category Cat[133X[101X
  
  [1X9.1-1 ObjectCache[101X
  
  [33X[1;0Y[29X[2XObjectCache[102X( [3Xfunctor[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YIsCachingObject[133X
  
  [33X[0;0YRetuns  the  caching  object which stores the results of the functor [3Xfunctor[103X
  applied to objects.[133X
  
  [1X9.1-2 MorphismCache[101X
  
  [33X[1;0Y[29X[2XMorphismCache[102X( [3Xfunctor[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YIsCachingObject[133X
  
  [33X[0;0YRetuns  the  caching  object which stores the results of the functor [3Xfunctor[103X
  applied to morphisms.[133X
  
  
  [1X9.2 [33X[0;0YTools[133X[101X
  
  [1X9.2-1 FunctionWithNamedArguments[101X
  
  [33X[1;0Y[29X[2XFunctionWithNamedArguments[102X( [3Xspecification[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya function[133X
  
  [33X[0;0YSimulates named arguments in [5XGAP[105X as follows:[133X
  
  [30X    [33X[0;6Y[3Xspecification[103X  is  a  list  of  pairs with first entry the name of the
        argument and second entry a default value (which must be immutable).[133X
  
  [30X    [33X[0;6Y[3Xfunc[103X must be a function with first argument [10XCAP_NAMED_ARGUMENTS[110X.[133X
  
  [30X    [33X[0;6YThe return value is a function with one argument fewer than [3Xfunc[103X.[133X
  
  [33X[0;0YWhen  calling the returned function, the arguments are passed on to [3Xfunc[103X. To
  simulate  named  arguments,  any  [5XGAP[105X options appearing in [3Xspecification[103X are
  consumed and put into the record [10XCAP_NAMED_ARGUMENTS[110X.[133X
  
  [1X9.2-2 CAP_INTERNAL_GET_DATA_TYPE_FROM_STRING[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_GET_DATA_TYPE_FROM_STRING[102X( [3Xfilter_string[103X[, [3Xcategory[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya record[133X
  
  [33X[0;0YThe  function  takes  one  of the strings listed under [10Xfilter_list[110X in [14X7.3[114X as
  input  and  returns the corresponding data type (see [2XCapJitInferredDataTypes[102X
  ([14XCompilerForCAP:  CapJitInferredDataTypes[114X)  for  details). If no category is
  given,    data    types    with    generic   filters   ([10XIsCapCategoryObject[110X,
  [10XIsCapCategoryMorphism[110X  etc.)  are returned. However, those cannot be used in
  the  context  of [10XCompilerForCAP[110X because the component [10Xcategory[110X cannot be set
  in this case.[133X
  
  [1X9.2-3 CAP_INTERNAL_GET_DATA_TYPES_FROM_STRINGS[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_GET_DATA_TYPES_FROM_STRINGS[102X( [3Xlist_of_strings[103X[, [3Xcategory[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YApplies  [2XCAP_INTERNAL_GET_DATA_TYPE_FROM_STRING[102X  ([14X9.2-2[114X)  to all elements of
  [3Xlist[103X and returns the result.[133X
  
  [1X9.2-4 CAP_INTERNAL_REPLACED_STRING_WITH_FILTER[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_REPLACED_STRING_WITH_FILTER[102X( [3Xfilter_string[103X[, [3Xcategory[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya filter[133X
  
  [33X[0;0YThe  function  takes  one  of the strings listed under [10Xfilter_list[110X in [14X7.3[114X as
  input.  The corresponding filter of the category [3Xcategory[103X is returned. If no
  category     is     given,     generic     filters     ([10XIsCapCategoryObject[110X,
  [10XIsCapCategoryMorphism[110X etc.) are used.[133X
  
  [1X9.2-5 CAP_INTERNAL_REPLACED_STRINGS_WITH_FILTERS[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_REPLACED_STRINGS_WITH_FILTERS[102X( [3Xlist[103X[, [3Xcategory[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YReplaced list[133X
  
  [33X[0;0YApplies  [2XCAP_INTERNAL_REPLACED_STRING_WITH_FILTER[102X ([14X9.2-4[114X) to all elements of
  [3Xlist[103X and returns the result.[133X
  
  [1X9.2-6 CAP_INTERNAL_MERGE_FILTER_LISTS[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_MERGE_FILTER_LISTS[102X( [3Xlist[103X, [3Xadditional[103X, [3Xlist[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ymerged lists[133X
  
  [33X[0;0YThe  first argument should be a dense list with filters, the second a sparse
  list  containing  filters  not longer then the first one. The filters of the
  second  list are then appended (via and) to the filters in the first list at
  the corresponding position, and the resulting list is returned.[133X
  
  [1X9.2-7 CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_RETURN_OPTION_OR_DEFAULT[102X( [3Xstring[103X, [3Xvalue[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yoption value[133X
  
  [33X[0;0YReturns the value of the option with name string, or, if this value is fail,
  the object value.[133X
  
  [1X9.2-8 CAP_INTERNAL_FIND_APPEARANCE_OF_SYMBOL_IN_FUNCTION[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_FIND_APPEARANCE_OF_SYMBOL_IN_FUNCTION[102X( [3Xfunction[103X, [3Xsymbol_list[103X, [3Xloop_multiple[103X, [3Xreplacement_record[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list of symbols with multiples[133X
  
  [33X[0;0YThe  function  searches  for the appearance of the strings in symbol list on
  the  function  function  and returns a list of pairs, containing the name of
  the  symbol  and  the number of appearance. If the symbol appears in a loop,
  the  number  of  appearance is counted times the loop multiple. Moreover, if
  appearances  of  found  strings  should  be replaced by collections of other
  strings, then these can be specified in the replacement record.[133X
  
  [1X9.2-9 CAP_INTERNAL_MERGE_PRECONDITIONS_LIST[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_MERGE_PRECONDITIONS_LIST[102X( [3Xlist1[103X, [3Xlist2[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ymerge list[133X
  
  [33X[0;0YThe  function  takes  two  lists  containing  pairs of symbols (strings) and
  multiples.  The lists are merged that pairs where the string only appears in
  one  list  is then added to the return list, if a pair with a string appears
  in  both  lists,  the resulting lists only contains this pair once, with the
  higher multiple from both lists.[133X
  
  [1X9.2-10 CAP_INTERNAL_ASSERT_VALUE_IS_OF_TYPE_GETTER[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_ASSERT_VALUE_IS_OF_TYPE_GETTER[102X( [3Xdata_type[103X, [3Xhuman_readable_identifier_list[103X ) [32X function[133X
  
  [33X[0;0YReturns  a  unary  function  which throws an error if its argument is not of
  type [3Xdata_type[103X. [3Xhuman_readable_identifier_list[103X is a list of arguments passed
  to  [10XError[110X  to  refer  to  the  argument  of  the unary function in the error
  message.[133X
  
  [1X9.2-11 CAP_INTERNAL_ASSERT_IS_CELL_OF_CATEGORY[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_ASSERT_IS_CELL_OF_CATEGORY[102X( [3Xcell[103X, [3Xcategory[103X, [3Xhuman_readable_identifier_list[103X ) [32X function[133X
  
  [33X[0;0YThe  function throws an error if [3Xcell[103X is not a cell of [3Xcategory[103X. If [3Xcategory[103X
  is  the  boolean  [10Xfalse[110X,  only  general  checks  not  specific to a concrete
  category   are   performed.  [3Xhuman_readable_identifier_list[103X  is  a  list  of
  arguments passed to [10XError[110X to refer to [3Xcell[103X in the error message.[133X
  
  [1X9.2-12 CAP_INTERNAL_ASSERT_IS_OBJECT_OF_CATEGORY[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_ASSERT_IS_OBJECT_OF_CATEGORY[102X( [3Xobject[103X, [3Xcategory[103X, [3Xhuman_readable_identifier_list[103X ) [32X function[133X
  
  [33X[0;0YThe  function  throws  an  error  if [3Xobject[103X is not an object of [3Xcategory[103X. If
  [3Xcategory[103X  is  the  boolean  [10Xfalse[110X,  only  general  checks  not specific to a
  concrete category are performed. [3Xhuman_readable_identifier_list[103X is a list of
  arguments passed to [10XError[110X to refer to [3Xobject[103X in the error message.[133X
  
  [1X9.2-13 CAP_INTERNAL_ASSERT_IS_MORPHISM_OF_CATEGORY[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_ASSERT_IS_MORPHISM_OF_CATEGORY[102X( [3Xmorphism[103X, [3Xcategory[103X, [3Xhuman_readable_identifier_list[103X ) [32X function[133X
  
  [33X[0;0YThe  function  throws an error if [3Xmorphism[103X is not a morphism of [3Xcategory[103X. If
  [3Xcategory[103X  is  the  boolean  [10Xfalse[110X,  only  general  checks  not specific to a
  concrete category are performed. [3Xhuman_readable_identifier_list[103X is a list of
  arguments passed to [10XError[110X to refer to [3Xmorphism[103X in the error message.[133X
  
  [1X9.2-14 CAP_INTERNAL_ASSERT_IS_TWO_CELL_OF_CATEGORY[101X
  
  [33X[1;0Y[29X[2XCAP_INTERNAL_ASSERT_IS_TWO_CELL_OF_CATEGORY[102X( [3Xtwo_cell[103X, [3Xcategory[103X, [3Xhuman_readable_identifier_list[103X ) [32X function[133X
  
  [33X[0;0YThe  function  throws  an  error if [3Xtwo_cell[103X is not a [23X2[123X-cell of [3Xcategory[103X. If
  [3Xcategory[103X  is  the  boolean  [10Xfalse[110X,  only  general  checks  not specific to a
  concrete category are performed. [3Xhuman_readable_identifier_list[103X is a list of
  arguments passed to [10XError[110X to refer to [3Xtwo_cell[103X in the error message.[133X
  
  [1X9.2-15 CachingStatistic[101X
  
  [33X[1;0Y[29X[2XCachingStatistic[102X( [3Xcategory[103X[, [3Xoperation[103X] ) [32X function[133X
  
  [33X[0;0YPrints  statistics  for  all caches in [3Xcategory[103X. If [3Xoperation[103X is given (as a
  string), only statistics for the given operation cache is stored.[133X
  
  [1X9.2-16 BrowseCachingStatistic[101X
  
  [33X[1;0Y[29X[2XBrowseCachingStatistic[102X( [3Xcategory[103X ) [32X function[133X
  
  [33X[0;0YDisplays  statistics  for  all  caches in [3Xcategory[103X. in a Browse window. Here
  "status"  indicates if the cache is weak, strong, or inactive, "hits" is the
  number  of  successful  cache  accesses, "misses" the number of unsuccessful
  cache  accesses,  and "stored" the number of objects currently stored in the
  cache.[133X
  
  [1X9.2-17 InstallDeprecatedAlias[101X
  
  [33X[1;0Y[29X[2XInstallDeprecatedAlias[102X( [3Xalias_name[103X, [3Xfunction_name[103X, [3Xdeprecation_date[103X ) [32X function[133X
  
  [33X[0;0YMakes  the  function  given  by  [3Xfunction_name[103X  available  under  the  alias
  [3Xalias_name[103X with a deprecation warning including the date [3Xdeprecation_date[103X.[133X
  
  [1X9.2-18 IsSpecializationOfFilter[101X
  
  [33X[1;0Y[29X[2XIsSpecializationOfFilter[102X( [3Xfilter1[103X, [3Xfilter2[103X ) [32X function[133X
  
  [33X[0;0YChecks  if  [3Xfilter2[103X  is  more  special than [3Xfilter1[103X, i.e. if [3Xfilter2[103X implies
  [3Xfilter1[103X.  [3Xfilter1[103X and/or [3Xfilter2[103X can also be one of the strings listed under
  [10Xfilter_list[110X  in  [14X7.3[114X  and  in  this  case  are replaced by the corresponding
  filters  (e.g.  [10XIsCapCategory[110X,  [10XIsCapCategoryObject[110X,  [10XIsCapCategoryMorphism[110X,
  ...).[133X
  
  [1X9.2-19 IsSpecializationOfFilterList[101X
  
  [33X[1;0Y[29X[2XIsSpecializationOfFilterList[102X( [3Xfilter_list1[103X, [3Xfilter_list2[103X ) [32X function[133X
  
  [33X[0;0YChecks if [3Xfilter_list2[103X is more special than [3Xfilter_list1[103X, i.e. if both lists
  have  the  same  length and any element of [3Xfilter_list2[103X is more special than
  the    corresponding    element    of   [3Xfilter_list1[103X   in   the   sense   of
  [2XIsSpecializationOfFilter[102X ([14X9.2-18[114X). [3Xfilter_list1[103X and [3Xfilter_list2[103X can also be
  the string [10X"any"[110X, respresenting a most general filter list of any length.[133X
  
  [1X9.2-20 InstallMethodForCompilerForCAP[101X
  
  [33X[1;0Y[29X[2XInstallMethodForCompilerForCAP[102X( [3Xsame[103X, [3Xas[103X, [3Xfor[103X, [3XInstallMethod[103X ) [32X function[133X
  
  [33X[0;0YInstalls a method via [10XInstallMethod[110X and adds it to the list of methods known
  to the compiler. See [2XCapJitAddKnownMethod[102X ([14X9.2-22[114X) for requirements.[133X
  
  [1X9.2-21 InstallOtherMethodForCompilerForCAP[101X
  
  [33X[1;0Y[29X[2XInstallOtherMethodForCompilerForCAP[102X( [3Xsame[103X, [3Xas[103X, [3Xfor[103X, [3XInstallOtherMethod[103X ) [32X function[133X
  
  [33X[0;0YInstalls  a method via [10XInstallOtherMethod[110X and adds it to the list of methods
  known to the compiler. See [2XCapJitAddKnownMethod[102X ([14X9.2-22[114X) for requirements.[133X
  
  [1X9.2-22 CapJitAddKnownMethod[101X
  
  [33X[1;0Y[29X[2XCapJitAddKnownMethod[102X( [3Xoperation[103X, [3Xfilters[103X, [3Xmethod[103X ) [32X function[133X
  
  [33X[0;0YAdds  a  method  to  the list of methods known to the compiler. If the first
  filter  implies  [10XIsCapCategory[110X,  method  selection  only takes the number of
  arguments  and  the  first  filter  into  account.  This  allows  to resolve
  operations  even  in the case that the syntax tree cannot fully be typed. If
  the  first  filter  does not imply [10XIsCapCategory[110X, method selection takes all
  filters  into  account.  To  strictly  distinguish  between  the  two cases,
  [10XIsCapCategory[110X must not imply the first filter (except if the first filter is
  equal  to  [10XIsCapCategory[110X).  Method selection is strict in the sense that two
  different  methods  for  the same operation must not be comparable. That is,
  they  must have a different number of filters or the filters at at least one
  position  must  not  be  related  via implication. In particular, adding two
  methods with a CAP category as first argument (or a convenience method for a
  CAP  operation)  with  the  same number of arguments and one category filter
  implying the other is not supported.[133X
  
  [1X9.2-23 CapJitAddTypeSignature[101X
  
  [33X[1;0Y[29X[2XCapJitAddTypeSignature[102X( [3Xname[103X, [3Xinput_filters[103X, [3Xoutput_data_type[103X ) [32X function[133X
  
  [33X[0;0Y(experimental)  Adds  a  type signature for the global function or operation
  given  by  [3Xname[103X to the compiler. [3Xinput_filters[103X must be a list of filters, or
  the  string  '"any"'  representing a most general filter list of any length.
  [3Xoutput_data_type[103X  must  be  a filter, a data type, or a function. If it is a
  function  with one argument, it must accept a list of input types and return
  the  corresponding  data  type  of  the output. If it is a function with two
  arguments,  it  must  accept  the  arguments  of a function call of [3Xname[103X (as
  syntax  trees)  and  the  function stack and return a record with components
  [10Xargs[110X (the possibly modified arguments) and [10Xoutput_type[110X (the data type of the
  output).         See         [2XCapJitInferredDataTypes[102X        ([14XCompilerForCAP:
  CapJitInferredDataTypes[114X) for more details on data types.[133X
  
  [1X9.2-24 CapJitAddTypeSignatureDeferred[101X
  
  [33X[1;0Y[29X[2XCapJitAddTypeSignatureDeferred[102X( [3Xpackage_name[103X, [3Xname[103X, [3Xinput_filters[103X, [3Xoutput_data_type[103X ) [32X function[133X
  
  [33X[0;0Y(experimental)  Same as [2XCapJitAddTypeSignature[102X ([14X9.2-23[114X), but the filters and
  the  output  data type must be given as strings which will be evaluated once
  [3Xpackage_name[103X  is  loaded.  This should be used with care because errors will
  only be detected at runtime.[133X
  
  [1X9.2-25 CapJitDataTypeOfListOf[101X
  
  [33X[1;0Y[29X[2XCapJitDataTypeOfListOf[102X( [3Xelement_type[103X ) [32X function[133X
  
  [33X[0;0Y(experimental)  Returns  the  data type of a list whose elements are of type
  [3Xelement_type[103X. [3Xelement_type[103X must be a filter or a data type.[133X
  
  [1X9.2-26 CapJitDataTypeOfNTupleOf[101X
  
  [33X[1;0Y[29X[2XCapJitDataTypeOfNTupleOf[102X( [3Xn[103X, [3Xelement_types...[103X ) [32X function[133X
  
  [33X[0;0Y(experimental)  Returns  the  data  type  of an [3Xn[103X-tuple whose entries are of
  types  corresponding  to  [3Xelement_types[103X. [3Xelement_types...[103X must be filters or
  data types.[133X
  
  [1X9.2-27 CapJitDataTypeOfCategory[101X
  
  [33X[1;0Y[29X[2XCapJitDataTypeOfCategory[102X( [3Xcategory[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCapJitDataTypeOfObjectOfCategory[102X( [3Xcategory[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCapJitDataTypeOfMorphismOfCategory[102X( [3Xcategory[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCapJitDataTypeOfTwoCellOfCategory[102X( [3Xcategory[103X ) [32X function[133X
  
  [33X[0;0Y(experimental) Returns the data type of the category (or objects, morphisms,
  or two cells in the category) [3Xcategory[103X.[133X
  
  [1X9.2-28 CapJitTypedExpression[101X
  
  [33X[1;0Y[29X[2XCapJitTypedExpression[102X( [3Xvalue[103X, [3Xdata_type_getter[103X ) [32X function[133X
  
  [33X[0;0Y(experimental)  Simply returns [3Xvalue[103X, but allows to specify the data type of
  [3Xvalue[103X  for  CompilerForCAP. [3Xdata_type_getter[103X must be a literal function or a
  global  variable  pointing  to  a  function.  The  function  must  accept no
  arguments  or  a  single  argument,  and  return  a  valid data type. If the
  function  accepts  a  single  argument, it must be inside a CAP operation or
  method      known      to      CompilerForCAP      (for     example,     see
  [2XInstallMethodForCompilerForCAP[102X ([14X9.2-20[114X)), and the current category (i.e. the
  first  argument of the CAP operation or method known to CompilerForCAP) will
  be  passed  to  the  function.  IMPORTANT:  If [3Xdata_type_getter[103X is a literal
  function,  it  must  not  contain  references  to  variables in its context.
  Otherwise   the   code   might   access   random   memory   locations.   See
  [2XCapJitInferredDataTypes[102X  ([14XCompilerForCAP:  CapJitInferredDataTypes[114X) for more
  details on data types.[133X
  
  [1X9.2-29 CapFixpoint[101X
  
  [33X[1;0Y[29X[2XCapFixpoint[102X( [3Xpredicate[103X, [3Xfunc[103X, [3Xinitial_value[103X ) [32X function[133X
  
  [33X[0;0YComputes  a  fixpoint  of  [3Xfunc[103X  with regard to equality given by [3Xpredicate[103X,
  starting  with [3Xinitial_value[103X. If no such fixpoint exists, the execution does
  not terminate.[133X
  
  [1X9.2-30 Iterated[101X
  
  [33X[1;0Y[29X[2XIterated[102X( [3Xlist[103X, [3Xfunc[103X, [3Xinitial_value[103X ) [32X operation[133X
  
  [33X[0;0YShorthand for [10XIterated( Concatenation( [ [3Xinitial_value[103X[10X ], [3Xlist[103X[10X ), [3Xfunc[103X[10X )[110X.[133X
  
  [1X9.2-31 Iterated[101X
  
  [33X[1;0Y[29X[2XIterated[102X( [3Xlist[103X, [3Xfunc[103X, [3Xinitial_value[103X, [3Xterminal_value[103X ) [32X operation[133X
  
  [33X[0;0YShorthand   for   [10XIterated(   Concatenation(  [  [3Xinitial_value[103X[10X  ],  [3Xlist[103X[10X,  [
  [3Xterminal_value[103X[10X ] ), [3Xfunc[103X[10X )[110X.[133X
  
  [1X9.2-32 TransitivelyNeededOtherPackages[101X
  
  [33X[1;0Y[29X[2XTransitivelyNeededOtherPackages[102X( [3Xpackage_name[103X ) [32X function[133X
  
  [33X[0;0YReturns a list of package names which are transitively needed other packages
  of the package [3Xpackage_name[103X.[133X
  
  [1X9.2-33 PackageOfCAPOperation[101X
  
  [33X[1;0Y[29X[2XPackageOfCAPOperation[102X( [3Xoperation_name[103X ) [32X function[133X
  
  [33X[0;0YReturns  the  name  of  the  package  to  which  the  CAP operation given by
  [3Xoperation_name[103X belongs or fail if the package is not known.[133X
  
  [1X9.2-34 SafePosition[101X
  
  [33X[1;0Y[29X[2XSafePosition[102X( [3Xlist[103X, [3Xobj[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Yan integer[133X
  
  [33X[0;0YReturns [10XPosition( [3Xlist[103X[10X, [3Xobj[103X[10X )[110X while asserting that this value is not [10Xfail[110X.[133X
  
  [1X9.2-35 SafeUniquePosition[101X
  
  [33X[1;0Y[29X[2XSafeUniquePosition[102X( [3Xlist[103X, [3Xobj[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Yan integer[133X
  
  [33X[0;0YReturns  [10XPosition(  [3Xlist[103X[10X,  [3Xobj[103X[10X )[110X while asserting that this value is not [10Xfail[110X
  and the position is unique.[133X
  
  [1X9.2-36 SafePositionProperty[101X
  
  [33X[1;0Y[29X[2XSafePositionProperty[102X( [3Xlist[103X, [3Xfunc[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Yan integer[133X
  
  [33X[0;0YReturns  [10XPositionProperty(  [3Xlist[103X[10X,  [3Xfunc[103X[10X )[110X while asserting that this value is
  not [10Xfail[110X.[133X
  
  [1X9.2-37 SafeUniquePositionProperty[101X
  
  [33X[1;0Y[29X[2XSafeUniquePositionProperty[102X( [3Xlist[103X, [3Xfunc[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Yan integer[133X
  
  [33X[0;0YReturns  a  position in [3Xlist[103X for which [3Xfunc[103X returns [10Xtrue[110X when applied to the
  corresponding  entry  while  asserting  that  there  exists exactly one such
  position.[133X
  
  [1X9.2-38 SafeFirst[101X
  
  [33X[1;0Y[29X[2XSafeFirst[102X( [3Xlist[103X, [3Xfunc[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Yan element of the list[133X
  
  [33X[0;0YReturns [10XFirst( [3Xlist[103X[10X, [3Xfunc[103X[10X )[110X while asserting that this value is not [10Xfail[110X.[133X
  
  [1X9.2-39 SafeUniqueEntry[101X
  
  [33X[1;0Y[29X[2XSafeUniqueEntry[102X( [3Xlist[103X, [3Xfunc[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Yan element of the list[133X
  
  [33X[0;0YReturns  a  value  in  [3Xlist[103X for which [3Xfunc[103X returns [10Xtrue[110X while asserting that
  there exists exactly one such entry.[133X
  
  [1X9.2-40 NTuple[101X
  
  [33X[1;0Y[29X[2XNTuple[102X( [3Xn[103X, [3Xargs...[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns [3Xargs[103X while asserting that its length is [3Xn[103X.[133X
  
  [1X9.2-41 Pair[101X
  
  [33X[1;0Y[29X[2XPair[102X( [3Xfirst[103X, [3Xsecond[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YAlias for [10XNTuple( 2, [3Xfirst[103X[10X, [3Xsecond[103X[10X )[110X.[133X
  
  [1X9.2-42 Triple[101X
  
  [33X[1;0Y[29X[2XTriple[102X( [3Xfirst[103X, [3Xsecond[103X, [3Xthird[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YAlias for [10XNTuple( 3, [3Xfirst[103X[10X, [3Xsecond[103X[10X, [3Xthird[103X[10X )[110X.[133X
  
  [1X9.2-43 TransposedMatWithGivenDimensions[101X
  
  [33X[1;0Y[29X[2XTransposedMatWithGivenDimensions[102X( [3Xnr_rows[103X, [3Xnr_cols[103X, [3Xlistlist[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list (of lists)[133X
  
  [33X[0;0YThe arguments are two integers [3Xnr_rows[103X, [3Xnr_cols[103X and a list of lists [3Xlistlist[103X
  such  that  [3Xnr_rows[103X = [10XLength[110X([3Xlistlist[103X) and [3Xnr_cols[103X = [10XLength[110X([3Xlistlist[103X[23X[i][123X) for
  [23Xi=1[123X to [3Xnr_rows[103X. The output is the transpose of [3Xlistlist[103X as a list consisting
  of [3Xnr_cols[103X rows and [3Xnr_rows[103X columns.[133X
  
  [1X9.2-44 HandlePrecompiledTowers[101X
  
  [33X[1;0Y[29X[2XHandlePrecompiledTowers[102X( [3Xcategory[103X, [3Xunderlying_category[103X, [3Xconstructor_name[103X ) [32X function[133X
  
  [33X[0;0YHandles            the            information            stored           in
  [10X[3Xunderlying_category[103X[10X!.compiler_hints.precompiled_towers[110X (if bound) which is a
  list of records with components:[133X
  
  [30X    [33X[0;6Y[10Xremaining_constructors_in_tower[110X: a non-empty list of strings (names of
        category constructors)[133X
  
  [30X    [33X[0;6Y[10Xprecompiled_functions_adder[110X:  a  function  accepting a CAP category as
        input[133X
  
  [33X[0;0YIf  [3Xconstructor_name[103X  is  the only entry of [10Xremaining_constructors_in_tower[110X,
  [10Xprecompiled_functions_adder[110X  is  applied  to  [3Xcategory[103X (except if the option
  [10Xno_precompiled_code[110X  is  set to [10Xtrue[110X) and should add precompiled code. Else,
  if  [3Xconstructor_name[103X  is the first entry of [10Xremaining_constructors_in_tower[110X,
  the  information  is attached to [10X[3Xcategory[103X[10X!.compiler_hints.precompiled_towers[110X
  after  removing [3Xconstructor_name[103X from [10Xremaining_constructors_in_tower[110X. Note:
  Currently,  there  is  no logic for finding the "optimal" code to install if
  [3Xconstructor_name[103X  is  the  only  entry of [10Xremaining_constructors_in_tower[110X of
  multiple entries.[133X
  
  [1X9.2-45 CAP_JIT_INCOMPLETE_LOGIC[101X
  
  [33X[1;0Y[29X[2XCAP_JIT_INCOMPLETE_LOGIC[102X( [3Xvalue[103X ) [32X function[133X
  
  [33X[0;0YSimply  returns  [3Xvalue[103X.  Used  to signify that the argument is not fully run
  through all logic functions/templates by CompilerForCAP.[133X
  
  [1X9.2-46 CAP_JIT_EXPR_CASE_WRAPPER[101X
  
  [33X[1;0Y[29X[2XCAP_JIT_EXPR_CASE_WRAPPER[102X( [3Xfunc[103X ) [32X function[133X
  
  [33X[0;0YSimply returns [3Xfunc[103X, which must be a literal function without arguments only
  containing an [10Xif-elif-else[110X statement with each branch consisting of a single
  [10Xreturn[110X   statement.  Used  to  write  expressions  of  the  form  [10Xfunction()
  if-elif-else   end()[110X  as  [10XCAP_JIT_EXPR_CASE_WRAPPER(function()  if-elif-else
  end)()[110X because the former is not valid in Julia.[133X
  
  [1X9.2-47 ListWithKeys[101X
  
  [33X[1;0Y[29X[2XListWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XList(  [3Xlist[103X[10X,  [3Xfunc[103X[10X  )[110X  but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-48 SumWithKeys[101X
  
  [33X[1;0Y[29X[2XSumWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XSum(  [3Xlist[103X[10X,  [3Xfunc[103X[10X  )[110X  but  [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-49 ProductWithKeys[101X
  
  [33X[1;0Y[29X[2XProductWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XProduct(  [3Xlist[103X[10X, [3Xfunc[103X[10X )[110X but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-50 ForAllWithKeys[101X
  
  [33X[1;0Y[29X[2XForAllWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XForAll(  [3Xlist[103X[10X,  [3Xfunc[103X[10X )[110X but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-51 ForAnyWithKeys[101X
  
  [33X[1;0Y[29X[2XForAnyWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XForAny(  [3Xlist[103X[10X,  [3Xfunc[103X[10X )[110X but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-52 NumberWithKeys[101X
  
  [33X[1;0Y[29X[2XNumberWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XNumber(  [3Xlist[103X[10X,  [3Xfunc[103X[10X )[110X but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-53 FilteredWithKeys[101X
  
  [33X[1;0Y[29X[2XFilteredWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XFiltered( [3Xlist[103X[10X, [3Xfunc[103X[10X )[110X but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-54 FirstWithKeys[101X
  
  [33X[1;0Y[29X[2XFirstWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XFirst(  [3Xlist[103X[10X,  [3Xfunc[103X[10X  )[110X but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
  [1X9.2-55 LastWithKeys[101X
  
  [33X[1;0Y[29X[2XLastWithKeys[102X( [3Xlist[103X, [3Xfunc[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YSame  as  [10XLast(  [3Xlist[103X[10X,  [3Xfunc[103X[10X  )[110X  but [3Xfunc[103X gets both the key [10Xi[110X and [10X[3Xlist[103X[10X[i][110X as
  arguments.[133X
  
