This file is indexed.

/usr/share/axiom-20170501/src/algebra/BSD.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
)abbrev domain BSD BasicStochasticDifferential
++ Author: Wilfrid S. Kendall
++ Date Last Updated: July 26, 1999
++ Related Domains: StochasticDifferential(R)
++ References: Ito (1975), Kendall (1991a,b; 1993a,b; 1999a,b).
++ Description:
++ Based on Symbol: a domain of symbols representing basic stochastic 
++ differentials, used in StochasticDifferential(R) in the underlying
++ sparse multivariate polynomial representation.
++
++ We create new BSD only by coercion from Symbol using a special 
++ function introduce! first of all to add to a private set SDset. 
++ We allow a separate function convertIfCan which will check whether the
++ argument has previously been declared as a BSD.

BasicStochasticDifferential() : SIG == CODE where

  INT ==> Integer
  OF  ==> OutputForm

  SIG ==> OrderedSet with

    ConvertibleTo(Symbol)

    convertIfCan : Symbol -> Union(%, "failed")
      ++ convertIfCan(ds) transforms \axiom{dX} into a \axiom{BSD}
      ++ if possible (if \axiom{introduce(X,dX)} has
      ++ been invoked previously).

    convert : Symbol -> %
      ++ convert(dX) transforms \axiom{dX} into a \axiom{BSD}
      ++ if possible and otherwise produces an error.

    introduce! : (Symbol,Symbol) -> Union(%, "failed")
      ++ introduce!(X,dX) returns \axiom{dX} as \axiom{BSD} if it
      ++ isn't already in \axiom{BSD}
      ++
      ++X introduce!(t,dt) -- dt is a new stochastic differential
      ++X copyBSD()

    d : Symbol -> Union(%,INT)
      ++ d(X) returns \axiom{dX} if \axiom{tableIto(X)=dX}
      ++ and otherwise returns \axiom{0}

    copyBSD : () -> List %
      ++ copyBSD() returns \axiom{setBSD} as a list of \axiom{BSD}.
      ++
      ++X introduce!(t,dt) -- dt is a new stochastic differential
      ++X copyBSD()

    copyIto : () -> Table(Symbol,%)
      ++ copyIto() returns the table relating semimartingales
      ++ to basic stochastic differentials.
      ++
      ++X introduce!(t,dt) -- dt is a new stochastic differential
      ++X copyIto()

    getSmgl : % -> Union(Symbol,"failed")
      ++ getSmgl(bsd) returns the semimartingale \axiom{S} related
      ++ to the basic stochastic differential \axiom{bsd} by
      ++ \axiom{introduce!}
      ++
      ++X introduce!(t,dt) -- dt is a new stochastic differential
      ++X getSmgl(dt::BSD)

  CODE ==> Symbol add 

    Rep := Symbol

    setBSD := empty()$Set(Symbol)
    tableIto:Table(Symbol,%) := table()
    tableBSD:Table(%,Symbol) := table()

    convertIfCan(ds:Symbol):Union(%,"failed") ==
     not(member?(ds,setBSD)) => "failed"
     ds::%

    convert(ds:Symbol):% ==
     (du:=convertIfCan(ds)) 
      case "failed" =>
       print(hconcat(ds::Symbol::OF,
         message(" is not a stochastic differential")$OF))
       error "above causes failure in convert$BSD"
     du

    introduce!(X,dX) == 
     member?(dX,setBSD) => "failed"
     insert!(dX,setBSD)
     tableBSD(dX::%) := X
     tableIto(X) := dX::%

    d(X) ==
     search(X,tableIto) case "failed" => 0::INT
     tableIto(X)

    copyBSD() == [ds::% for ds in members(setBSD)]

    copyIto() == tableIto

    getSmgl(ds:%):Union(Symbol,"failed") == tableBSD(ds)