/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)
|