This file is indexed.

/usr/share/axiom-20170501/src/algebra/PSCAT.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
)abbrev category PSCAT PowerSeriesCategory
++ Author: Clifton J. Williamson
++ Date Created: 21 December 1989
++ Date Last Updated: 25 February 1990
++ Description:
++ \spadtype{PowerSeriesCategory} is the most general power series
++ category with exponents in an ordered abelian monoid.

PowerSeriesCategory(Coef,Expon,Var) : Category == SIG where
  Coef : Ring
  Expon : OrderedAbelianMonoid
  Var : OrderedSet

  I   ==> Integer
  RN  ==> Fraction Integer

  SIG ==> AbelianMonoidRing(Coef,Expon) with

    monomial : (%,Var,Expon) -> %
      ++ \spad{monomial(a,x,n)} computes \spad{a*x**n}.

    monomial : (%,List Var,List Expon) -> %
      ++ \spad{monomial(a,[x1,..,xk],[n1,..,nk])} computes
      ++ \spad{a * x1**n1 * .. * xk**nk}.

    leadingMonomial : % -> %
      ++ leadingMonomial(f) returns the monomial of \spad{f} of lowest order.

    leadingCoefficient : % -> Coef
      ++ leadingCoefficient(f) returns the coefficient of the lowest order
      ++ term of \spad{f}

    degree : % -> Expon
      ++ degree(f) returns the exponent of the lowest order term of \spad{f}.

    variables : % -> List Var
      ++ \spad{variables(f)} returns a list of the variables occuring in the
      ++ power series f.

    pole? : % -> Boolean
      ++ \spad{pole?(f)} determines if the power series f has a pole.

    complete : % -> %
      ++ \spad{complete(f)} causes all terms of f to be computed.
      ++ Note that this results in an infinite loop
      ++ if f has infinitely many terms.

   add

     n:I * ps:% == (zero? n => 0; map((r1:Coef):Coef +-> n * r1,ps))

     r:Coef * ps:% == (zero? r => 0; map((r1:Coef):Coef +-> r * r1,ps))

     ps:% * r:Coef == (zero? r => 0; map((r1:Coef):Coef +-> r1 * r,ps))

     - ps == map((r1:Coef):Coef +-> -r1,ps)

     if Coef has Algebra Fraction Integer then

       r:RN * ps:% == (zero? r => 0; map((r1:Coef):Coef +-> r * r1,ps))

       ps:% * r:RN == (zero? r => 0; map((r1:Coef):Coef +-> r1 * r,ps))

     if Coef has Field then

       ps:% / r:Coef == map((r1:Coef):Coef +-> r1 / r,ps)