[BACK]Return to module_syz.rr CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / testing / noro

Diff for /OpenXM/src/asir-contrib/testing/noro/module_syz.rr between version 1.3 and 1.6

version 1.3, 2020/01/22 08:30:40 version 1.6, 2020/02/05 04:56:10
Line 1 
Line 1 
 module newsyz;  module newsyz;
   
 localf module_syz;  localf module_syz, module_syz_old;
 localf simplify_syz, icont, mod, remove_cont,ordcheck;  localf simplify_syz, icont, mod, remove_cont,ordcheck;
 localf complsb, complsb_sd, sortlsb, find_pos, find_pos, reduce, lres_setup, dpm_sort1, comp_pos;  localf complsb, complsb_sd, sortlsb, find_pos, find_pos, reduce, lres_setup, dpm_sort1, comp_pos;
 localf fres,minres,sres,minsres,lres, create_base_ord, simplify_k, simplify_by_k, remove_k, remove_k1, extract_nonzero;  localf fres,minres,sres,minsres,lres, create_base_ord, simplify_k, simplify_by_k, remove_k, remove_k1, extract_nonzero;
Line 64  def module_syz(F,V,H,Ord)
Line 64  def module_syz(F,V,H,Ord)
     B = cons(F[I]+dpm_dptodpm(dp_ptod(1,V),N+I+1),B);      B = cons(F[I]+dpm_dptodpm(dp_ptod(1,V),N+I+1),B);
   }    }
   B = reverse(B);    B = reverse(B);
   if ( Weyl )    if ( H >= 2 ) {
     G = nd_weyl_gr(B,V,0,[1,Ord]|dp=1,homo=H);      // finite field
   else if ( F4 ) {      if ( Weyl )
 //    G = nd_f4(B,V,0,[1,Ord]|dp=1,homo=H,nora=1);        G = nd_weyl_gr(B,V,H,[1,Ord]|dp=1);
     Ind = 0;      else if ( F4 )
     while ( 1 ) {        G = nd_f4(B,V,H,[1,Ord]|dp=1);
       G = nd_f4_trace(B,V,H,-lprime(Ind),[1,Ord]|dp=1);      else
       if ( G ) break;        G = nd_gr(B,V,H,[1,Ord]|dp=1);
       else Ind++;    } else {
     }      if ( Weyl )
   } else        G = nd_weyl_gr(B,V,0,[1,Ord]|dp=1,homo=H);
     G = nd_gr(B,V,0,[1,Ord]|dp=1,homo=H);      else if ( F4 ) {
         Ind = 0;
         while ( 1 ) {
           G = nd_f4_trace(B,V,H,-lprime(Ind),[1,Ord]|dp=1);
           if ( G ) break;
           else Ind++;
         }
       } else
         G = nd_gr_trace(B,V,H,1,[1,Ord]|dp=1);
     }
   G0 = []; S0 = []; Gen0 = [];    G0 = []; S0 = []; Gen0 = [];
   for ( T = G; T != []; T = cdr(T) ) {    for ( T = G; T != []; T = cdr(T) ) {
     H = car(T);      H = car(T);
Line 96  def module_syz(F,V,H,Ord)
Line 105  def module_syz(F,V,H,Ord)
   return [S0,G0,Gen0];    return [S0,G0,Gen0];
 }  }
   
   def module_syz_old(F,V,H,O)
   {
           Weyl = type(getopt(weyl)) != -1 ? 1 : 0;
           K = length(F);
           if ( type(F[0]) <= 2 ) {
                   for ( T = [], S = F; S != []; S = cdr(S) )
                           T = cons([car(S)],T);
                   F = reverse(T);
           }
           N = length(F[0]);
           B = [];
           for ( I = 0; I < K; I++ ) {
                   E = vector(N+K);
                   for ( J = 0; J < N; J++ ) E[J] = F[I][J];
                   E[N+I] = 1;
                   B = cons(vtol(E),B);
           }
           B = reverse(B);
           if ( H >= 2 ) {
                   if ( Weyl )
                           G = nd_weyl_gr(B,V,H,[1,O]);
                   else
                           G = nd_gr(B,V,H,[1,O]);
           } else {
                   if ( Weyl )
                           G = nd_weyl_gr_trace(B,V,H,-1,[1,O]);
                   else
                           G = nd_gr_trace(B,V,H,-1,[1,O]);
           }
           G0 = []; S0 = []; Gen0 = [];
           for ( T = G; T != []; T = cdr(T) ) {
                   H = car(T);
                   for ( J = 0; J < N; J++ ) if ( H[J] ) break;
                   if ( J == N ) {
                           H1 = vector(K);
                           for ( J = 0; J < K; J++ ) H1[J] = H[N+J];
                           S0 = cons(vtol(H1),S0);
                   } else {
                           H1 = vector(N);
                           for ( J = 0; J < N; J++ ) H1[J] = H[J];
                           G0 = cons(vtol(H1),G0);
                           H1 = vector(K);
                           for ( J = 0; J < K; J++ ) H1[J] = H[N+J];
                           Gen0 = cons(vtol(H1),Gen0);
                   }
           }
           return [S0,G0,Gen0];
   }
   
 def fres(F,V,H,O)  def fres(F,V,H,O)
 {  {
   if ( type(Weyl=getopt(weyl)) == -1 ) Weyl = 0;    if ( type(Weyl=getopt(weyl)) == -1 ) Weyl = 0;
Line 111  def fres(F,V,H,O)
Line 169  def fres(F,V,H,O)
     L = L[0];      L = L[0];
     L = ordcheck(L,V);      L = ordcheck(L,V);
     if ( L == [] ) {      if ( L == [] ) {
         R = reverse(R);
       if ( DP ) return R;        if ( DP ) return R;
       else return map(dpmlisttollist,R,V);        else return map(dpmlisttollist,R,V);
     }      }
Line 142  def minres(F,V,H,O)
Line 201  def minres(F,V,H,O)
       R = cdr(R); break;        R = cdr(R); break;
     }      }
   }    }
     R = reverse(R);
   if ( DP ) return R;    if ( DP ) return R;
   else return map(dpmlisttollist,R,V);    else return map(dpmlisttollist,R,V);
 }  }
