This file is indexed.

/usr/share/axiom-20170501/src/algebra/FMCAT.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
)abbrev category FMCAT FreeModuleCat
++ Author: Michel Petitot petitot@lifl.fr
++ Date Created: 91
++ Date Last Updated: 7 Juillet 92
++ References: 
++ Lamb92 Next Generation Computer Algebra Systems AXIOM and the 
++ Scratchpad Concept: Applications to Research in Algebra
++ Description:
++ A domain of this category 
++ implements formal linear combinations
++ of elements from a domain \spad{Basis} with coefficients
++ in a domain \spad{R}. The domain \spad{Basis} needs only
++ to belong to the category \spadtype{SetCategory} and \spad{R}
++ to the category \spadtype{Ring}. Thus the coefficient ring
++ may be non-commutative.
++ See the \spadtype{XDistributedPolynomial} constructor
++ for examples of domains built with the \spadtype{FreeModuleCat}
++ category constructor.

FreeModuleCat(R, Basis) : Category == SIG where
   R : Ring
   Basis : SetCategory

   TERM ==> Record(k: Basis, c: R)
   
   SIG ==> Join(BiModule(R,R), RetractableTo Basis) with

     "*" : (R, Basis) -> %
       ++ \spad{r*b} returns the product of \spad{r} by \spad{b}.

     coefficient : (%, Basis) -> R
       ++ \spad{coefficient(x,b)} returns the coefficient 
       ++ of \spad{b} in \spad{x}.

     map : (R -> R, %) -> %
       ++ \spad{map(fn,u)} maps function \spad{fn} onto the coefficients
       ++  of the non-zero monomials of \spad{u}.

     monom : (Basis, R) -> %
       ++ \spad{monom(b,r)} returns the element with the single monomial
       ++  \spad{b} and coefficient \spad{r}.

     monomial? : % -> Boolean
       ++ \spad{monomial?(x)} returns true if \spad{x} contains a single 
       ++ monomial.

     listOfTerms : % -> List TERM
       ++ \spad{listOfTerms(x)} returns a list \spad{lt} of terms with type
       ++ \spad{Record(k: Basis, c: R)} such that \spad{x} equals
       ++ \spad{reduce(+, map(x +-> monom(x.k, x.c), lt))}.

     coefficients : % -> List R           
       ++ \spad{coefficients(x)} returns the list of coefficients of \spad{x}

     monomials : % -> List %
       ++ \spad{monomials(x)} returns the list of \spad{r_i*b_i}
       ++ whose sum is \spad{x}.

     numberOfMonomials : % -> NonNegativeInteger
       ++ \spad{numberOfMonomials(x)} returns the number of monomials 
       ++ of \spad{x}.

     leadingMonomial : % -> Basis
       ++ \spad{leadingMonomial(x)} returns the first element from 
       ++ \spad{Basis} which appears in \spad{listOfTerms(x)}.

     leadingCoefficient : % -> R
       ++ \spad{leadingCoefficient(x)} returns the first coefficient
       ++ which appears in \spad{listOfTerms(x)}.

     leadingTerm : % -> TERM 
       ++ \spad{leadingTerm(x)} returns the first term which
       ++ appears in \spad{listOfTerms(x)}.

     reductum : % -> %
       ++ \spad{reductum(x)} returns \spad{x} minus its leading term.

     if R has CommutativeRing then Module(R)