This file is indexed.

/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