Back to Forum | View unanswered posts | View active topics
Topic review - How to calculate Syz for module |
Author |
Message |
|
|
Post subject: |
Re: How to calculate Syz for module |
|
|
just add a unit matrix to your input module for bookkeeping and choose a module ordering in such a way that the original module monomials are bigger than any monomial involving new bookkeeping components. after computing a GB - vectors with bookkeeping data only will be syzygies: Code: > ring R = 0,(x,y), (c,dp); > gen(2) < gen(1); 1 > gen(3) < gen(1); 1 > module M = [x, 1, 0] , [y, 0, 1]; > std(M); _[1]=[0,y,-x] // <-- syz(x, y) _[2]=[y,0,1] _[3]=[x,1]
hope this helps. Oleksandr.
just add a unit matrix to your input module for bookkeeping and choose a module ordering in such a way that the original module monomials are bigger than any monomial involving new bookkeeping components. after computing a GB - vectors with bookkeeping data only will be syzygies:
[code] > ring R = 0,(x,y), (c,dp); > gen(2) < gen(1); 1 > gen(3) < gen(1); 1 > module M = [x, 1, 0] , [y, 0, 1]; > std(M); _[1]=[0,y,-x] // <-- syz(x, y) _[2]=[y,0,1] _[3]=[x,1] [/code]
hope this helps. Oleksandr.
|
|
|
|
Posted: Mon Jun 17, 2013 8:57 am |
|
|
|
|
|
Post subject: |
How to calculate Syz for module |
|
|
if not using syz function, how to write command to calculate it fundamentally below is maple code Code: restart; with(Groebner):
IsNullZero := proc(tau) if assigned(tau) then return tau else return 0 end if end proc;
DoExist := proc(tau, n) if rtable_num_elems(tau) >= n then return tau[n]; else return 0; end if; end proc;
LeadingTermVector := proc(a,b) result := a; for i from 1 to rtable_num_elems(a) do result[i] = `*`(LeadingTerm(a[i], b)); od; return result; end proc;
LCMVector := proc(a,b) result := a; for i from 1 to rtable_num_elems(a) do result[i] = lcm(a[i], b[i]); od; return result; end proc;
SPolynomialVector := proc(a, b, c) result := a; for i from 1 to rtable_num_elems(a) do result[i] = SPolynomial(a[i], b[i], c); od; return result; end proc;
DivideVector := proc(a, b) result8 := a; for i from 1 to rtable_num_elems(a) do if a[i] = 0 then result8[i] = 0; else result8[i] = a[i]/b[i]; end if; od; return result8; end proc;
BasisVector := proc(a, b) result6 := 0; for i from 1 to rtable_num_elems(a) do result6[i] := 0; od; for i from 1 to rtable_num_elems(a) do result6[i] := Basis(convert(a(i, 1 .. -1),list), b); od; return result6; end proc;
NormalFormVector := proc(a, b, c, d) for i from 1 to rtable_num_elems(b) do NormalForm(a[i], b[i], c, d); od; end proc;
g1 := y; g2 := y^2-x-y; g3 := x+y; g4 := -y; g5 := x*y+x/2+y/2; g6 := x^2-x/4-y/4;
m1 := Vector([0, y, x]); m2 := Vector([0, y^2-x-y, 0]); m3 := Vector([x, x+y, 0]); m4 := Vector([y, -y, 0]); m5 := Vector([0, x*y+x/2+y/2, 0]); m6 := Vector([0, x^2-x/4-y/4, 0]);
k1 := [0,0,x,y,0,0];
X1 := `*`(LeadingTermVector(g1, tdeg(x, y))); X2 := `*`(LeadingTermVector(g2, tdeg(x, y))); X3 := `*`(LeadingTermVector(g3, tdeg(x, y))); X4 := `*`(LeadingTermVector(g4, tdeg(x, y))); X5 := `*`(LeadingTermVector(g5, tdeg(x, y))); X6 := `*`(LeadingTermVector(g6, tdeg(x, y)));
#X1 := `*`(LeadingTerm(g1, tdeg(x, y))); #X2 := `*`(LeadingTerm(g2, tdeg(x, y))); #X3 := `*`(LeadingTerm(g3, tdeg(x, y))); #X4 := `*`(LeadingTerm(g4, tdeg(x, y))); #X5 := `*`(LeadingTerm(g5, tdeg(x, y))); #X6 := `*`(LeadingTerm(g6, tdeg(x, y)));
X12 := LCMVector(X1,X2); X13 := LCMVector(X1,X3); X14 := LCMVector(X1,X4); X15 := LCMVector(X1,X5); X16 := LCMVector(X1,X6); X23 := LCMVector(X2,X3); X24 := LCMVector(X2,X4); X25 := LCMVector(X2,X5); X26 := LCMVector(X2,X6); X34 := LCMVector(X3,X4); X35 := LCMVector(X3,X5); X36 := LCMVector(X3,X6); X45 := LCMVector(X4,X5); X46 := LCMVector(X4,X6); X56 := LCMVector(X5,X6);
#X12 := lcm(X1,X2); #X13 := lcm(X1,X3); #X14 := lcm(X1,X4); #X15 := lcm(X1,X5); #X16 := lcm(X1,X6); #X23 := lcm(X2,X3); #X24 := lcm(X2,X4); #X25 := lcm(X2,X5); #X26 := lcm(X2,X6); #X34 := lcm(X3,X4); #X35 := lcm(X3,X5); #X36 := lcm(X3,X6); #X45 := lcm(X4,X5); #X46 := lcm(X4,X6); #X56 := lcm(X5,X6);
S12 := SPolynomialVector(g1, g2, lexdeg([x, y])); S13 := SPolynomialVector(g1, g3, lexdeg([x, y])); S14 := SPolynomialVector(g1, g4, lexdeg([x, y])); S15 := SPolynomialVector(g1, g5, lexdeg([x, y])); S16 := SPolynomialVector(g1, g6, lexdeg([x, y])); S23 := SPolynomialVector(g2, g3, lexdeg([x, y])); S24 := SPolynomialVector(g2, g4, lexdeg([x, y])); S25 := SPolynomialVector(g2, g5, lexdeg([x, y])); S26 := SPolynomialVector(g2, g6, lexdeg([x, y])); S34 := SPolynomialVector(g3, g4, lexdeg([x, y])); S35 := SPolynomialVector(g3, g5, lexdeg([x, y])); S36 := SPolynomialVector(g3, g6, lexdeg([x, y])); S45 := SPolynomialVector(g4, g5, lexdeg([x, y])); S46 := SPolynomialVector(g4, g6, lexdeg([x, y])); S56 := SPolynomialVector(g5, g6, lexdeg([x, y]));
e1 := Vector([1,0,0,0,0,0]); e2 := Vector([0,1,0,0,0,0]); e3 := Vector([0,0,1,0,0,0]); e4 := Vector([0,0,0,1,0,0]); e5 := Vector([0,0,0,0,1,0]); e6 := Vector([0,0,0,0,0,1]);
if not using syz function, how to write command to calculate it fundamentally
below is maple code [code]restart; with(Groebner):
IsNullZero := proc(tau) if assigned(tau) then return tau else return 0 end if end proc;
DoExist := proc(tau, n) if rtable_num_elems(tau) >= n then return tau[n]; else return 0; end if; end proc;
LeadingTermVector := proc(a,b) result := a; for i from 1 to rtable_num_elems(a) do result[i] = `*`(LeadingTerm(a[i], b)); od; return result; end proc;
LCMVector := proc(a,b) result := a; for i from 1 to rtable_num_elems(a) do result[i] = lcm(a[i], b[i]); od; return result; end proc;
SPolynomialVector := proc(a, b, c) result := a; for i from 1 to rtable_num_elems(a) do result[i] = SPolynomial(a[i], b[i], c); od; return result; end proc;
DivideVector := proc(a, b) result8 := a; for i from 1 to rtable_num_elems(a) do if a[i] = 0 then result8[i] = 0; else result8[i] = a[i]/b[i]; end if; od; return result8; end proc;
BasisVector := proc(a, b) result6 := 0; for i from 1 to rtable_num_elems(a) do result6[i] := 0; od; for i from 1 to rtable_num_elems(a) do result6[i] := Basis(convert(a(i, 1 .. -1),list), b); od; return result6; end proc;
NormalFormVector := proc(a, b, c, d) for i from 1 to rtable_num_elems(b) do NormalForm(a[i], b[i], c, d); od; end proc;
g1 := y; g2 := y^2-x-y; g3 := x+y; g4 := -y; g5 := x*y+x/2+y/2; g6 := x^2-x/4-y/4;
m1 := Vector([0, y, x]); m2 := Vector([0, y^2-x-y, 0]); m3 := Vector([x, x+y, 0]); m4 := Vector([y, -y, 0]); m5 := Vector([0, x*y+x/2+y/2, 0]); m6 := Vector([0, x^2-x/4-y/4, 0]);
k1 := [0,0,x,y,0,0];
X1 := `*`(LeadingTermVector(g1, tdeg(x, y))); X2 := `*`(LeadingTermVector(g2, tdeg(x, y))); X3 := `*`(LeadingTermVector(g3, tdeg(x, y))); X4 := `*`(LeadingTermVector(g4, tdeg(x, y))); X5 := `*`(LeadingTermVector(g5, tdeg(x, y))); X6 := `*`(LeadingTermVector(g6, tdeg(x, y)));
#X1 := `*`(LeadingTerm(g1, tdeg(x, y))); #X2 := `*`(LeadingTerm(g2, tdeg(x, y))); #X3 := `*`(LeadingTerm(g3, tdeg(x, y))); #X4 := `*`(LeadingTerm(g4, tdeg(x, y))); #X5 := `*`(LeadingTerm(g5, tdeg(x, y))); #X6 := `*`(LeadingTerm(g6, tdeg(x, y)));
X12 := LCMVector(X1,X2); X13 := LCMVector(X1,X3); X14 := LCMVector(X1,X4); X15 := LCMVector(X1,X5); X16 := LCMVector(X1,X6); X23 := LCMVector(X2,X3); X24 := LCMVector(X2,X4); X25 := LCMVector(X2,X5); X26 := LCMVector(X2,X6); X34 := LCMVector(X3,X4); X35 := LCMVector(X3,X5); X36 := LCMVector(X3,X6); X45 := LCMVector(X4,X5); X46 := LCMVector(X4,X6); X56 := LCMVector(X5,X6);
#X12 := lcm(X1,X2); #X13 := lcm(X1,X3); #X14 := lcm(X1,X4); #X15 := lcm(X1,X5); #X16 := lcm(X1,X6); #X23 := lcm(X2,X3); #X24 := lcm(X2,X4); #X25 := lcm(X2,X5); #X26 := lcm(X2,X6); #X34 := lcm(X3,X4); #X35 := lcm(X3,X5); #X36 := lcm(X3,X6); #X45 := lcm(X4,X5); #X46 := lcm(X4,X6); #X56 := lcm(X5,X6);
S12 := SPolynomialVector(g1, g2, lexdeg([x, y])); S13 := SPolynomialVector(g1, g3, lexdeg([x, y])); S14 := SPolynomialVector(g1, g4, lexdeg([x, y])); S15 := SPolynomialVector(g1, g5, lexdeg([x, y])); S16 := SPolynomialVector(g1, g6, lexdeg([x, y])); S23 := SPolynomialVector(g2, g3, lexdeg([x, y])); S24 := SPolynomialVector(g2, g4, lexdeg([x, y])); S25 := SPolynomialVector(g2, g5, lexdeg([x, y])); S26 := SPolynomialVector(g2, g6, lexdeg([x, y])); S34 := SPolynomialVector(g3, g4, lexdeg([x, y])); S35 := SPolynomialVector(g3, g5, lexdeg([x, y])); S36 := SPolynomialVector(g3, g6, lexdeg([x, y])); S45 := SPolynomialVector(g4, g5, lexdeg([x, y])); S46 := SPolynomialVector(g4, g6, lexdeg([x, y])); S56 := SPolynomialVector(g5, g6, lexdeg([x, y]));
e1 := Vector([1,0,0,0,0,0]); e2 := Vector([0,1,0,0,0,0]); e3 := Vector([0,0,1,0,0,0]); e4 := Vector([0,0,0,1,0,0]); e5 := Vector([0,0,0,0,1,0]); e6 := Vector([0,0,0,0,0,1]); [/code]
|
|
|
|
Posted: Wed Jun 12, 2013 12:00 pm |
|
|
|
|
|
It is currently Fri May 13, 2022 10:58 am
|
|