This file is indexed.

/usr/share/axiom-20170501/src/algebra/LODOCAT.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 category LODOCAT LinearOrdinaryDifferentialOperatorCategory
++ Author: Manuel Bronstein
++ Date Created: 9 December 1993
++ Date Last Updated: 15 April 1994
++ References:
++ Bron95 On radical solutions of linear ordinary differential equations
++ Abra01 On Solutions of Linear Functional Systems
++ Muld95 Primitives: Orepoly and Lodo
++ Description:
++ LinearOrdinaryDifferentialOperatorCategory is the category
++ of differential operators with coefficients in a ring A with a given
++ derivation.
++
++ Multiplication of operators corresponds to functional composition:\br
++ (L1 * L2).(f) = L1 L2 f

LinearOrdinaryDifferentialOperatorCategory(A) : Category == SIG where
  A : Ring

  SIG ==> Join(UnivariateSkewPolynomialCategory A, Eltable(A, A)) with

    D : () -> %
      ++ D() provides the operator corresponding to a derivation
      ++ in the ring \spad{A}.

    adjoint : % -> %
      ++ adjoint(a) returns the adjoint operator of a.

    if A has Field then

      symmetricProduct : (%, %) -> %
        ++ symmetricProduct(a,b) computes an operator \spad{c} of
        ++ minimal order such that the nullspace of \spad{c} is
        ++ generated by all the products of a solution of \spad{a} by
        ++ a solution of \spad{b}.

      symmetricPower : (%, NonNegativeInteger) -> %
        ++ symmetricPower(a,n) computes an operator \spad{c} of
        ++ minimal order such that the nullspace of \spad{c} is
        ++ generated by all the products of \spad{n} solutions
        ++ of \spad{a}.

      symmetricSquare : % -> %
        ++ symmetricSquare(a) computes \spad{symmetricProduct(a,a)}
        ++ using a more efficient method.

      directSum : (%, %) -> %
        ++ directSum(a,b) computes an operator \spad{c} of
        ++ minimal order such that the nullspace of \spad{c} is
        ++ generated by all the sums of a solution of \spad{a} by
        ++ a solution of \spad{b}.

   add

      m1monom: NonNegativeInteger -> %

      D() == monomial(1, 1)

      m1monom n ==
        a:A := (odd? n => -1; 1)
        monomial(a, n)

      adjoint a ==
        ans:% := 0
        while a ^= 0 repeat
          ans := ans + m1monom(degree a) * leadingCoefficient(a)::%
          a   := reductum a
        ans

      if A has Field then symmetricSquare l == symmetricPower(l, 2)