This file is indexed.

/usr/share/axiom-20170501/src/algebra/SEXCAT.spad is in axiom-source 20170501-3.

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
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
)abbrev category SEXCAT SExpressionCategory
++ Author: S.M.Watt
++ Date Created: July 1987
++ Date Last Modified: 23 May 1991
++ Description:
++ This category allows the manipulation of Lisp values while keeping
++ the grunge fairly localized.
--  The coerce to expression lets the
--  values be displayed in the usual parenthesized way (displaying
--  them as type Expression can cause the formatter to die, since
--  certain magic cookies are in unexpected places).
--  SMW July 87

SExpressionCategory(Str, Sym, Int, Flt, Expr) : Category == SIG where
  Str : SetCategory
  Sym : SetCategory
  Int : SetCategory
  Flt : SetCategory
  Expr : SetCategory

  SIG ==> SetCategory with

    eq : (%,%) -> Boolean
      ++ eq(s, t) is true if EQ(s,t) is true in Lisp.

    null? : % -> Boolean
      ++ null?(s) is true if s is the S-expression ().

    atom? : % -> Boolean
      ++ atom?(s) is true if s is a Lisp atom.

    pair? : % -> Boolean
      ++ pair?(s) is true if s has is a non-null Lisp list.

    list? : % -> Boolean
      ++ list?(s) is true if s is a Lisp list, possibly ().

    string? : % -> Boolean
      ++ string?(s) is true if s is an atom and belong to Str.

    symbol? : % -> Boolean
      ++ symbol?(s) is true if s is an atom and belong to Sym.

    integer? : % -> Boolean
      ++ integer?(s) is true if s is an atom and belong to Int.

    float? : % -> Boolean
      ++ float?(s) is true if s is an atom and belong to Flt.

    destruct : % -> List %
      ++ destruct((a1,...,an)) returns the list [a1,...,an].

    string : % -> Str
      ++ string(s) returns s as an element of Str.
      ++ Error: if s is not an atom that also belongs to Str.

    symbol : % -> Sym
      ++ symbol(s) returns s as an element of Sym.
      ++ Error: if s is not an atom that also belongs to Sym.

    integer : % -> Int
      ++ integer(s) returns s as an element of Int.
      ++ Error: if s is not an atom that also belongs to Int.

    float : % -> Flt
      ++ float(s) returns s as an element of Flt;
      ++ Error: if s is not an atom that also belongs to Flt.

    expr : % -> Expr
      ++ expr(s) returns s as an element of Expr;
      ++ Error: if s is not an atom that also belongs to Expr.

    convert : List % -> %
      ++ convert([a1,...,an]) returns an S-expression \spad{(a1,...,an)}.

    convert : Str -> %
      ++ convert(x) returns the Lisp atom x;

    convert : Sym -> %
      ++ convert(x) returns the Lisp atom x.

    convert : Int -> %
      ++ convert(x) returns the Lisp atom x.

    convert : Flt -> %
      ++ convert(x) returns the Lisp atom x.

    convert : Expr -> %
      ++ convert(x) returns the Lisp atom x.

    car : % -> %
      ++ car((a1,...,an)) returns a1.

    cdr : % -> %
      ++ cdr((a1,...,an)) returns \spad{(a2,...,an)}.

    "#" : % -> Integer
      ++ #((a1,...,an)) returns n.

    elt : (%, Integer) -> %
      ++ elt((a1,...,an), i) returns \spad{ai}.

    elt : (%, List Integer) -> %
      ++ elt((a1,...,an), [i1,...,im]) returns \spad{(a_i1,...,a_im)}.