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