=================================================================== RCS file: /home/cvs/OpenXM/src/asir-contrib/testing/noro/de.rr,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- OpenXM/src/asir-contrib/testing/noro/de.rr 2006/03/12 00:27:20 1.1 +++ OpenXM/src/asir-contrib/testing/noro/de.rr 2014/09/05 11:55:19 1.3 @@ -8,6 +8,7 @@ localf membership_test; localf dp_chrem,intdptoratdp,intdpltoratdpl; localf comp_by_ht,dp_gr_mod,gr_chrem; localf construct_sqfrbasis; +localf split; /* * G : a 0-dim lex gb, reduced @@ -71,6 +72,27 @@ def inverse_or_split(V,Id,F) } } +def split(V,Id,F,Ord) +{ + Id = map(ptozp,Id); + N = length(V); + dp_ord(Ord); + set_field(Id,V,Ord); + DF = dptodalg(dp_ptod(F,V)); + Ret = inv_or_split_dalg(DF); + /* Ret = GB(Id:F) */ + /* compute GB(Id+) */ + Gquo = append(map(ptozp,map(dp_dtop,Ret,V)),Id); + /* inter-reduction */ + Gquo = nd_gr_postproc(Gquo,V,0,Ord,0); + DTotal = linear_dim(Id,V,Ord); + Dquo = linear_dim(Gquo,V,Ord); + Drem = DTotal-Dquo; + B = cons(F,Id); + Grem = gr_chrem(B,V,Ord|dim=Drem); + return [map(ptozp,Gquo),map(ptozp,Grem)]; +} + /* add F(X,V) to Id(B) */ /* returns a list of splitted ideals */ /* B should be a triangular basis */ @@ -115,7 +137,7 @@ def sort_lex_dec(B,V) { dp_ord(2); B = map(dp_ptod,B,V); - B = vtol(qsort(ltov(B),comp_by_ht)); + B = vtol(qsort(ltov(B),de.comp_by_ht)); B = map(dp_dtop,B,V); return reverse(B); } @@ -124,7 +146,7 @@ def sort_lex_inc(B,V) { dp_ord(2); B = map(dp_ptod,B,V); - B = vtol(qsort(ltov(B),comp_by_ht)); + B = vtol(qsort(ltov(B),de.comp_by_ht)); B = map(dp_dtop,B,V); return B; } @@ -199,7 +221,7 @@ def intdpltoratdpl(G,Mod,M) R = cons(T,R); } R = reverse(R); - return vtol(qsort(newvect(length(R),R),comp_by_ht)); + return vtol(qsort(newvect(length(R),R),de.comp_by_ht)); } def intdptoratdp(F,Mod,M) @@ -240,7 +262,7 @@ def monic_gb(G,V,O,P) dp_ord(O); setmod(P); D = map(dp_ptod,G,V); D = map(dp_monic_mod,D,P); - D = vtol(qsort(newvect(length(D),D),comp_by_ht)); + D = vtol(qsort(newvect(length(D),D),de.comp_by_ht)); return [D,map(dp_ht,D)]; }