=================================================================== RCS file: /home/cvs/OpenXM/src/asir-contrib/testing/noro/module_syz.rr,v retrieving revision 1.4 retrieving revision 1.7 diff -u -p -r1.4 -r1.7 --- OpenXM/src/asir-contrib/testing/noro/module_syz.rr 2020/01/22 22:44:21 1.4 +++ OpenXM/src/asir-contrib/testing/noro/module_syz.rr 2020/02/09 09:13:38 1.7 @@ -75,15 +75,17 @@ def module_syz(F,V,H,Ord) } else { if ( Weyl ) G = nd_weyl_gr(B,V,0,[1,Ord]|dp=1,homo=H); - else if ( F4 ) { + else { Ind = 0; while ( 1 ) { - G = nd_f4_trace(B,V,H,-lprime(Ind),[1,Ord]|dp=1); + if ( F4 ) + G = nd_f4_trace(B,V,H,-lprime(Ind),[1,Ord]|dp=1); + else + G = nd_gr_trace(B,V,H,-lprime(Ind),[1,Ord]|dp=1); if ( G ) break; else Ind++; } - } else - G = nd_gr(B,V,0,[1,Ord]|dp=1,homo=H); + } } G0 = []; S0 = []; Gen0 = []; for ( T = G; T != []; T = cdr(T) ) { @@ -169,6 +171,7 @@ def fres(F,V,H,O) L = L[0]; L = ordcheck(L,V); if ( L == [] ) { + R = reverse(R); if ( DP ) return R; else return map(dpmlisttollist,R,V); } @@ -200,6 +203,7 @@ def minres(F,V,H,O) R = cdr(R); break; } } + R = reverse(R); if ( DP ) return R; else return map(dpmlisttollist,R,V); } @@ -220,17 +224,22 @@ def sres(F,V,H,Ord) if ( I == K ) return [[],[],[]]; L = todpmlist(F,V); F = L[0]; N = L[1]; +#if 0 G = nd_gr(F,V,H,[0,Ord]|dp=1); +#else + G = nd_gr_trace(F,V,H,1,[0,Ord]|dp=1); +#endif G = reverse(G); R = [G]; dp_ord([0,Ord]); while ( 1 ) { S = dpm_schreyer_base(R[0]); - print(["length",length(S)]); + if ( dp_gr_print() ) print(["length",length(S)]); if ( S == [] ) break; else R = cons(S,R); } dp_ord([0,0]); + R = reverse(R); if ( DP ) return R; else return map(dpmlisttollist,R,V); } @@ -239,7 +248,7 @@ def minsres(F,V,H,Ord) { if ( type(DP=getopt(dp)) == -1 ) DP = 0; R = sres(F,V,H,Ord|dp=1); - R = ltov(R); + R = ltov(reverse(R)); M = length(R); for ( I = 0; I < M; I++ ) R[I] = map(dpm_sort,R[I]); R = vtol(R); @@ -418,7 +427,13 @@ def lres_setup(F,V,H,Ord) } else { error("lres_setup: arugument type is invalid."); } + dp_ord([0,Ord]); + F = map(dpm_sort,F); +#if 0 G = nd_gr(F,V,H,[0,Ord]|dp=1); +#else + G = nd_gr_trace(F,V,H,1,[0,Ord]|dp=1); +#endif G = reverse(G); dp_ord([0,Ord]); One = dp_ptod(1,V); @@ -442,6 +457,7 @@ def lres(F,V,H,Ord) { T0 = time(); if ( type(Top=getopt(top)) == -1 ) Top = 0; + if ( type(DP=getopt(dp)) == -1 ) DP = 0; if ( type(NoSimpK=getopt(nosimpk)) == -1 ) NoSimpK = 0; if ( type(NoPreProj=getopt(nopreproj)) == -1 ) NoPreProj = 0; Rtime = Stime = Ptime = 0; @@ -488,16 +504,20 @@ def lres(F,V,H,Ord) } T1 = time(); Ftime = T1[0]-T0[0]; R = ltov(R); Len = length(R); - print(["Len",Len]); + if ( dp_gr_print() ) print(["Len",Len]); for ( I = 0, NF = 0; I < Len; I++ ) { - if ( !((I+1)%100) ) print(".",2); - if ( !((I+1)%10000) ) print(I+1); + if ( dp_gr_print() ) { + if ( !((I+1)%100) ) print(".",2); + if ( !((I+1)%10000) ) print(I+1); + } if ( !R[I][3] ) continue; NF++; reduce(R[I],B,Bpos,C,H,Z,K,Kind,G,One,Top); } - print(""); - print(["NF",NF]); + if ( dp_gr_print() ) { + print(""); + print(["NF",NF]); + } T0 = time(); dpm_set_schreyer_level(0); D[1] = map(dpm_sort,H[1]); @@ -511,27 +531,28 @@ def lres(F,V,H,Ord) Tab = map(dpm_sort,Tab); TailTop = dpm_dptodpm(One,TailTopPos); if ( !NoSimpK ) { - print("simplify_k "+rtostr(I)+"...",2); + if ( dp_gr_print() ) print("simplify_k "+rtostr(I)+"...",2); simplify_k(Head,Tab,TailTop,One); - print("done"); + if ( dp_gr_print() ) print("done"); } HI = map(remove_k,map(dpm_sort,H[I]),Kind[I-1]); Len = length(HI); - print("simplify_by_k "+rtostr(I)+"...",2); + if ( dp_gr_print() ) print("simplify_by_k "+rtostr(I)+"...",2); D[I] = vector(Len); for ( J = 0; J < Len; J++ ) { D[I][J] = simplify_by_k(HI[J],Tab,TailTop,One); if ( NoPreProj ) D[I][J] = remove_k(D[I][J],Kind[I-1]); } - print("done"); + if ( dp_gr_print() ) print("done"); } dp_ord([1,0]); T1 = time(); - print(["Frame",Ftime,"Prep",Ptime,"Reduce",Rtime,"Search",Stime,"Minimalize",T1[0]-T0[0]]); + if ( dp_gr_print() ) print(["Frame",Ftime,"Prep",Ptime,"Reduce",Rtime,"Search",Stime,"Minimalize",T1[0]-T0[0]]); // return [C,H,K,Kind,D]; D = compress_h(D); - return D; + if ( DP ) return D; + else return vtol(map(dpmlisttollist,D,V)); } def create_base_ord(K,N) @@ -623,7 +644,7 @@ def phi(C,F) R = 0; for ( T = F; T; T = dpm_rest(T) ) { Coef = dpm_hc(T); Pos = dpm_hp(T); - R += Coef*C[Pos]; + R += Coef*C[Pos-1]; } return R; }