| version 1.3, 2003/04/20 07:50:45 |
version 1.8, 2003/04/21 02:02:16 |
|
|
| |
/* $OpenXM: OpenXM_contrib2/asir2000/lib/primdec_mod,v 1.7 2003/04/21 02:00:13 noro Exp $ */ |
| |
|
| extern Hom,GBTime$ |
extern Hom,GBTime$ |
| extern DIVLIST,INTIDEAL,ORIGINAL,ORIGINALDIMENSION,STOP,Trials,REM$ |
extern DIVLIST,INTIDEAL,ORIGINAL,ORIGINALDIMENSION,STOP,Trials,REM$ |
| extern T_GRF,T_INT,T_PD,T_MP$ |
extern T_GRF,T_INT,T_PD,T_MP$ |
| extern BuchbergerMinipoly,PartialDecompByLex,ParallelMinipoly$ |
extern BuchbergerMinipoly,PartialDecompByLex,ParallelMinipoly$ |
| extern B_Win,D_Win$ |
extern B_Win,D_Win$ |
| extern COMMONCHECK_SF,CID_SF$ |
extern COMMONCHECK_SF,CID_SF$ |
| extern FFF_LOADED_BY_PRIMDEC_MOD$ |
extern LIBRARY_GR_LOADED$ |
| extern GR_LOADED_BY_PRIMDEC_MOD$ |
extern LIBRARY_FFF_LOADED$ |
| |
|
| if(!FFF_LOADED_BY_PRIMDEC_MOD) load("fff"); else ; FFF_LOADED_BY_PRIMDEC_MOD = 1$ |
if(!LIBRARY_FFF_LOADED) load("fff"); else ; LIBRARY_FFF_LOADED = 1$ |
| if(!GR_LOADED_BY_PRIMDEC_MOD) load("gr"); else ; GR_LOADED_BY_PRIMDEC_MOD = 1$ |
if(!LIBRARY_GR_LOADED) load("gr"); else ; LIBRARY_GR_LOADED = 1$ |
| |
|
| /*==============================================*/ |
/*==============================================*/ |
| /* prime decomposition of ideals over */ |
/* prime decomposition of ideals over */ |
| Line 134 def frobeniuskernel_main(P,VSet,WSet) |
|
| Line 136 def frobeniuskernel_main(P,VSet,WSet) |
|
| XSet=append(VSet,WSet); |
XSet=append(VSet,WSet); |
| NewOrder=[[0,length(VSet)],[0,length(WSet)]]; |
NewOrder=[[0,length(VSet)],[0,length(WSet)]]; |
| |
|
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| |
|
| for (I=0;I<NV;I++) |
for (I=0;I<NV;I++) |
| { |
{ |
| Line 168 def frobeniuskernel_main2(P,VSet,WSet) |
|
| Line 170 def frobeniuskernel_main2(P,VSet,WSet) |
|
| XSet=append(VSet,WSet); |
XSet=append(VSet,WSet); |
| NewOrder=[[0,NV],[0,NV]]; |
NewOrder=[[0,NV],[0,NV]]; |
| |
|
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| |
|
| for (I=0;I<NV;I++) |
for (I=0;I<NV;I++) |
| { |
{ |
| Line 216 def frobeniuskernel_main4(P,VSet,WSet) |
|
| Line 218 def frobeniuskernel_main4(P,VSet,WSet) |
|
| XSet=append(VSet,WSet); |
XSet=append(VSet,WSet); |
| NewOrder=[[0,NV],[0,NV]]; |
NewOrder=[[0,NV],[0,NV]]; |
| |
|
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| |
|
| for (I=0;I<NV;I++) |
for (I=0;I<NV;I++) |
| { |
{ |
| Line 279 def frobeniuskernel_main3(P,VSet,WSet) |
|
| Line 281 def frobeniuskernel_main3(P,VSet,WSet) |
|
| |
|
| NewP=coefficientfrobeniuskernel(P); |
NewP=coefficientfrobeniuskernel(P); |
| |
|
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| |
|
| for (I=0;I<NV;I++) |
for (I=0;I<NV;I++) |
| { |
{ |
| Line 342 def coefficientfrobeniuskernel_main(Poly) |
|
| Line 344 def coefficientfrobeniuskernel_main(Poly) |
|
| Vars=vars(Poly); |
Vars=vars(Poly); |
| QP=dp_ptod(Poly,Vars); |
QP=dp_ptod(Poly,Vars); |
| ANS=0; |
ANS=0; |
| FOrd=deg(setmod_ff()[1],x); |
FOrd=extdeg_ff(); |
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| Pow=Char^(FOrd-1); |
Pow=Char^(FOrd-1); |
| |
|
| while(QP !=0 ) |
while(QP !=0 ) |
| Line 1636 def separableclosure(CP,TargetVSet,VSet) |
|
| Line 1638 def separableclosure(CP,TargetVSet,VSet) |
|
| print("This is not a separable ideal, so we make its separable closure.", 2); |
print("This is not a separable ideal, so we make its separable closure.", 2); |
| } |
} |
| WSet=makecounterpart(TargetVSet); |
WSet=makecounterpart(TargetVSet); |
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| |
|
| NewP=CP[0]; |
NewP=CP[0]; |
| EXPVECTOR=newvect(NVSet); |
EXPVECTOR=newvect(NVSet); |
| Line 1692 def convertdivisor(P,TargetVSet,VSet,ExVector) |
|
| Line 1694 def convertdivisor(P,TargetVSet,VSet,ExVector) |
|
| |
|
| NVSet=length(TargetVSet); |
NVSet=length(TargetVSet); |
| WSet=makecounterpart(TargetVSet); |
WSet=makecounterpart(TargetVSet); |
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| Ord=0; |
Ord=0; |
| |
|
| NewP=P; |
NewP=P; |
| Line 2034 def checkseparablepoly(P,V) |
|
| Line 2036 def checkseparablepoly(P,V) |
|
| |
|
| def pdivide(F,V) |
def pdivide(F,V) |
| { |
{ |
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| TestP=P; |
TestP=P; |
| |
|
| Deg=ideg(TestP,V); |
Deg=ideg(TestP,V); |
| Line 2082 def convertsmallfield(PP,VSet,Ord) |
|
| Line 2084 def convertsmallfield(PP,VSet,Ord) |
|
| { |
{ |
| dp_ord(Ord); |
dp_ord(Ord); |
| NVSet=length(VSet); |
NVSet=length(VSet); |
| Char=setmod_ff()[0]; |
Char=characteristic_ff(); |
| ExtDeg=deg(setmod_ff()[1],x); |
ExtDeg=extdeg_ff(); |
| |
|
| NewV=pg; |
NewV=pgpgpgpgpgpgpg; |
| MPP=map(monic_hc,PP,VSet); |
MPP=map(monic_hc,PP,VSet); |
| MPP=map(sfptopsfp,MPP,NewV); |
MPP=map(sfptopsfp,MPP,NewV); |
| |
|
| MinPoly=subst(setmod_ff()[1],x,NewV); |
DefPoly=setmod_ff()[1]; |
| |
MinPoly=subst(DefPoly,var(DefPoly),NewV); |
| XSet=cons(NewV,VSet); |
XSet=cons(NewV,VSet); |
| |
|
| Ord1=[[0,1],[Ord,NVSet]]; |
Ord1=[[0,1],[Ord,NVSet]]; |
| Line 2109 def checkgaloisorbit(PP,VSet,Ord,Flag) |
|
| Line 2112 def checkgaloisorbit(PP,VSet,Ord,Flag) |
|
| { |
{ |
| NPP=length(PP); |
NPP=length(PP); |
| TmpPP=PP; |
TmpPP=PP; |
| ExtDeg=deg(setmod_ff()[1],x); |
ExtDeg=extdeg_ff(); |
| |
|
| ANS=[]; |
ANS=[]; |
| BNS=[]; |
BNS=[]; |