version 1.9, 2014/09/05 11:55:19 |
version 1.12, 2016/11/15 01:56:22 |
|
|
/* $OpenXM: OpenXM/src/asir-contrib/testing/noro/new_pd.rr,v 1.8 2011/11/01 00:35:56 noro Exp $ */ |
/* $OpenXM: OpenXM/src/asir-contrib/testing/noro/new_pd.rr,v 1.11 2016/11/13 02:09:36 noro Exp $ */ |
import("gr")$ |
import("gr")$ |
module noro_pd$ |
module noro_pd$ |
static GBCheck,F4,EProcs,Procs,SatHomo,GBRat,SuccSat,RepColon$ |
static GBCheck,F4,EProcs,Procs,SatHomo,GBRat,SuccSat,RepColon$ |
Line 40 localf rsgn, find_npos, gen_minipoly, indepset$ |
|
Line 40 localf rsgn, find_npos, gen_minipoly, indepset$ |
|
localf maxindep, maxindep2, contraction, contraction_m, ideal_list_intersection, ideal_intersection$ |
localf maxindep, maxindep2, contraction, contraction_m, ideal_list_intersection, ideal_intersection$ |
localf radical_membership, modular_radical_membership$ |
localf radical_membership, modular_radical_membership$ |
localf radical_membership_rep, ideal_product, saturation$ |
localf radical_membership_rep, ideal_product, saturation$ |
localf sat, satind, sat_ind, colon, isat$ |
localf sat, satind, sat_ind, sat_ind_var, colon, isat$ |
localf ideal_colon, ideal_sat, ideal_inclusion, qd_simp_comp, qd_remove_redundant_comp$ |
localf ideal_colon, ideal_sat, ideal_inclusion, qd_simp_comp, qd_remove_redundant_comp$ |
localf pd_simp_comp, remove_identical_comp$ |
localf pd_simp_comp, remove_identical_comp$ |
localf pd_remove_redundant_comp, ppart, sq, gen_fctr, gen_nf, gen_gb_comp$ |
localf pd_remove_redundant_comp, ppart, sq, gen_fctr, gen_nf, gen_gb_comp$ |
Line 211 def extract_qd(QD,V,Ind) |
|
Line 211 def extract_qd(QD,V,Ind) |
|
def syc_dec(B,V) |
def syc_dec(B,V) |
{ |
{ |
if ( type(SI=getopt(si)) == -1 ) SI = 2; |
if ( type(SI=getopt(si)) == -1 ) SI = 2; |
SIFList=[find_ssi0, find_ssi1,find_ssi2]; |
SIFList=[noro_pd.find_ssi0, noro_pd.find_ssi1, noro_pd.find_ssi2]; |
if ( SI<0 || SI>2 ) error("sycb_dec : si should be 0,1,2"); |
if ( SI<0 || SI>2 ) error("sycb_dec : si should be 0,1,2"); |
SIF = SIFList[SI]; |
SIF = SIFList[SI]; |
|
|
Line 512 def call_prime_dec(G,V,Indep,Lexdec,Mod) |
|
Line 512 def call_prime_dec(G,V,Indep,Lexdec,Mod) |
|
|
|
def extract_qj(Q,V,QL,Rad,Mod,SI,Colon,Level) |
def extract_qj(Q,V,QL,Rad,Mod,SI,Colon,Level) |
{ |
{ |
SIFList=[find_ssi0, find_ssi1,find_ssi2]; |
SIFList=[noro_pd.find_ssi0, noro_pd.find_ssi1, noro_pd.find_ssi2]; |
SIF = SIFList[SI]; |
SIF = SIFList[SI]; |
G = QL[0]; P = QL[1]; PV = QL[2]; |
G = QL[0]; P = QL[1]; PV = QL[2]; |
if ( Q != [1] ) { |
if ( Q != [1] ) { |
Line 531 def syca_dec(B,V) |
|
Line 531 def syca_dec(B,V) |
|
{ |
{ |
T00 = time(); |
T00 = time(); |
if ( type(SI=getopt(si)) == -1 ) SI = 2; |
if ( type(SI=getopt(si)) == -1 ) SI = 2; |
SIFList=[find_si0, find_si1,find_si2]; SIF = SIFList[SI]; |
SIFList=[noro_pd.find_si0, noro_pd.find_si1, noro_pd.find_si2]; |
|
SIF = SIFList[SI]; |
if ( !SIF ) error("syca_dec : si should be 0,1,2"); |
if ( !SIF ) error("syca_dec : si should be 0,1,2"); |
|
|
if ( type(Mod=getopt(mod)) == -1 ) Mod = 0; |
if ( type(Mod=getopt(mod)) == -1 ) Mod = 0; |
Line 617 def syc0_dec(B,V) |
|
Line 618 def syc0_dec(B,V) |
|
{ |
{ |
T00 = time(); |
T00 = time(); |
if ( type(SI=getopt(si)) == -1 ) SI = 1; |
if ( type(SI=getopt(si)) == -1 ) SI = 1; |
SIFList=[find_si0, find_si1,find_si2,find_ssi0,find_ssi1,find_ssi2]; SIF = SIFList[SI]; |
SIFList=[noro_pd.find_si0, noro_pd.find_si1, noro_pd.find_si2, noro_pd.find_ssi0, noro_pd.find_ssi1, noro_pd.find_ssi2]; |
|
SIF = SIFList[SI]; |
if ( !SIF ) error("syc0_dec : si should be 0,1,2"); |
if ( !SIF ) error("syc0_dec : si should be 0,1,2"); |
if ( type(Mod=getopt(mod)) == -1 ) Mod = 0; |
if ( type(Mod=getopt(mod)) == -1 ) Mod = 0; |
if ( type(Lexdec=getopt(lexdec)) == -1 ) Lexdec = 0; |
if ( type(Lexdec=getopt(lexdec)) == -1 ) Lexdec = 0; |
Line 1047 def pseudo_dec(G,L,V,Ord) |
|
Line 1049 def pseudo_dec(G,L,V,Ord) |
|
for ( T = PI; T != []; T = cdr(T) ) |
for ( T = PI; T != []; T = cdr(T) ) |
if ( gen_nf(car(T),L0[I],V,Ord,Mod) ) break; |
if ( gen_nf(car(T),L0[I],V,Ord,Mod) ) break; |
if ( T == [] ) error("separator : cannot happen"); |
if ( T == [] ) error("separator : cannot happen"); |
SI = satind(G,car(T),V|mod=Mod); |
SI = sat_ind(G,car(T),V|mod=Mod); |
QI = SI[0]; |
QI = SI[0]; |
S[I] = car(T)^SI[1]; |
S[I] = car(T)^SI[1]; |
PV = L[I][1]; |
PV = L[I][1]; |
Line 1061 def pseudo_dec(G,L,V,Ord) |
|
Line 1063 def pseudo_dec(G,L,V,Ord) |
|
#endif |
#endif |
LCFI = lcfactor(GI,V0,Ord,Mod); |
LCFI = lcfactor(GI,V0,Ord,Mod); |
for ( F = 1, T = LCFI, Gt = QI; T != []; T = cdr(T) ) { |
for ( F = 1, T = LCFI, Gt = QI; T != []; T = cdr(T) ) { |
St = satind(Gt,T[0],V|mod=Mod); |
St = sat_ind(Gt,T[0],V|mod=Mod); |
Gt = St[0]; F *= T[0]^St[1]; |
Gt = St[0]; F *= T[0]^St[1]; |
} |
} |
Q[I] = [Gt,L0[I]]; |
Q[I] = [Gt,L0[I]]; |
Line 1154 def prima_dec(B,V) |
|
Line 1156 def prima_dec(B,V) |
|
L = zprimacomp(G,V0|mod=Mod); |
L = zprimacomp(G,V0|mod=Mod); |
F = 1; |
F = 1; |
for ( T = LCF, G2 = G; T != []; T = cdr(T) ) { |
for ( T = LCF, G2 = G; T != []; T = cdr(T) ) { |
S = satind(G2,T[0],V1|mod=Mod); |
S = sat_ind(G2,T[0],V1|mod=Mod); |
G2 = S[0]; F *= T[0]^S[1]; |
G2 = S[0]; F *= T[0]^S[1]; |
} |
} |
for ( T = L, QL = []; T != []; T = cdr(T) ) |
for ( T = L, QL = []; T != []; T = cdr(T) ) |
Line 2232 def isat(B,S,V) |
|
Line 2234 def isat(B,S,V) |
|
return R; |
return R; |
} |
} |
|
|
|
/* buggy; do not use */ |
def satind(G,F,V) |
def satind(G,F,V) |
{ |
{ |
if ( type(Block=getopt(gbblock)) == -1 ) Block = 0; |
if ( type(Block=getopt(gbblock)) == -1 ) Block = 0; |
Line 2267 def satind(G,F,V) |
|
Line 2270 def satind(G,F,V) |
|
} |
} |
} |
} |
return [reverse(R),D1]; |
return [reverse(R),D1]; |
|
} |
|
|
|
/* homogeneous case only */ |
|
|
|
def sat_ind_var(G,F,V) |
|
{ |
|
if ( type(Ord=getopt(ord)) == -1 ) Ord = 0; |
|
if ( type(Mod=getopt(mod)) == -1 ) Mod = 0; |
|
V0 = append(setminus(V,[F]),[F]); |
|
G0 = nd_gr(G,V0,Mod,0); |
|
M = 0; |
|
for ( G1 = [], T = G0; T != []; T = cdr(T) ) { |
|
S = car(T); |
|
M1 = mindeg(S,F); |
|
S = sdiv(S,F^M1); |
|
G1 = cons(S,G1); |
|
if ( M1 > M ) M = M1; |
|
} |
|
G1 = nd_gr(G1,V,Mod,Ord); |
|
return [G1,M]; |
} |
} |
|
|
def sat_ind(G,F,V) |
def sat_ind(G,F,V) |