Line 162  def sres(F,V,H,Ord)
Line 222  def sres(F,V,H,Ord)
   if ( I == K ) return [[],[],[]];    if ( I == K ) return [[],[],[]];
   L = todpmlist(F,V);    L = todpmlist(F,V);
   F = L[0]; N = L[1];    F = L[0]; N = L[1];
   #if 0
   G = nd_gr(F,V,H,[0,Ord]|dp=1);    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);    G = reverse(G);
   R = [G];    R = [G];
   dp_ord([0,Ord]);    dp_ord([0,Ord]);
Line 173  def sres(F,V,H,Ord)
Line 237  def sres(F,V,H,Ord)
     else R = cons(S,R);      else R = cons(S,R);
   }    }
   dp_ord([0,0]);    dp_ord([0,0]);
     R = reverse(R);
   if ( DP ) return R;    if ( DP ) return R;
   else return map(dpmlisttollist,R,V);    else return map(dpmlisttollist,R,V);
 }  }
Line 181  def minsres(F,V,H,Ord)
Line 246  def minsres(F,V,H,Ord)
 {  {
   if ( type(DP=getopt(dp)) == -1 ) DP = 0;    if ( type(DP=getopt(dp)) == -1 ) DP = 0;
   R = sres(F,V,H,Ord|dp=1);    R = sres(F,V,H,Ord|dp=1);
   R = ltov(R);    R = ltov(reverse(R));
   M = length(R);    M = length(R);
   for ( I = 0; I < M; I++ ) R[I] = map(dpm_sort,R[I]);    for ( I = 0; I < M; I++ ) R[I] = map(dpm_sort,R[I]);
   R = vtol(R);    R = vtol(R);
Line 360  def lres_setup(F,V,H,Ord)
Line 425  def lres_setup(F,V,H,Ord)
   } else {    } else {
     error("lres_setup: arugument type is invalid.");      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);    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);    G = reverse(G);
   dp_ord([0,Ord]);    dp_ord([0,Ord]);
   One = dp_ptod(1,V);    One = dp_ptod(1,V);
Line 384  def lres(F,V,H,Ord)
Line 455  def lres(F,V,H,Ord)
 {  {
   T0 = time();    T0 = time();
   if ( type(Top=getopt(top)) == -1 ) Top = 0;    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(NoSimpK=getopt(nosimpk)) == -1 ) NoSimpK = 0;
   if ( type(NoPreProj=getopt(nopreproj)) == -1 ) NoPreProj = 0;    if ( type(NoPreProj=getopt(nopreproj)) == -1 ) NoPreProj = 0;
   Rtime = Stime = Ptime = 0;    Rtime = Stime = Ptime = 0;
Line 473  def lres(F,V,H,Ord)
Line 545  def lres(F,V,H,Ord)
   print(["Frame",Ftime,"Prep",Ptime,"Reduce",Rtime,"Search",Stime,"Minimalize",T1[0]-T0[0]]);    print(["Frame",Ftime,"Prep",Ptime,"Reduce",Rtime,"Search",Stime,"Minimalize",T1[0]-T0[0]]);
 //  return [C,H,K,Kind,D];  //  return [C,H,K,Kind,D];
   D = compress_h(D);    D = compress_h(D);
   return D;    if ( DP ) return D;
     else return vtol(map(dpmlisttollist,D,V));
 }  }
   
 def create_base_ord(K,N)  def create_base_ord(K,N)
Line 565  def phi(C,F)
Line 638  def phi(C,F)
   R = 0;    R = 0;
   for ( T = F; T; T = dpm_rest(T) ) {    for ( T = F; T; T = dpm_rest(T) ) {
     Coef = dpm_hc(T); Pos = dpm_hp(T);      Coef = dpm_hc(T); Pos = dpm_hp(T);
     R += Coef*C[Pos];      R += Coef*C[Pos-1];
   }    }
   return R;    return R;
 }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.6

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>