/usr/share/axiom-20170501/src/algebra/INTAF.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 71 72 73 74 | )abbrev package INTAF AlgebraicIntegration
++ Author: Manuel Bronstein
++ Date Created: 12 October 1988
++ Date Last Updated: 4 June 1988
++ Description:
++ This package provides functions for the integration of
++ algebraic integrands over transcendental functions;
AlgebraicIntegration(R, F) : SIG == CODE where
R : Join(OrderedSet, IntegralDomain)
F : Join(AlgebraicallyClosedField, FunctionSpace R)
SY ==> Symbol
N ==> NonNegativeInteger
K ==> Kernel F
P ==> SparseMultivariatePolynomial(R, K)
UP ==> SparseUnivariatePolynomial F
RF ==> Fraction UP
UPUP==> SparseUnivariatePolynomial RF
IR ==> IntegrationResult F
IR2 ==> IntegrationResultFunctions2(curve, F)
ALG ==> AlgebraicIntegrate(R, F, UP, UPUP, curve)
FAIL==> error "failed - cannot handle that integrand"
SIG ==> with
algint : (F, K, K, UP -> UP) -> IR
++ algint(f, x, y, d) returns the integral of \spad{f(x,y)dx}
++ where y is an algebraic function of x;
++ d is the derivation to use on \spad{k[x]}.
CODE ==> add
import ChangeOfVariable(F, UP, UPUP)
import PolynomialCategoryQuotientFunctions(IndexedExponents K,
K, R, P, F)
rootintegrate: (F, K, K, UP -> UP) -> IR
algintegrate : (F, K, K, UP -> UP) -> IR
UPUP2F : (UPUP, RF, K, K) -> F
F2UPUP : (F, K, K, UP) -> UPUP
UP2UPUP : (UP, K) -> UPUP
F2UPUP(f, kx, k, p) == UP2UPUP(univariate(f, k, p), kx)
rootintegrate(f, t, k, derivation) ==
r1 := mkIntegral(modulus := UP2UPUP(p := minPoly k, t))
f1 := F2UPUP(f, t, k, p) monomial(inv(r1.coef), 1)
r := radPoly(r1.poly)::Record(radicand:RF, deg:N)
q := retract(r.radicand)
curve := RadicalFunctionField(F, UP, UPUP, q::RF, r.deg)
map(x1+->UPUP2F(lift x1, r1.coef, t, k),
algintegrate(reduce f1, derivation)$ALG)$IR2
algintegrate(f, t, k, derivation) ==
r1 := mkIntegral(modulus := UP2UPUP(p := minPoly k, t))
f1 := F2UPUP(f, t, k, p) monomial(inv(r1.coef), 1)
modulus:= UP2UPUP(p := minPoly k, t)
curve := AlgebraicFunctionField(F, UP, UPUP, r1.poly)
map(x1+->UPUP2F(lift x1, r1.coef, t, k),
algintegrate(reduce f1, derivation)$ALG)$IR2
UP2UPUP(p, k) ==
map(x1+->univariate(x1,k),p)$SparseUnivariatePolynomialFunctions2(F,RF)
UPUP2F(p, cf, t, k) ==
map((x1:RF):F+->multivariate(x1, t),
p)$SparseUnivariatePolynomialFunctions2(RF, F)
(multivariate(cf, t) * k::F)
algint(f, t, y, derivation) ==
is?(y, "nthRoot"::SY) => rootintegrate(f, t, y, derivation)
is?(y, "rootOf"::SY) => algintegrate(f, t, y, derivation)
FAIL
|