/usr/share/axiom-20170501/src/algebra/RESRING.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 | )abbrev domain RESRING ResidueRing
++ Author: P.Gianni
++ Date Created: December 1992
++ Description:
++ ResidueRing is the quotient of a polynomial ring by an ideal.
++ The ideal is given as a list of generators. The elements of the domain
++ are equivalence classes expressed in terms of reduced elements
ResidueRing(F,Expon,VarSet,FPol,LFPol) : SIG == CODE where
F : Field
Expon : OrderedAbelianMonoidSup
VarSet : OrderedSet
FPol : PolynomialCategory(F, Expon, VarSet)
LFPol : List FPol
SIG ==> Join(CommutativeRing, Algebra F) with
reduce : FPol -> $
++ reduce(f) produces the equivalence class of f in the residue ring
coerce : FPol -> $
++ coerce(f) produces the equivalence class of f in the residue ring
lift : $ -> FPol
++ lift(x) return the canonical representative of
++ the equivalence class x
CODE ==> add
--representation
Rep:= FPol
import GroebnerPackage(F,Expon,VarSet,FPol)
relations:= groebner(LFPol)
relations = [1] => error "the residue ring is the zero ring"
--declarations
x,y: $
--definitions
0 == 0$Rep
1 == 1$Rep
reduce(f : FPol) : $ == normalForm(f,relations)
coerce(f : FPol) : $ == normalForm(f,relations)
lift x == x :: Rep :: FPol
x + y == x +$Rep y
-x == -$Rep x
x*y == normalForm(lift(x *$Rep y),relations)
(n : Integer) * x == n *$Rep x
(a : F) * x == a *$Rep x
x = y == x =$Rep y
characteristic() == characteristic()$F
coerce(x) : OutputForm == coerce(x)$Rep
|