/usr/share/axiom-20170501/src/algebra/PLCS.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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | )abbrev domain PLCS Plcs
++ Author: Gaetan Hache
++ Date Created: 17 nov 1992
++ Date Last Updated: May 2010 by Tim Daly
++ Description:
++ The following is part of the PAFF package
Plcs(K,PCS) : SIG == CODE where
K : Field
PCS : LocalPowerSeriesCategory(K)
nameOfPlace ==> Union( List(K), Symbol )
rec ==> Record(theName:nameOfPlace,_
locPar: List PCS,_
deg: PositiveInteger,_
isALeaf:Boolean,_
inName:Symbol,_
actualSet:Symbol)
SIG ==> PlacesCategory(K,PCS)
CODE ==> add
Rep:= rec
setOfPlacesName:Symbol:=new(ActualSetOfPlacesName)$Symbol
a:% + b:% == (a:: Divisor(%)) +$Divisor(%) (b::Divisor(%))
a:% - b:% == (a:: Divisor(%)) -$Divisor(%) (b::Divisor(%))
n:Integer * b:% == n *$Divisor(%) (b :: Divisor(%))
reduce(lp)==
lpd:List Divisor(%):= [p :: Divisor(%) for p in lp]
reduce("+", lpd, 0$Divisor(%))
d:Divisor(%) + b:% == d + (b::Divisor(%))
a:% + d:Divisor(%) == (a::Divisor(%)) + d
d:Divisor(%) - b:% == d - (b::Divisor(%))
a:% - d:Divisor(%) == (a::Divisor(%)) - d
-a:% == - ( a::Divisor(%))
outName: nameOfPlace -> OutputForm
outName(pt)==
pt case Symbol => pt :: OutputForm
dd:OutputForm:= ":" :: OutputForm
llout:List(OutputForm):=[ hconcat(dd, a::OutputForm) for a in rest pt]
lout:= cons( (first pt)::OutputForm , llout)
out:= hconcat lout
bracket(out)
coerce(pt:%):OutputForm ==
nn:OutputForm:= outName(pt.theName)
ee:OutputForm:= degree(pt) :: OutputForm
nn ** ee
a:% = b:% ==
^(a.actualSet =$Symbol b.actualSet) =>
a:String:=
"From Places Domain: Cannot use old places with new places."
" You have declared two different package PAFF or PAFFFF with the "
"same arguments. This is not allowed because in that case the two "
"packages used the same domain to represent the set of places. "
"Two packages having the same arguments should be used in "
"different frame"
error a
a.inName =$Symbol b.inName
elt(pl,n)==
pt:= (pl :: Rep).theName
pt case Symbol => _
error "From Places domain : cannot return the coordinates of a leaf"
elt(pt,n)$List(K)
leaf?(pl)==pl.isALeaf
itsALeaf_!(pl)==
pl.isALeaf := true()
void()
listOfFoundPlaces:List %:=[]
foundPlaces()==listOfFoundPlaces
setFoundPlacesToEmpty()==
tmp:=copy listOfFoundPlaces
listOfFoundPlaces:=[]
setOfPlacesName:Symbol:=new(ActualSetOfPlacesName)$Symbol
tmp
findInExistOnes: % -> %
findInExistOnes(pt)==
ll:=listOfFoundPlaces
found:Boolean:=false()
fpl:%
while ^found and ^empty?(ll) repeat
fpl:= first ll
-- remember: the "=" test is on done on the symbolic name
found:= pt.theName = fpl.theName
ll:=rest ll
^found =>
listOfFoundPlaces:=cons(pt,listOfFoundPlaces)
pt
fpl
create(pt:List(K)):%==
newName:=new(SIMPLE)$Symbol
newPt:%:=[pt,[],1,false(),newName,setOfPlacesName]$rec
findInExistOnes(newPt)
create(pt:Symbol):%==
newPt:%:=[pt,[],1,false(),pt,setOfPlacesName]$rec
findInExistOnes(newPt)
setDegree_!(pt,d)==
pt.deg := d
void()
setParam_!(pt,ls)==
pt.locPar:=ls
void()
localParam(pt)==pt.locPar
degree(pl)==pl.deg
|