/usr/share/axiom-20170501/src/algebra/LISYSER.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 | )abbrev package LISYSER LinearSystemFromPowerSeriesPackage
++ Authors: Gaetan Hache
++ Date Created: 1996
++ Date Last Updated: May 2010 by Tim Daly
++ Description:
++ Part of the PAFF package
LinearSystemFromPowerSeriesPackage(K,PCS) : SIG == CODE where
K : Field
PCS : LocalPowerSeriesCategory(K)
INT ==> Integer
TERM ==> Record(k:INT,c:K)
SER ==> Stream(TERM)
LOpPack ==> LinesOpPack(K)
SIG ==> with
finiteSeries2LinSysWOVectorise : (List PCS, INT) -> Matrix K
finiteSeries2LinSys : (List PCS, INT) -> Matrix K
++ finiteSeries2LinSys(ls,n) returns a matrix which right kernel
++ is the solution of the linear combinations of the series in ls
++ which has order greater or equal to n.
++ NOTE: All the series in ls must be finite and must have order
++ at least 0: so one must first call on each of them the
++ function filterUpTo(s,n) and apply an appropriate shift
++ (mult by a power of t).
finiteSeries2Vector : (PCS, INT) -> List K
CODE ==> add
finiteSeries2ListOfTerms: PCS -> List TERM
finiteSeries2ListOfTermsStream: SER -> List TERM
finiteSeries2ListOfTermsStream(s)==
empty?(s) => empty()
cons(frst s , finiteSeries2ListOfTermsStream(rst(s)))
finiteSeries2LinSys(ls,n)==
ll:List K:= [0$K]
lZero:=new(#ls pretend NonNegativeInteger,ll)$List(List(K))
n <= 0 => transpose matrix lZero
tMat:=transpose matrix [finiteSeries2Vector(s,n) for s in ls]
rowEchWoZeroLines(tMat)$LOpPack
finiteSeries2LinSysWOVectorise(ls,n)==
ll:List K:= [0$K]
lZero:=new(#ls pretend NonNegativeInteger,ll)$List(List(K))
n <= 0 => transpose matrix lZero
tMat:=transpose matrix [finiteSeries2Vector(s,n) for s in ls]
rowEchWoZeroLinesWOVectorise(tMat)$LOpPack
finiteSeries2ListOfTerms(s)==
ss:SER:= s :: SER
finiteSeries2ListOfTermsStream(ss)
finiteSeries2Vector(ins,n)==
lZero:=new((n pretend NonNegativeInteger),0)$List(K)
s:= removeFirstZeroes ins
lOfTerm:=finiteSeries2ListOfTerms(s)
for t in lOfTerm repeat lZero.((t.k)+1):= t.c
lZero
|