/usr/share/axiom-20170501/src/algebra/INTERGB.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 | )abbrev package INTERGB InterfaceGroebnerPackage
++ Author: Gaetan Hache
++ Date Created: September 1996
++ Date Last Updated: April, 2010, by Tim Daly
++ References:
++ Normxx Notes 13: How to Compute a Groebner Basis
++ Description:
++ Part of the Package for Algebraic Function Fields in one variable PAFF
InterfaceGroebnerPackage(K,symb,E,OV,R) : SIG == CODE where
K : Field
symb : List Symbol
E : OrderedAbelianMonoidSup
OV : OrderedSet
R : PolynomialCategory(K,E,OV)
SIG ==> with
groebner : List R -> List R
CODE ==> add
if ^(K has FiniteFieldCategory) then
GBPackR ==> GroebnerPackage(K,E,OV,R)
groebner(l)==groebner(l)$GBPackR
else
q:PositiveInteger:=(characteristic()$K pretend PositiveInteger)
PF ==> PrimeField(q)
DPF ==> DistributedMultivariatePolynomial(symb,PF)
D ==> DistributedMultivariatePolynomial(symb,K)
JCFGBPack ==> GroebnerPackage(PF,E,OV,DPF)
GBPack ==> GroebnerPackage(K,E,OV,D)
coerceKtoPF: K -> PF
coerceKtoPF(a:K):PF==
index(lookup(a)$K)$PF
coercePFtoK: PF -> K
coercePFtoK(a:PF):K==
index(lookup(a)$PF)$K
coerceRtoDwithPF: R -> DPF
coerceRtoDwithPF(pol) ==
map(coerceKtoPF(#1),pol)$MPolyCatFunctions2(OV,E,E,K,PF,R,DPF)
coerceDtoRwithPF: DPF->R
coerceDtoRwithPF(pol) ==
map(coercePFtoK(#1),pol)$MPolyCatFunctions2(OV,E,E,PF,K,DPF,R)
coerceRtoD: R -> D
coerceRtoD(pol) == map(#1,pol)$MPolyCatFunctions2(OV,E,E,K,K,R,D)
coerceDtoR: D->R
coerceDtoR(pol) == map(#1,pol)$MPolyCatFunctions2(OV,E,E,K,K,D,R)
gs:= size()$K
if gs = q and (representationType()$K case "prime") then
groebner(l)==
ldmp:List DPF:= [coerceRtoDwithPF(pol) for pol in l]
gg:=groebner(ldmp)$JCFGBPack
[coerceDtoRwithPF(pol) for pol in gg]
else
groebner(l)==
ldmp:List D:= [coerceRtoD(pol) for pol in l]
gg:=groebner(ldmp)$GBPack
[coerceDtoR(pol) for pol in gg]
|