This file is indexed.

/usr/share/axiom-20170501/src/algebra/INTRF.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
)abbrev package INTRF RationalFunctionIntegration
++ Author: Manuel Bronstein
++ Date Created: 1987
++ Date Last Updated: 29 Mar 1990
++ Description:
++ This package provides functions for the integration of rational functions.

RationalFunctionIntegration(F) : SIG == CODE where
  F: Join(IntegralDomain, RetractableTo Integer, CharacteristicZero)

  SE  ==> Symbol
  P   ==> Polynomial F
  Q   ==> Fraction P
  UP  ==> SparseUnivariatePolynomial Q
  QF  ==> Fraction UP
  LGQ ==> List Record(coeff:Q, logand:Q)
  UQ  ==> Union(Record(ratpart:Q, coeff:Q), "failed")
  ULQ ==> Union(Record(mainpart:Q, limitedlogs:LGQ), "failed")

  SIG ==> with

    internalIntegrate : (Q, SE) -> IntegrationResult Q
      ++ internalIntegrate(f, x) returns g such that \spad{dg/dx = f}.

    infieldIntegrate : (Q, SE) -> Union(Q, "failed")
      ++ infieldIntegrate(f, x) returns a fraction
      ++ g such that \spad{dg/dx = f}
      ++ if g exists, "failed" otherwise.

    limitedIntegrate : (Q, SE, List Q) -> ULQ
      ++ \spad{limitedIntegrate(f, x, [g1,...,gn])} returns fractions
      ++ \spad{[h, [[ci,gi]]]} such that the gi's are among
      ++ \spad{[g1,...,gn]},
      ++ \spad{dci/dx = 0}, and  \spad{d(h + sum(ci log(gi)))/dx = f}
      ++ if possible, "failed" otherwise.

    extendedIntegrate : (Q, SE, Q) -> UQ
      ++ extendedIntegrate(f, x, g) returns fractions \spad{[h, c]} such that
      ++ \spad{dc/dx = 0} and \spad{dh/dx = f - cg}, if \spad{(h, c)} exist,
      ++ "failed" otherwise.

  CODE ==> add

    import RationalIntegration(Q, UP)
    import IntegrationResultFunctions2(QF, Q)
    import PolynomialCategoryQuotientFunctions(IndexedExponents SE,
                                                       SE, F, P, Q)

    infieldIntegrate(f, x) ==
      map(x1 +-> multivariate(x1, x), infieldint univariate(f, x))

    internalIntegrate(f, x) ==
      map(x1 +-> multivariate(x1, x), integrate univariate(f, x))

    extendedIntegrate(f, x, g) ==
      map(x1 +-> multivariate(x1, x),
          extendedint(univariate(f, x), univariate(g, x)))

    limitedIntegrate(f, x, lu) ==
      map(x1 +-> multivariate(x1, x),
          limitedint(univariate(f, x), [univariate(u, x) for u in lu]))