version 1.3, 2020/01/22 08:30:40 |
version 1.5, 2020/01/27 02:16:02 |
|
|
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(B,V,0,[1,Ord]|dp=1,homo=H); |
|
} |
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 173 def sres(F,V,H,Ord) |
|
Line 233 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 242 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 384 def lres(F,V,H,Ord) |
|
Line 445 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 535 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) |