This file is indexed.

/usr/share/axiom-20170501/src/algebra/GSERIES.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
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
)abbrev domain GSERIES GeneralUnivariatePowerSeries
++ Author: Clifton J. Williamson
++ Date Created: 22 September 1993
++ Date Last Updated: 23 September 1993
++ Description:
++ This is a category of univariate Puiseux series constructed
++ from univariate Laurent series.  A Puiseux series is represented
++ by a pair \spad{[r,f(x)]}, where r is a positive rational number and
++ \spad{f(x)} is a Laurent series.  This pair represents the Puiseux
++ series \spad{f(x\^r)}.

GeneralUnivariatePowerSeries(Coef,var,cen) : SIG == CODE where
  Coef : Ring
  var : Symbol
  cen : Coef

  I      ==> Integer
  UTS    ==> UnivariateTaylorSeries
  ULS    ==> UnivariateLaurentSeries
  UPXS   ==> UnivariatePuiseuxSeries
  EFULS  ==> ElementaryFunctionsUnivariateLaurentSeries
  EFUPXS ==> ElementaryFunctionsUnivariatePuiseuxSeries
  FS2UPS ==> FunctionSpaceToUnivariatePowerSeries

  SIG ==> UnivariatePuiseuxSeriesCategory Coef with

    coerce : Variable(var) -> %
      ++ coerce(var) converts the series variable \spad{var} into a
      ++ Puiseux series.

    coerce : UPXS(Coef,var,cen) -> %
      ++ coerce(f) converts a Puiseux series to a general power series.

    differentiate : (%,Variable(var)) -> %
      ++ \spad{differentiate(f(x),x)} returns the derivative of
      ++ \spad{f(x)} with respect to \spad{x}.

    if Coef has Algebra Fraction Integer then

      integrate : (%,Variable(var)) -> %
        ++ \spad{integrate(f(x))} returns an anti-derivative of the power
        ++ series \spad{f(x)} with constant coefficient 0.
        ++ We may integrate a series when we can divide coefficients
        ++ by integers.

  CODE ==> UnivariatePuiseuxSeries(Coef,var,cen) add

    coerce(upxs:UPXS(Coef,var,cen)) == upxs pretend %

    puiseux: % -> UPXS(Coef,var,cen)
    puiseux f == f pretend UPXS(Coef,var,cen)

    if Coef has Algebra Fraction Integer then

      differentiate f ==
        str1 : String := "'differentiate' unavailable on this domain;  "
        str2 : String := "use 'approximate' first"
        error concat(str1,str2)

      differentiate(f:%,v:Variable(var)) == differentiate f

      if Coef has PartialDifferentialRing(Symbol) then
        differentiate(f:%,s:Symbol) ==
          (s = variable(f)) =>
            str1 : String := "'differentiate' unavailable on this domain;  "
            str2 : String := "use 'approximate' first"
            error concat(str1,str2)
          dcds := differentiate(center f,s)
          deriv := differentiate(puiseux f) :: %
          map(x+->differentiate(x,s),f) - dcds * deriv

      integrate f ==
        str1 : String := "'integrate' unavailable on this domain;  "
        str2 : String := "use 'approximate' first"
        error concat(str1,str2)

      integrate(f:%,v:Variable(var)) == integrate f

      if Coef has integrate: (Coef,Symbol) -> Coef and _
         Coef has variables: Coef -> List Symbol then

        integrate(f:%,s:Symbol) ==
          (s = variable(f)) =>
            str1 : String := "'integrate' unavailable on this domain;  "
            str2 : String := "use 'approximate' first"
            error concat(str1,str2)
          not entry?(s,variables center f) => map(x+->integrate(x,s),f)
          error "integrate: center is a function of variable of integration"

      if Coef has TranscendentalFunctionCategory and _
         Coef has PrimitiveFunctionCategory and _
         Coef has AlgebraicallyClosedFunctionSpace Integer then

        integrateWithOneAnswer: (Coef,Symbol) -> Coef
        integrateWithOneAnswer(f,s) ==
          res := integrate(f,s)$FunctionSpaceIntegration(Integer,Coef)
          res case Coef => res :: Coef
          first(res :: List Coef)

        integrate(f:%,s:Symbol) ==
          (s = variable(f)) =>
            str1 : String := "'integrate' unavailable on this domain;  "
            str2 : String := "use 'approximate' first"
            error concat(str1,str2)
          not entry?(s,variables center f) =>
            map(x+->integrateWithOneAnswer(x,s),f)
          error "integrate: center is a function of variable of integration"