/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)
|