/usr/share/axiom-20170501/src/algebra/EXPRSOL.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 | )abbrev package EXPRSOL ExpressionSolve
++ Description:
++ This package has no description
ExpressionSolve(R, F, UTSF, UTSSUPF) : SIG == CODE where
R : Join(OrderedSet, IntegralDomain, ConvertibleTo InputForm)
F : FunctionSpace R
UTSF : UnivariateTaylorSeriesCategory F
SUP ==> SparseUnivariatePolynomialExpressions
UTSSUPF : UnivariateTaylorSeriesCategory SUP F
OP ==> BasicOperator
SY ==> Symbol
NNI ==> NonNegativeInteger
MKF ==> MakeBinaryCompiledFunction(F, UTSSUPF, UTSSUPF, UTSSUPF)
SIG ==> with
seriesSolve : (F, OP, SY, List F) -> UTSF
replaceDiffs : (F, OP, Symbol) -> F
CODE ==> add
opelt := operator("elt"::Symbol)$OP
opdiff := operator("D"::Symbol)$OP
opcoerce := operator("coerce"::Symbol)$OP
replaceDiffs (expr, op, sy) ==
lk := kernels expr
for k in lk repeat
if is?(k, op) then
arg := first argument k
if arg = sy::F
then expr := subst(expr, [k], [(name op)::F])
else expr := subst(expr, [k], [opelt [(name op)::F,
replaceDiffs(arg, op,
sy)]])
if is?(k, %diff) then
args := argument k
differentiand :=
replaceDiffs(subst(args.1, args.2 = args.3), op, sy)
expr := subst(expr, [k], [opdiff differentiand])
expr
seriesSolve(expr, op, sy, l) ==
ex := replaceDiffs(expr, op, sy)
f := compiledFunction(ex, name op, sy)$MKF
seriesSolve(x+->f(x, monomial(1,1)$UTSSUPF), l)_
$TaylorSolve(F, UTSF, UTSSUPF)
|