newPackage( "NumericalGodeaux", Version => "1.1", Date => "08, 2022", Authors => {{Name => "Isabel Stenger", Email =>"stenger@math.uni-sb.de", HomePage => "https://www.math.uni-sb.de/ag/schreyer/index.php/people/researchers/132-isabel-stenger"}, {Name => "Frank-Olaf Schreyer", Email =>"schreyer@math.uni-sb.de", HomePage =>"https://www.math.uni-sb.de/ag/schreyer"}}, Headline => "Construction of numerical Godeaux surfaces", DebuggingMode => true, Reload => true ) needsPackage "Elimination"; needsPackage "Truncations"; export{"globalVariables", "complexModuloRegularSequence", "setupGeneralMatrices", "lineConditionsTorsZ4", "lineConditionsTorsZ2", "lineConditionsTorsZ5", "getRelationsAndNormalForm", "getAMatrix", "getEMatrix", "getChainComplexes", "setupSkewMatrices", "setupGodeaux", "lowerRankLociA", "lowerRankLociE", "singularLocusQ", "homologyLocus", "allLoci", "allLociTors0", "singleSolutionMatricesOverP11", "singleSolutionMatricesLine", "getP11", "precomputedModelInP3xP3xP3xP3", "precomputedModelInP3xP5", "precomputedCoxModel", "modelInP3xP3xP3xP3", "collapsingOneCStar", "furtherCollapsing", "modelInP1BundleOverP2xP5", "findPointInP3xP5", "pointOnARationalCodim1Hypersurface", "fromPointInP3xP5ToPointInP3xP3xP3xP3", "fromPointInP3xP3xP3xP3ToLine", "fromLineToStandardResolution", "fromLineToGodeauxSurface", "randomPoint", "randomLine", "randomLineTorsZ5", "randomLineTorsZ4", "randomLineTorsZ3", "randomLineTorsZ2", "randomLineTors0", "precomputedHyperellipticLocus", "precomputedHyperellipticPoint", "verifyThmHypLocus", "computeParametrizationOfHypLocus", "precomputedTorsZ2Line", "precomputedTorsZ3Line", "precomputedTorsZ4Line", "precomputedTorsZ5Line", "tangentSpacePoint", "jacobianQ", "normalBundleLineInQ", "associatedLineInP11", "randomSection", "standardResolution", "solutionMatrix", "randomStandardResolution", "randomGodeauxSurface", "verifyAssertions", "surfaceInWeightedP5", "bihomogeneousModel", "isSmoothBihomModel", "isSmoothModelInP5", "modelInP13", "tricanonicalModelInP3", "canonicalRing", "calculationOfTheUnirationalParametrizationOfTorsZ5Lines", "Certify", "Attempts", "PrecomputedParametrization" } ------------------------------------------------------------------------------------------------------------------------------------ ------------------------ Procedures for the general set-up of the construction ----------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------ globalVariables=method() globalVariables(Ring,String) := (kk,string) ->( -- Input: kk, a field or the rational numbers -- s, string representing a partion of 4 (in decreasing order) -- Output: A,B: the Ansatz matrices with the global variables of the constructions -- subs0: a matrix storing the global variables for a skew-symmetric B -- Note: the case "31" is not treated so far if isField(kk) == false and not kk === ZZ then error "input is neither a field nor ZZ"; if (string != "4" and string != "22" and string != "1111" and string != "211") then error "input string is not valid"; if string == "1111" then (return globalVariables1111(kk)); if string == "22" then (return globalVariables22(kk)); if string == "4" then (return globalVariables4(kk)); if string == "211" then (return globalVariables211(kk)); return (null,null,null)); globalVariables1111=method() globalVariables1111(Ring):=(kk)->( x := symbol x; y := symbol y; a := symbol a; e := symbol e; o := symbol o; n := symbol n; c := symbol c; p := symbol p; SR:=kk[e_(0,0)..e_(2,11),p_(0,0)..p_(11,7),n_(0,0)..n_(5,11), a_(0,0,1),a_(0,0,2),a_(0,1,2),a_(0,0,3),a_(0,1,3),a_(0,2,3), a_(1,0,1),a_(1,0,2),a_(1,1,2),a_(1,0,3),a_(1,1,3),a_(1,2,3), a_(2,0,1),a_(2,0,2),a_(2,1,2),a_(2,0,3),a_(2,1,3),a_(2,2,3), a_(3,0,1),a_(3,0,2),a_(3,1,2),a_(3,0,3),a_(3,1,3),a_(3,2,3), c_(0,0)..c_(3,7),o_(0,0,0)..o_(5,5,3),x_0,x_1,y_0..y_3, Degrees=>{3*12:2,12*8:2,6*12:4,24:2,32:4,6*6*4:2,2:2,4:3}]; aa:= matrix {{a_(0,0,1),a_(0,0,2),a_(0,1,2),a_(0,0,3),a_(0,1,3),a_(0,2,3)}, {a_(1,0,1),a_(1,0,2),a_(1,1,2),a_(1,0,3),a_(1,1,3),a_(1,2,3)}, {a_(2,0,1),a_(2,0,2),a_(2,1,2),a_(2,0,3),a_(2,1,3),a_(2,2,3)}, {a_(3,0,1),a_(3,0,2),a_(3,1,2),a_(3,0,3),a_(3,1,3),a_(3,2,3)}}; bb:=map(SR^4,SR^{12:-3},0); cc:=matrix apply(4,i->apply(8,j->c_(i,j))); d:=map(SR^3,SR^{6:-1},0); ee:=matrix apply(3,i->apply(12,j->e_(i,j))); ff:=map(SR^3,SR^{8:-3},0); A:=(aa|bb|cc)**SR^{-4}|| ((d|ee|ff)**SR^{ -5}); mm:=map(SR^6,SR^{8:-3},0); nn:=matrix apply(6,i->apply(12,j->n_(i,j))); o1:= matrix apply(6,i-> apply(6,j-> sum(4,k->o_(i,j,k)*y_k))); skewsymCond := ideal contract(transpose matrix{{y_0,y_1,y_2,y_3}},flatten(o1+transpose(o1))); subs0 := vars SR % (skewsymCond+ideal(0_SR)); o1 = sub(o1,subs0); pp:=matrix apply(12,i->apply(8,j->p_(i,j))); qq:=map(SR^12,SR^12,0); rr:=map(SR^8,SR^8,0); B:=(o1|nn| mm)||(-1*transpose nn|qq|pp)||((-1)*transpose mm|(-1)*transpose pp|rr); B=map(SR^{6:-6,12:-7,8:-8},SR^{6:-11,12:-10,8:-9},B); (A,B,subs0)) globalVariables22=method() globalVariables22(Ring):=(kk)->( x := symbol x; y := symbol y; a := symbol a; e := symbol e; o := symbol o; n := symbol n; c := symbol c; p := symbol p; SR:=kk[e_(0,0)..e_(2,11),p_(0,0)..p_(11,7),n_(0,0)..n_(5,11), a_(1,0,0),a_(1,0,2),a_(1,1,2),a_(1,2,2),a_(1,0,3),a_(1,1,3), a_(0,0,0),a_(0,0,2),a_(0,1,2),a_(0,2,2),a_(0,0,3),a_(0,1,3), a_(3,0,0),a_(3,0,2),a_(3,1,2),a_(3,2,2),a_(3,0,3),a_(3,1,3), a_(2,0,0),a_(2,0,2),a_(2,1,2),a_(2,2,2),a_(2,0,3),a_(2,1,3), c_(0,0)..c_(3,7),o_(0,0,0)..o_(5,5,3),x_0,x_1,y_0..y_3, Degrees=>{3*12:2,12*8:2,6*12:4,24:2,32:4,6*6*4:2,2:2,4:3}]; aa:= matrix{{a_(1,0,0),a_(1,0,2),a_(1,1,2),a_(1,2,2),a_(1,0,3),a_(1,1,3)}, {a_(0,0,0),a_(0,0,2),a_(0,1,2),a_(0,2,2),a_(0,0,3),a_(0,1,3)}, {a_(3,0,0),a_(3,0,2),a_(3,1,2),a_(3,2,2),a_(3,0,3),a_(3,1,3)}, {a_(2,0,0),a_(2,0,2),a_(2,1,2),a_(2,2,2),a_(2,0,3),a_(2,1,3)}}; bb:=map(SR^4,SR^{12:-3},0); cc:=matrix apply(4,i->apply(8,j->c_(i,j))); d:=map(SR^3,SR^{6:-1},0); ee:=matrix apply(3,i->apply(12,j->e_(i,j))); ff:=map(SR^3,SR^{8:-3},0); A:=(aa|bb|cc)**SR^{-4}|| ((d|ee|ff)**SR^{ -5}); mm:=map(SR^6,SR^{8:-3},0); nn:=matrix apply(6,i->apply(12,j->n_(i,j))); o1:= matrix apply(6,i-> apply(6,j-> sum(4,k->o_(i,j,k)*y_k))); skewsymCond := ideal contract(transpose matrix{{y_0,y_1,y_2,y_3}},flatten(o1+transpose(o1))); subs0 := vars SR % (skewsymCond+ideal(0_SR)); o1 = sub(o1,subs0); pp:=matrix apply(12,i->apply(8,j->p_(i,j))); qq:=map(SR^12,SR^12,0); rr:=map(SR^8,SR^8,0); B:=(o1|nn| mm)||(-1*transpose nn|qq|pp)||((-1)*transpose mm|(-1)*transpose pp|rr); B=map(SR^{6:-6,12:-7,8:-8},SR^{6:-11,12:-10,8:-9},B); (A,B,subs0)) globalVariables211=method() globalVariables211(Ring):=(kk)->( x := symbol x; y := symbol y; a := symbol a; e := symbol e; o := symbol o; n := symbol n; c := symbol c; p := symbol p; SR:=kk[e_(0,0)..e_(2,11),p_(0,0)..p_(11,7),n_(0,0)..n_(5,11), a_(3,0,1),a_(3,0,2),a_(3,1,2),a_(3,2,2),a_(3,0,3),a_(3,1,3), a_(2,0,1),a_(2,0,2),a_(2,1,2),a_(2,2,2),a_(2,0,3),a_(2,1,3), a_(1,0,1),a_(1,0,2),a_(1,1,2),a_(1,2,2),a_(1,0,3),a_(1,1,3), a_(0,0,1),a_(0,0,2),a_(0,1,2),a_(0,2,2),a_(0,0,3),a_(0,1,3), c_(0,0)..c_(3,7),o_(0,0,0)..o_(5,5,3),x_0,x_1,y_0..y_3, Degrees=>{3*12:2,12*8:2,6*12:4,24:2,32:4,6*6*4:2,2:2,4:3}]; aa:= matrix{{a_(3,0,1),a_(3,0,2),a_(3,1,2),a_(3,2,2),a_(3,0,3),a_(3,1,3)}, {a_(2,0,1),a_(2,0,2),a_(2,1,2),a_(2,2,2),a_(2,0,3),a_(2,1,3)}, {a_(1,0,1),a_(1,0,2),a_(1,1,2),a_(1,2,2),a_(1,0,3),a_(1,1,3)}, {a_(0,0,1),a_(0,0,2),a_(0,1,2),a_(0,2,2),a_(0,0,3),a_(0,1,3)}}; bb:=map(SR^4,SR^{12:-3},0); cc:=matrix apply(4,i->apply(8,j->c_(i,j))); d:=map(SR^3,SR^{6:-1},0); ee:=matrix apply(3,i->apply(12,j->e_(i,j))); ff:=map(SR^3,SR^{8:-3},0); A:=(aa|bb|cc)**SR^{-4}|| ((d|ee|ff)**SR^{ -5}); mm:=map(SR^6,SR^{8:-3},0); nn:=matrix apply(6,i->apply(12,j->n_(i,j))); o1:= matrix apply(6,i-> apply(6,j-> sum(4,k->o_(i,j,k)*y_k))); skewsymCond := ideal contract(transpose matrix{{y_0,y_1,y_2,y_3}},flatten(o1+transpose(o1))); subs0 := vars SR % (skewsymCond+ideal(0_SR)); o1 = sub(o1,subs0); pp:=matrix apply(12,i->apply(8,j->p_(i,j))); qq:=map(SR^12,SR^12,0); rr:=map(SR^8,SR^8,0); B:=(o1|nn| mm)||(-1*transpose nn|qq|pp)||((-1)*transpose mm|(-1)*transpose pp|rr); B=map(SR^{6:-6,12:-7,8:-8},SR^{6:-11,12:-10,8:-9},B); (A,B,subs0)) globalVariables4=method() globalVariables4(Ring):=(kk)->( x := symbol x; y := symbol y; a := symbol a; e := symbol e; o := symbol o; n := symbol n; c := symbol c; p := symbol p; SR:=kk[e_(0,0)..e_(2,11),p_(0,0)..p_(11,7),n_(0,0)..n_(5,11), a_(0,0,0),a_(0,0,1),a_(0,1,1),a_(0,0,2),a_(0,1,2),a_(0,2,2), a_(1,0,0),a_(1,0,1),a_(1,1,1),a_(1,0,2),a_(1,1,2),a_(1,2,2), a_(2,0,0),a_(2,0,1),a_(2,1,1),a_(2,0,2),a_(2,1,2),a_(2,2,2), a_(3,0,0),a_(3,0,1),a_(3,1,1),a_(3,0,2),a_(3,1,2),a_(3,2,2), c_(0,0)..c_(3,7),o_(0,0,0)..o_(5,5,3),x_0,x_1,y_0..y_3, Degrees=>{3*12:2,12*8:2,6*12:4,24:2,32:4,6*6*4:2,2:2,4:3}]; aa:= matrix{{a_(0,0,0),a_(0,0,1),a_(0,1,1),a_(0,0,2),a_(0,1,2),a_(0,2,2)}, {a_(1,0,0),a_(1,0,1),a_(1,1,1),a_(1,0,2),a_(1,1,2),a_(1,2,2)}, {a_(2,0,0),a_(2,0,1),a_(2,1,1),a_(2,0,2),a_(2,1,2),a_(2,2,2)}, {a_(3,0,0),a_(3,0,1),a_(3,1,1),a_(3,0,2),a_(3,1,2),a_(3,2,2)}}; bb:=map(SR^4,SR^{12:-3},0); cc:=matrix apply(4,i->apply(8,j->c_(i,j))); d:=map(SR^3,SR^{6:-1},0); ee:=matrix apply(3,i->apply(12,j->e_(i,j))); ff:=map(SR^3,SR^{8:-3},0); A:=(aa|bb|cc)**SR^{-4}|| ((d|ee|ff)**SR^{ -5}); mm:=map(SR^6,SR^{8:-3},0); nn:=matrix apply(6,i->apply(12,j->n_(i,j))); o1:= matrix apply(6,i-> apply(6,j-> sum(4,k->o_(i,j,k)*y_k))); skewsymCond := ideal contract(transpose matrix{{y_0,y_1,y_2,y_3}},flatten(o1+transpose(o1))); subs0 := vars SR % (skewsymCond+ideal(0_SR)); o1 = sub(o1,subs0); pp:=matrix apply(12,i->apply(8,j->p_(i,j))); qq:=map(SR^12,SR^12,0); rr:=map(SR^8,SR^8,0); B:=(o1|nn| mm)||(-1*transpose nn|qq|pp)||((-1)*transpose mm|(-1)*transpose pp|rr); B=map(SR^{6:-6,12:-7,8:-8},SR^{6:-11,12:-10,8:-9},B); (A,B,subs0)) --------------------------------------------------------------------------------------------- complexModuloRegularSequence=method() complexModuloRegularSequence(Ring,String) := (SR,string) ->( -- the case "31" is not treated so far if (string != "4" and string != "22" and string != "1111" and string != "211") then error "input string is not valid"; if string == "1111" then (return complexModuloRegularSequence1111(SR)); if string == "22" then (return complexModuloRegularSequence22(SR)); if string == "4" then (return complexModuloRegularSequence4(SR,{0,1,0})); if string == "211" then (return complexModuloRegularSequence211(SR)); return null); complexModuloRegularSequence1111=method() complexModuloRegularSequence1111(Ring):= SR ->( nvars := numgens SR; y0 := (gens SR)_(nvars-4); y1 := (gens SR)_(nvars-3); y2 := (gens SR)_(nvars-2); y3 := (gens SR)_(nvars-1); Ipts:=ideal(y0*y1,y0*y2,y1*y2,y0*y3,y1*y3,y2*y3); betti(A:=res Ipts); m1:=matrix{{y0,y1,y2}}; m2:=matrix{{0,y2,-y1},{-y2,0,y0},{y1,-y0,0}}; B3:=chainComplex(m1,m2,transpose m1); m1=matrix{{y0,y1,y3}}; m2=matrix{{0,y3,-y1},{-y3,0,y0},{y1,-y0,0}}; B2:=chainComplex(m1,m2,transpose m1); m1=matrix{{y0,y2,y3}}; m2=matrix{{0,y3,-y2},{-y3,0,y0},{y2,-y0,0}}; B1:=chainComplex(m1,m2,transpose m1); m1=matrix{{y1,y2,y3}}; m2=matrix{{0,y3,-y2},{-y3,0,y1},{y2,-y1,0}}; B0:=chainComplex(m1,m2,transpose m1); betti(B:=directSum(B0,B1,B2,B3)**SR^{-4}); betti(Ca:=Hom(A,SR^{-17})[-3]); C:=chainComplex(Ca.dd_1,-Ca.dd_2,Ca.dd_3); D:=directSum(A,B,C); D1 := D.dd_1; D2:=(D.dd_2)_{20..25}|(D.dd_2)_{8..19}|(D.dd_2)_{0..7}; D3:=(transpose D.dd_1)**SR^{-17}; chainComplex(D1,D2,D3)) complexModuloRegularSequence22=method() complexModuloRegularSequence22(Ring):= SR ->( -- the 4x12 matrix is a direct sum of two non-trivial extensions of modules supported at the two -- base points of multiplicity 2 -- it would be possible to take one or two trivial extensions -- this is currently not done nvars := numgens SR; y0 := (gens SR)_(nvars-4); y1 := (gens SR)_(nvars-3); y2 := (gens SR)_(nvars-2); y3 := (gens SR)_(nvars-1); Ipts:=intersect(ideal(y0,y1,y2^2),ideal(y2,y3,y0^2)); respoints :=res Ipts; m1 := matrix {{y0, y1, y2, 0 , 0 , y3}, { 0, 0 , 0 , y0, y1, y2}}; m2 := matrix {{ 0 , y3 , 0 , 0 , y2, -y1}, {-y3, 0 , 0 , -y2, 0 , y0}, { 0 , 0 , 0 , y1, -y0, 0 }, { 0 , y2 ,-y1, 0 , 0 , 0 }, {-y2, 0 , y0, 0 , 0 , 0 }, { y1, -y0, 0 , 0 , 0 , 0 }}; B2:=chainComplex(m1,m2,transpose m1); m1=matrix {{ y2 , y3, y0, 0 , 0 , y1}, { 0 , 0 , 0 , y2, y3, y0}}; m2 = matrix {{ 0 , y1 , 0 , 0 , y0 , -y3}, {-y1, 0 , 0 ,-y0, 0 , y2}, { 0 , 0 , 0 , y3, -y2, 0 }, { 0 , y0 ,-y3, 0 , 0 , 0 }, {-y0, 0 , y2, 0 , 0 , 0 }, { y3,-y2 , 0 , 0 , 0 , 0 }}; B1:=chainComplex(m1,m2,transpose m1); betti(B:=directSum(B1,B2)**SR^{-4}); betti(Ca:=Hom(respoints,SR^{-17})[-3]); C:=chainComplex(Ca.dd_1,-Ca.dd_2,Ca.dd_3); D:=directSum(respoints,B,C); D2:=(D.dd_2)_{20..25}|(D.dd_2)_{8..19}|(D.dd_2)_{0..7}; D3:=(transpose D.dd_1)**SR^{-17}; chainComplex(D.dd_1,D2,D3)) complexModuloRegularSequence211=method() complexModuloRegularSequence211(Ring):= SR ->( nvars := numgens SR; y0 := (gens SR)_(nvars-4); y1 := (gens SR)_(nvars-3); y2 := (gens SR)_(nvars-2); y3 := (gens SR)_(nvars-1); Ipts:=intersect(ideal(y0,y1,y2^2),ideal(y2,y3,y0),ideal(y2,y3,y1)); betti(A:=res Ipts); m1 := matrix {{y0, y1, y2, 0 , 0 , y3}, { 0, 0 , 0 , y0, y1, y2}}; m2 := matrix {{ 0 , y3 , 0 , 0 , y2 , -y1}, {-y3, 0 , 0 ,-y2, 0 , y0}, { 0 , 0 , 0 , y1, -y0, 0 }, { 0 , y2 ,-y1, 0 , 0 , 0 }, {-y2, 0 , y0, 0 , 0 , 0 }, { y1, -y0, 0, 0 , 0 , 0 }}; B2:=chainComplex(m1,m2,transpose m1); m1=matrix {{y2, y3, y0, 0 , 0 , 0 }, { 0, 0 , 0, y2, y3, y1}}; m2=matrix {{ 0 , y0 ,-y3, 0 , 0 , 0 }, {-y0, 0 , y2, 0 , 0 , 0 }, { y3,-y2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 0 , y1,-y3}, { 0 , 0 , 0 ,-y1, 0 , y2}, { 0 , 0 , 0 , y3,-y2, 0 }}; B1:=chainComplex(m1,m2,transpose m1); betti(B:=directSum(B2,B1)**SR^{-4}); betti(Ca:=Hom(A,SR^{-17})[-3]); C:=chainComplex(Ca.dd_1,-Ca.dd_2,Ca.dd_3); D:=directSum(A,B,C); D2:=(D.dd_2)_{20..25}|(D.dd_2)_{8..19}|(D.dd_2)_{0..7}; D3:=(transpose D.dd_1)**SR^{-17}; chainComplex(D.dd_1,D2,D3)) complexModuloRegularSequence4=method() complexModuloRegularSequence4(Ring,List):= (SR,L) ->( -- the input L describes the choice of possible extension matrices -- in reality, there could be non-isomorphic families of extension modulo -- the group action of the stabilizer of the fat point a0 := L_0; b0 := L_1; c0 := L_2; nvars := numgens SR; kk := coefficientRing(SR); y0 := (gens SR)_(nvars-4); y1 := (gens SR)_(nvars-3); y2 := (gens SR)_(nvars-2); y3 := (gens SR)_(nvars-1); Ipt:= (ideal(y0,y1,y2))^2; respoint :=res Ipt; if a0 == 1 then ext1 := matrix{{y3,0},{0,y3}} else ext1 = map(SR^{2:0},SR^{2:-3},0); if b0 == 1 then ext2 := matrix{{0,0},{y3,0}} else ext2 = map(SR^{2:0},SR^{2:-3},0); if c0 == 1 then ext3 := matrix{{0,y3},{0,0}} else ext3 = map(SR^{2:0},SR^{2:-3},0); z3 := map(SR^{1:0},SR^{3:-3},0); w0 := matrix{{y0,y1,y2}}; m1 := map(SR^{4:0},SR^{12:-3}, (directSum(w0,w0) | ext1_{0} | ext2_{0} | ext3_{0} | ext1_{1} | ext2_{1} | ext3_{1}) || (directSum(z3,z3) | directSum(w0,w0))); w0 = matrix{{ 0 , y2,-y1}, {-y2, 0 , y0}, { y1,-y0, 0 }}; skew1 := c0*matrix{{ 0 ,y3, 0}, {-y3, 0, 0}, { 0 , 0, 0}}; skew2 := a0*matrix{{ 0 , 0 , 0}, { 0 , 0 ,y3}, { 0 ,-y3, 0}}; skew3 := b0*matrix{{ 0 , 0 ,-y3}, { 0 , 0 , 0 }, {y3 , 0 , 0 }}; z3 = map(SR^{3:0},SR^{3:-3},0_SR); m2 := map(SR^{12:-3},,(skew1 | skew2 | z3 | w0) || (skew2 | skew3 | w0 | z3) || ( z3 | w0 | z3 | z3) || ( w0 | z3 | z3 | z3)); B:=chainComplex(m1,m2,transpose m1)**SR^{-4}; betti(Ca:=Hom(respoint,SR^{-17})[-3]); C:=chainComplex(Ca.dd_1,-Ca.dd_2,Ca.dd_3); D:=directSum(respoint,B,C); D2:=(D.dd_2)_{20..25}|(D.dd_2)_{8..19}|(D.dd_2)_{0..7}; D3:=(transpose D.dd_1)**SR^{-17}; chainComplex(D.dd_1,D2,D3)) ------------------------------------------------------------------------ setupGeneralMatrices=method() setupGeneralMatrices(ChainComplex,Matrix,Matrix) := (D,A,B) ->( -- input: D, the complex modulo x_0,x_1 -- A,B: the matrices of indeterminates -- output: the Ansatz matrices d1' and d2 which are of the form -- | o n b3(y) | -- d1' = | a b1(y) c | d2 = | -n^tr b4(y) p | -- | 0 e b2(y) | | -b3(y)^tr -p^tr 0 | d1':=D.dd_1^{1..7}+A; d2 := D.dd_2+B; (d1',d2)) getRelationsAndNormalForm=method() getRelationsAndNormalForm(Matrix,Matrix,Matrix) :=(d1',d2,subs0) -> ( -- input: d1',d2 the Ansatz matrices -- subs0: row matrix describing the subsitituion which makes d2 skew-symmetric -- output: relLinFin: the relations which are linear in the o- and c-variables -- relPfafFin: the relations which are quadratic in the a-variables -- d1'Fin,d2Fin: the final normal forms of the Ansatz matrices SR := ring d2; kk := coefficientRing(SR); -- compute the normal form of the o-matrix om := d2^{0..5}_{0..5}; b3 := d2^{0..5}_{18..25}; w := symbol w; W0 := kk[w_(0,0)..w_(5,7)]; W := W0**SR; b3y := sub(b3,W); wm := transpose genericMatrix(W,W_0,8,6); omw := b3y*transpose(wm)-wm*transpose(b3y); nvars := numgens SR; x0 := (gens SR)_(nvars-6); x1 := (gens SR)_(nvars-5); y0 := (gens SR)_(nvars-4); y1 := (gens SR)_(nvars-3); y2 := (gens SR)_(nvars-2); y3 := (gens SR)_(nvars-1); T := kk[y0,y1,y2,y3]; wm1 := flatten entries wm; L := apply(wm1,wj-> sub(diff(wj,omw),T)); lm := matrix {apply(L,l->transpose flatten l)}; Lu :=apply(L,l->matrix apply(6,i->apply(6,j->if i > j then l_(i,j) else 0))); lu := map(T^36,T^{48:-1},matrix {apply(Lu,l->transpose flatten l)}); li := select(36,i->lu^{i} != 0); l2 := mingens image(basis(1,T^{15:0}) % map(T^{15:0},,basis(1,coker (lu^li)))); h := symbol h; H := kk[h_0..h_14]; hm := genericSkewMatrix(H,h_0,6); om1 :=flatten matrix apply(6,i->apply(6,j->if i > j then om_(i,j) else 0)); omentries := transpose om1_li; ofin := matrix{apply(15,i-> omentries^{i}_0_0 % sub(ideal(l2^{i}),SR))}; onew := sub(sub(hm,ofin),SR); restovars := gens ideal select(support onew,c-> (c != y0 and c!=y1 and c != y2 and c != y3)); allovars := ideal select(support om,c-> (c != y0 and c!=y1 and c != y2 and c != y3)); zeroovars := ideal mingens ideal ((gens allovars) % ideal restovars); -- the second matrix with the normalized o-matrix: d2n := map(target d2, source d2, (onew | d2^{0..5}_{6..25}) || d2^{6..25}); G := d1'*d2n; -- the relations of degree 4 given by ep = 0: rel4 :=ideal G^{4..6}_{18..25}; -- the relations of degree 5 given by a*b3(y)+b1(y)*p = 0 -- and e*b4(y)-b2(y)*p^tr = 0: rel5 := ideal G^{0..3}_{18..25} + ideal G^{4..6}_{6..17}; -- the relations of degree 6 given by a*n- c*p^tr = 0 and -e*n^tr = 0: rel6 := ideal G^{4..6}_{0..5} + ideal G^{0..3}_{6..17}; -- the relations of degree 7 given by a*o - b1(y)*n^tr -c*b3(y)^tr = 0: rel7 := ideal G^{0..3}_{0..5}; varsy := transpose matrix{{y0,y1,y2,y3}}; rel52 := ideal mingens ideal contract(varsy,gens rel5); rel74 := ideal mingens ideal contract(varsy,gens rel7); -- update the matrix of variables with the assignments found by the relations of degree 5 and 7: -- every e- and p-variable is substituted by some a-variables or by zero -- every n-variable is replaced by sums of a-,o-, and c-variables: subs1 := subs0%(rel74+rel52+zeroovars); -- the updated relations: relPfaf := mingens substitute(rel4,subs1); -- relPfaf are the quadratic relations among the a-variables -- in case "1111" and "22" these are pfaffians of 4x4 matrices, hence the name rel6a := mingens substitute(rel6,subs1); rel74a:= mingens substitute(rel74,subs1); -- the remaining relations relLin := mingens ideal (rel74a|rel6a); d1'sub1 := sub(d1',subs1); d2sub1 := sub(d2n,subs1); restavars := mingens ideal d1'sub1^{0..3}_{0..5}; csub1 := d1'sub1^{0..3}_{18..25}; restcvars := gens ideal select(support csub1, c -> degree(c) == {4} ); -- the polynomial ring of the remaining variables: SRfin := kk[(entries (restavars | restcvars | restovars))_0, x0,x1,y0,y1,y2,y3, Degrees=>{numcols restavars:2,numcols restcvars:4,numcols restovars:2,2:2,4:3}]; relLinfin := sub(relLin,SRfin); relPfaffin := sub(relPfaf,SRfin); d1'fin := sub(d1'sub1,SRfin); d2fin := sub(d2sub1,SRfin); (relLinfin,relPfaffin,d1'fin,d2fin)) TEST /// kk = QQ s = "1111"; (A,B,subs0) = globalVariables(kk,s); SR = ring A; D = complexModuloRegularSequence(SR,s); (d1',d2) = setupGeneralMatrices(D,A,B); elapsedTime (relLin,relPfaf,d1'n,d2n) = getRelationsAndNormalForm(d1',d2,subs0); /// getAMatrix=method() getAMatrix(Matrix) := (A) ->( -- input: A is either the 7x26 matrix (d1') or the 8x26 matrix (d1) -- output: the a-matrix if numrows(A) == 8 then amatrix := A^{1..4}_{0..5} else amatrix = A^{0..3}_{0..5}; amatrix) getEMatrix=method() getEMatrix(Matrix) := (A) ->( -- input: A is either the 7x26 matrix (d1') or the 8x26 matrix (d1) -- output: the e-matrix if numrows(A) == 8 then ematrix := A^{5..7}_{6..17} else ematrix = A^{4..6}_{6..17}; ematrix) ---------------------------------------------------------------- setupSkewMatrices=method() setupSkewMatrices(Matrix,String) := (relPfaf,string) ->( -- the function represents the quadratic relations by skew-symmetric 4x4-matrices -- the case "31" has not been treated so far if (string != "4" and string != "22" and string != "1111" and string != "211") then error "input string is not valid"; if string == "1111" then (return setupSkewMatrices1111(relPfaf)); if string == "22" then (return setupSkewMatrices22(relPfaf)); if string == "211" then (return setupSkewMatrices211(relPfaf)); return null); setupSkewMatrices1111=method() setupSkewMatrices1111(Matrix) := (relPfaf) ->( SR := ring relPfaf; a001 := (gens SR)_0; a002 := (gens SR)_1; a003 := (gens SR)_2; a101 := (gens SR)_3; a112 := (gens SR)_4; a113 := (gens SR)_5; a202 := (gens SR)_6; a212 := (gens SR)_7; a223 := (gens SR)_8; a303 := (gens SR)_9; a313 := (gens SR)_10; a323 := (gens SR)_11; Ms :={matrix {{ 0, a113, -a323, -a223}, {-a113, 0, a212, a313}, { a323,-a212, 0 , a112}, { a223,-a313, -a112, 0 }}, matrix {{ 0 , a003, -a223, -a323}, {-a003, 0 , a303, a202}, { a223,-a303, 0 , a002}, { a323,-a202, -a002, 0 }}, matrix {{ 0 , a113, a003, a303}, {-a113, 0 , a313, a001}, {-a003,-a313, 0 , a101}, {-a303,-a001, -a101, 0 }}, matrix {{ 0 , a001, a101, a202}, {-a001, 0 , a212, a112}, {-a101,-a212, 0 , a002}, {-a202,-a112, -a002, 0 }}}; pfaffrel := pfaffians(4,Ms_0)+ pfaffians(4,Ms_1)+pfaffians(4,Ms_2)+pfaffians(4,Ms_3); relfromconstr := ideal(relPfaf); if (pfaffrel != relfromconstr) then error "wrong set-up for the skew-symmetric matrices"; Ms) setupSkewMatrices22=method() setupSkewMatrices22(Matrix) := (relPfaf) ->( SR := ring(relPfaf); kk := coefficientRing(SR); a213 := (gens SR)_0; a203 := (gens SR)_1; a222 := (gens SR)_2; a313 := (gens SR)_3; a303 := (gens SR)_4; a322 := (gens SR)_5; a013 := (gens SR)_6; a012 := (gens SR)_7; a000 := (gens SR)_8; a113 := (gens SR)_9; a112 := (gens SR)_10; a100 := (gens SR)_11; Ms :={matrix {{ 0 , a012, a203, -a222}, {-a012, 0 , a303, a322}, {-a203,-a303, 0 , a012}, { a222,-a322, -a012, 0 }}, matrix {{ 0 ,2*a012,-a213, a222}, {-2*a012, 0 , a313, a322}, { a213, -a313, 0 , a112}, { -a222, -a322,-a112, 0 }}, matrix {{ 0 , 2*a203, -a000, a013}, {-2*a203, 0 , a100, a113}, { a000, -a100 , 0 , a303}, { -a013, a113, -a303, 0 }}, matrix {{ 0 , a203, a000, -a012}, {-a203, 0 , a100, a112}, {-a000, -a100, 0 , a203}, { a012, -a112, -a203, 0 }}}; pfaffrel := pfaffians(4,Ms_0)+ pfaffians(4,Ms_1)+pfaffians(4,Ms_2)+pfaffians(4,Ms_3); relfromconstr := ideal(relPfaf); --if ( pfaffrel != relfromconstr) then error "wrong set-up for the skew-symmetric matrices"; Ms) setupSkewMatrices211=method() setupSkewMatrices211(Matrix) := (relPfaf) ->( SR := ring relPfaf; a003 := (gens SR)_0; a002 := (gens SR)_1; a001 := (gens SR)_2; a113 := (gens SR)_3; a112 := (gens SR)_4; a101 := (gens SR)_5; a213 := (gens SR)_6; a203 := (gens SR)_7; a222 := (gens SR)_8; a313 := (gens SR)_9; a303 := (gens SR)_10; a322 := (gens SR)_11; Ms :={matrix {{ 0 , a112, -a222, a322}, {-a112, 0 , a213, a313}, { a222, -a213, 0 , a112}, {-a322, -a313, -a112, 0 }}, matrix {{ 0 , -a002, -a222, a203}, { a002, 0 , a322, a303}, { a222, -a322, 0 , a002}, {-a203, -a303, -a002, 0 }}, matrix {{ 0 , a001, a101, a203}, {-a001, 0 , a213, a112}, {-a101, -a213, 0, a002}, {-a203, -a112, -a002, 0 }}}; pfaffrel := pfaffians(4,Ms_0)+ pfaffians(4,Ms_1)+pfaffians(4,Ms_2); relfromconstr := ideal(relPfaf); -- only 3 of the 4 quadratic relations are Pfaffians if (isSubset(pfaffrel,relfromconstr) != true) then error "wrong set-up for the skew-symmetric matrices"; Ms) -------------------------------------------------------------------- -- summarizing the individual procedures for the general set-up of the construction setupGodeaux=method() setupGodeaux(Ring,String) := (kk,s) ->( -- input: kk, a field, the case ZZ needs a fix -- s, string, describing a partition of 4 -- output: relLin: the relations relations linear in the o- and c-variables with a-variables as coefficients -- relPfaf: the quadratic relations in the a-variables -- d1'n,d2n: the normal forms of the Ansatz matrices -- Ms: list containing the skew-symmetric matrices representing the Pfaffians (A,B,subs0) := globalVariables(kk,s); SR := ring A; D := complexModuloRegularSequence(SR,s); Fs := setupGeneralMatrices(D,A,B); d1':= Fs#0; d2 := Fs#1; (relLin,relPfaf,d1'n,d2n) := getRelationsAndNormalForm(d1',d2,subs0); Ms := setupSkewMatrices(relPfaf,s); (relLin,relPfaf,d1'n,d2n,Ms)) TEST /// kk = QQ; s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); /// ---------------------------------------------------------------------------------- ------------------- Determine the single special loci----------------------------- ---------------------------------------------------------------------------------- lowerRankLociA = method() lowerRankLociA(Matrix,Matrix) := (d1',relPfaf) -> ( -- Input: d1': the first Ansatz matrix -- relPfaf: the quadratic (Pfaffian) relations -- Output: the loci where the rank of the a-matrix drops amat := getAMatrix(d1'); min4 := minors(4,amat); lociAMat := decompose (min4+ ideal(relPfaf)); lociAMat) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); lociAMat = lowerRankLociA(d1'nor,relPfaf); tally apply(lociAMat, c->betti c) /// lowerRankLociA(Matrix,Matrix,Ring) := (d1',relPfaf,Sa) -> ( SR := ring(d1'); amat := getAMatrix(d1'); min4 := minors(4,amat); vars1 := map(Sa,SR,flatten apply(numgens SR,i->{SR_i => if i<12 then Sa_i else 0_Sa})); lociInP11 := vars1(min4+ideal(relPfaf)); assert(isHomogeneous(lociInP11)); lociAMat := decompose lociInP11; lociAMat) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf); lociAMat = lowerRankLociA(d1',relPfaf,Sa); tally apply(lociAMat, c->betti c) /// lowerRankLociE = method() lowerRankLociE(Matrix,Matrix) := (d1',relPfaf) -> ( -- input: d1': the first Ansatz matrix -- relPfaf: the quadratic (Pfaffian) relations -- output: the loci where the rank of the e-matrix drops emat := getEMatrix(d1'); min3 := minors(3,emat); lociEMat := decompose (min3+ ideal(relPfaf)); lociEMat) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); lociEMat = lowerRankLociE(d1',relPfaf); tally apply(lociEMat, c->betti c) /// singularLocusQ = method() singularLocusQ(Matrix) := (relPfaf) ->( -- input: relPfaf: matrix containing the Pfaffian relations -- output: the minimal primes of the singular locus of the Pfaffians SR := ring(relPfaf); kk := coefficientRing(SR); Sa := kk[support relPfaf]; iQ := sub(ideal relPfaf,Sa); jacQ := jacobian(iQ); singQ := minors(codim iQ,jacQ)+iQ; singLocustmp := decompose singQ; singLocus := apply(singLocustmp,c-> sub(c,SR)); singLocus) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); singLocus = singularLocusQ(relPfaf); /// homologyLocus = method() homologyLocus(Matrix,Matrix) := (relLin,relPfaf) ->( -- input: relLin: a row matrix containing all relations which are linear in the c- -- and o-variables -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations --output: homLociUnique: a list containing the prime ideals in the support of the homology -- of the two chain complexes C1 and C2 fromt the procedure getChainComplexes SR:= ring relLin; solutionMat := (solutionMatrix(relLin))_0; (C1,C2) := getChainComplexes(relLin,relPfaf); homC2 := apply(4,i-> sub(ann HH_i(C2),SR)); homC1 := apply(4,i-> sub(ann HH_i(C1),SR)); homLoci1 := flatten apply(homC1,c-> decompose(c+ideal(relPfaf))); homLoci2 := flatten apply(homC2,c-> decompose(c+ideal(relPfaf))); homLoci := mingle(homLoci1,homLoci2); indUnique := apply(unique apply(# homLoci,i-> positions(homLoci,j -> j == homLoci_i)),c-> first c); homLociUnique := homLoci_indUnique; homLociUnique) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); homLocus = homologyLocus(relLin,relPfaf); /// lowerRankLociL2 = method() lowerRankLociL2(Matrix,Matrix) := (relLin,relPfaf) ->( ambring := ring relLin; solutionMat := (solutionMatrix(relLin))_0; C2 := (getChainComplexes(relLin,relPfaf))_1; im2x20 := ideal(transpose C2.dd_3); lociL2 := decompose (ideal(relPfaf)+sub(im2x20,ambring)); lociL2) zeroColumnA = method() zeroColumnA(Matrix,Matrix) := (d1',relPfaf)->( -- input: d1': the first syzygy matrix in normal form without the first row -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations --output: lociCol: computes all loci where the a-matrix of d1' has at least one zero column aMat := getAMatrix(d1'); loci1Col := flatten apply(6,i-> decompose(ideal(aMat_{i})+ideal(relPfaf))); indUnique := apply(unique apply(# loci1Col,i-> positions(loci1Col,j-> j == loci1Col_i)),c-> first c); lociCol := loci1Col_indUnique; lociCol) allLoci = method() allLoci(Matrix,Matrix,Matrix) := (d1',relLin,relPfaf) ->( -- input: d1': the first syzygy matrix in normal form without the first row -- relLin, a matrix, a row matrix containing all relations which are linear in the c- -- and o-variables -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: lociUnique: a list of all exceptional loci lociAMat := lowerRankLociA(d1',relPfaf); lociEMat := lowerRankLociE(d1',relPfaf); homLoci := homologyLocus(relLin,relPfaf); --lociL2 := lowerRankLociL2(relLin,relPfaf); --lociColA := zeroColumnA(d1',relPfaf); --loci := mingle(lociAMat,lociEMat,lociColA,homLoci,lociL2); loci := mingle(lociAMat,lociEMat,homLoci); indUnique := apply(unique apply(# loci,i-> positions(loci,j -> j == loci_i)),c-> first c); lociUnique := loci_indUnique; lociUnique) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); loci= allLoci(d1',relLin,relPfaf); /// allLociTors0 = method() allLociTors0(Matrix,List) := (d1',loci) ->( -- input: d1': the first syzygy matrix in normal form without the first row -- loci: the list of all exceptional loci from the procedure allLoci -- output: lociTors0: a list of all exceptional locus for torsion-free Godeaux surfaces eMat := getEMatrix(d1'); lociTors0 := select(loci,c-> rank (eMat % c) == 3); lociTors0) TEST /// kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); loci = allLoci(d1',relLin,relPfaf); lociTors0= allLociTors0(d1',loci); /// ------------------------------------------------------------------------------------------------------------------------------------ ------------------------ Main Procedures of the construction ----------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------ getP11 = method() getP11(Matrix) := (relPfaf) ->( ambring := ring relPfaf; kk := coefficientRing(ambring); Sa := kk[support relPfaf]; Sa) randomPoint=method() randomPoint(Ideal,Ring) := (I,Sa)->( ambring := ring(I); I1 := sub(I,Sa); k := codim (I1); if dim(I1) < 1 then error "vanishing locus of I is empty"; na := dim(Sa)-1; while ( while ( lin1 := ideal random(Sa^{1:0},Sa^{na-k:-1}); I2 := trim(I1+lin1); not dim(I2) == 1) do(); pointsI2 := select(decompose I2,c-> dim(c) == 1 and degree(c) == 1); not length pointsI2 > 0) do(); point := last pointsI2; sub(point,ambring)) randomPoint(Ideal) := (I)->( Sa := ring I; k := codim (I); if dim(I) < 1 then error "vanishing locus of I is empty"; na := dim(Sa)-1; while ( while ( lin1 := ideal random(Sa^{1:0},Sa^{na-k:-1}); I2 := trim(I+lin1); not dim(I2) == 1) do(); pointsI2 := select(decompose I2,c-> dim(c) == 1 and degree(c) == 1); not length pointsI2 > 0) do(); point := last pointsI2; point) randomPoint(Ideal,List) := (I,Ms)->( as := mingens (ideal Ms_0+ideal Ms_1+ideal Ms_2 + ideal Ms_3); SR := ring(as); rd := 0; kk := coefficientRing(SR); pfafrel := sum apply(Ms,m->pfaffians(4,m)); if isSubset(I,pfafrel) then ( while (J:=mingens sum (apply(Ms,M->( while (rd=random(SR^1,SR^4); rd ==0 ) do(); ideal (rd*M)))); not rank source J ==11) do(); pt1 := ideal sub(J,SR);) else ( Sa := kk[(entries as)_0]; Ia := sub(I,Sa); Msa := select(apply(Ms,m->sub(m,Sa)%Ia),m->rank m == 4); i := 0; IJ := Ia; while (dim IJ > 3 and i < length(Msa)) do( J = mingens (while (rd=random(Sa^1,Sa^4); rd ==0 ) do(); ideal (rd*Msa_i)); IJ = trim(IJ+ideal(J)); i= i+1); na := 11 - codim IJ; while ( points := trim (IJ + ideal(random(Sa^{1:0},Sa^{na:-1}))); cpoints := select(decompose points,c-> dim(c) ==1 and degree(c)==1); not length(cpoints) > 0) do(); pt1 = sub(last cpoints,SR)); pt1) randomLine = method() -- Input: an ideal defining a point in the complete intersection of the Pfaffians and a list containing -- four skew-symmetric matrices which define the Pfaffian relations -- Output: a random line through the given point and contained in the Pfaffian variety randomLine(Ideal,Matrix,Ring) := (point1,relPfaf,Sa) ->( SR := ring(point1); kk := coefficientRing(SR); numvars := numgens(SR); x0 := SR_(numvars-6); x1 := SR_(numvars-5); point1coord := syz transpose jacobian sub(point1,Sa); Q := sub(ideal relPfaf,Sa); jacQ := jacobian Q; varsa := vars Sa; tangentQPt1 := ideal (varsa* sub(jacQ,transpose point1coord)); linspace := varsa % ideal mingens tangentQPt1; Sa1 := kk[support linspace]; linspace1 := sub(linspace,Sa1); relPfaf1 := ideal mingens sub(Q,linspace1); pt2tmp := randomPoint(relPfaf1,Sa1); phi1 := map(Sa1,Sa,linspace1); point2 := ideal mingens preimage(phi1,pt2tmp); point2coord := syz transpose jacobian point2; randline := sub((point1coord|point2coord),SR); aaline :=ideal(sub(varsa,SR)-transpose ( randline*matrix{{x0},{x1}})); subsLine := vars SR % aaline; (randline,subsLine)) randomLine(Ideal,Ideal,Matrix,Ring) := (point1,J,relPfaf,Sa) ->( SR := ring(point1); kk := coefficientRing(SR); numvars := numgens(SR); x0 := SR_(numvars-6); x1 := SR_(numvars-5); Ja := sub(J,Sa); point1coord := syz transpose jacobian sub(point1,Sa); Q := sub(ideal relPfaf,Sa); jacQ := jacobian Q; varsa := vars Sa; tangentQPt1 := ideal (varsa* sub(jacQ,transpose point1coord)); linspace := varsa % ideal mingens tangentQPt1; Sa1 := kk[support linspace]; linspace1 := sub(linspace,Sa1); relPfaf1 := ideal mingens sub(Q,linspace1); J1 := sub(Ja,linspace1); pt2tmp := randomPoint(relPfaf1+J1,Sa1); phi1 := map(Sa1,Sa,linspace1); point2 := ideal mingens preimage(phi1,pt2tmp); point2coord := syz transpose jacobian point2; randline := sub((point1coord|point2coord),SR); aaline :=ideal(sub(varsa,SR)-transpose (randline*matrix{{x0},{x1}})); subsLine := vars SR % aaline; (randline,subsLine)) tangentSpacePoint = method() tangentSpacePoint(Ideal,Ideal,Matrix) := (point1,J,relPfaf)->( -- input: point1: an ideal defining a point in the complete intersection Q in P^11 -- J: an ideal defining a subscheme of P11 -- relPfaf: a row matrix containing the quadratic relations defining Q --output: Z: an ideal defining the intersection of Q and V(J) considered as a subscheme -- of the tangent space of Q at point1 which is isomorphic to a P^k -- phi1: a polynomial map from the coordinate ring of the P^11 to the coordinate ring -- of the tangent space corresponding to the linear projection ambring := ring(point1); kk := coefficientRing(ambring); if numgens(ambring) < 17 then Sa := ambring else Sa = kk[support relPfaf]; Ja := sub(J,Sa); point1coord := syz transpose jacobian sub(point1,Sa); Q := sub(ideal relPfaf,Sa); jacQ := jacobian Q; varsa := vars Sa; tangentQPt1 := ideal (varsa* sub(jacQ,transpose point1coord)); linspace := varsa % ideal mingens tangentQPt1; Sa1 := kk[support linspace]; linspace1 := sub(linspace,Sa1); relPfaf1 := ideal mingens sub(Q,linspace1); J1 := sub(Ja,linspace1); Z := trim(J1+relPfaf1); phi1 := map(Sa1,Sa,linspace1); (Z,phi1)) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); lociE = lowerRankLociE(d1',relPfaf); lociEP3 = select(lociE,c-> codim c == 8); comp0 = first lociEP3; comp1 = last lociEP3; Sa := getP11(relPfaf); point1 = randomPoint(comp0,Sa); (Z,phi) = tangentSpacePoint(point1,relPfaf); (Z1,phi1) = tangentSpacePoint(sub(point1,Sa),comp1,relPfaf); (betti Z,betti Z1) /// tangentSpacePoint(Ideal,Matrix) := (point1,relPfaf)->( -- input: point1: an ideal defining a point in the complete intersection Q in P^11 -- relPfaf: a row matrix containing the quadratic relations defining Q --output: Z: an ideal describing Q as a subscheme of the tangent space of Q at point1 -- which is isomorphic to a P^k -- phi1: a polynomial map from the coordinate ring of the P^11 to the coordinate ring -- of the tangent space corresponding to the linear projection ambring := ring(point1); kk := coefficientRing(ambring); Sa := kk[support relPfaf]; point1coord := syz transpose jacobian sub(point1,Sa); Q := sub(ideal relPfaf,Sa); jacQ := jacobian Q; varsa := vars Sa; tangentQPt1 := ideal (varsa* sub(jacQ,transpose point1coord)); linSpace := varsa % ideal mingens tangentQPt1; Sa1 := kk[support linSpace]; linSpace1 := sub(linSpace,Sa1); relPfaf1 := ideal mingens sub(Q,linSpace1); Z := trim(relPfaf1); phi1 := map(Sa1,Sa,linSpace1); (Z,phi1)) ------------------------------------------------------------------- ------------Procedures for the single solution matrices ----------- ------------------------------------------------------------------- solutionMatrix=method() solutionMatrix(Matrix) := (relLin)->( -- Input: relLin: a matrix containing the relations linear in the c- and o-variables -- Output: solutionMat: a matrix representing these relations of the form -- | 0 l1 | -- | l2 q | where the entries l1,l2 are linear in the a-variables and -- the entries of q are quadratic in -- restVars: a row matrix containing the unknown c- and o-variables SR := ring relLin; kk:= coefficientRing(SR); nvars := numgens SR; allRestVars := (vars SR)_{0..nvars-7}; restVarsDeg4 := matrix {select(flatten entries allRestVars,c->degree(c)=={4})}; restVarsDeg4Ind := select(numcols allRestVars,i->degree(allRestVars_i)=={4}); restVarsDeg2 := matrix {select(flatten entries allRestVars,c->degree(c)=={2})}; restVarsO := restVarsDeg2_{min restVarsDeg4Ind..numcols restVarsDeg2-1}; restVars:= map(SR^{1:0},,(restVarsDeg4 | restVarsO)); solutionMat := diff(restVars, transpose relLin); (solutionMat,restVars)) getChainComplexes = method() getChainComplexes(Matrix,Matrix) := (relLin,relPfaf) ->( -- input: relLin: a matrix containing the relations linear in the c- and o-variables -- relPfaf: a matrix containing the quadratic (Pfaffian) relations -- output: C1, a chain complex resolving the solution matrix l1 in both directions -- over the coordinate ring of the quadratic relations -- C2, a chain complex resolving the solution matrix l2 in both directions -- over the coordinate ring of the quadratic relations S_Q -- Note: Quite surprisingly, over the non-regular ring S_Q the resolution of l1 and l2 -- is finite in both directions. (ma,l1,l2) := singleSolutionMatricesOverP11(relLin); Sa := ring(ma); iQ := sub(ideal relPfaf,Sa); SQ:=Sa/iQ; betti (m20x2:=syz(l2**SQ)); -- assert(syz m20x2 == 0); betti (m12x30:=transpose syz( transpose l2**SQ)); C2:=chainComplex(m12x30,l2**SQ,m20x2); m4x12:= transpose (syz transpose l1)**SQ; m12x4:= syz(l1**SQ); C1:=chainComplex(m4x12,l1**SQ,m12x4); (C1,C2)) singleSolutionMatricesOverP11 = method() singleSolutionMatricesOverP11(Matrix) := (relLin) ->( -- input: relLin: a matrix containing the relations linear in the c- and o-variables -- output: (ma,l1,l2) -- ma:= the solution matrix from the procedure solutionMatrix considered over the P11 -- of a-variables -- l1,l2: the two-submatrices of ma which are linear in the a-variables SR := ring(relLin); kk := coefficientRing(SR); numRelDeg4 := length select(flatten entries relLin, c-> degree(c) =={4}); numRelDeg6 := length select(flatten entries relLin, c-> degree(c) =={6}); (solutionMat,restVars) := solutionMatrix(relLin); numVarsDeg4 := length select(flatten entries restVars, c-> degree(c) =={4}); numVarsDeg2 := length select(flatten entries restVars, c-> degree(c) =={2}); numVarsOC := numcols restVars; numVars := numgens SR; aVars := (vars SR)_{0..numVars-numVarsOC-7}; Sa := kk[support aVars]; ma := map(Sa^{numRelDeg4:2,numRelDeg6:3},Sa^{numVarsDeg4:2,numVarsDeg2:1},sub(solutionMat,Sa)); l1 := ma^{0..numRelDeg4-1}_{numVarsDeg4..numVarsDeg4+numVarsDeg2-1}; l2 := ma^{numRelDeg4..numRelDeg4+numRelDeg6-1}_{0..numVarsDeg4-1}; (ma,l1,l2)) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (ma,l1,l2) = singleSolutionMatricesOverP11(relLin); /// singleSolutionMatricesLine = method() singleSolutionMatricesLine(Matrix,Matrix) := (relLin,subsLine) ->( -- input: relLin: a matrix containing the relations linear in the c- and o-variables -- subsLine: row matrix containing the variables of the normalized set-up with the -- a-variables being replaced by the assginments from the chosen line -- output: (solMatLine,l1Line,l2Line): -- the solution matrices considered over P1 after substituting the $a$-variables -- with the assignments from the chosen line ambring := ring(subsLine); (solMat,l1,l2) := singleSolutionMatricesOverP11(relLin); n1 := length support l1; kk := coefficientRing(ambring); nvars := numgens ambring; x0 := ambring_(nvars - 6); x1 := ambring_(nvars - 5); P1 := kk[x0,x1]; numRelDeg4 := numrows l1; numRelDeg6 := numrows l2; numVarsDeg4:= numcols l2; numVarsDeg2 := numcols l1; solMatLine := map(P1^{numRelDeg4:2,numRelDeg6:3},P1^{numVarsDeg4:2,numVarsDeg2:1}, sub(sub(solMat,subsLine_{0..n1-1}),P1)); l1Line := map(P1^{numRelDeg4:2},P1^{numVarsDeg2:1},sub(sub(l1,subsLine_{0..n1-1}),P1)); l2Line := map(P1^{numRelDeg6:3},P1^{numVarsDeg4:2},sub(sub(l2,subsLine_{0..n1-1}),P1)); (solMatLine,l1Line,l2Line)) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTors0(d1',relPfaf); (maLine,l1Line,l2Line) = singleSolutionMatricesLine(relLin,subsLine); /// jacobianQ = method() jacobianQ(Matrix) := relPfaf ->( -- input: relPfaf: row matrix containing the quadratic (Pfaffian) relations -- ouput: jacQ: the Jacobian matrix of the ideal Q defined by the quadratic relations ambring := ring(relPfaf); kk := coefficientRing(ambring); Sa:=kk[support relPfaf]; iQ := sub(ideal relPfaf,Sa); jacQ := jacobian iQ; sub(jacQ,ambring)) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); jacQ = jacobianQ(relPfaf); /// normalBundleLineInQ = method() normalBundleLineInQ(Matrix,Matrix) := (subsLine,relPfaf) ->( -- input: subsLine: row matrix containing the variables of the normalized set-up with the -- a-variables being replaced by the assginments from the chosen line -- relPfaf: row matrix containing the quadratic (Pfaffian) relations -- ouput: normalBundle: the normal bundle of the line in Q ambring := ring(relPfaf); jacLine := jacobianLine(subsLine,relPfaf); P1 := ring jacLine; Sa := getP11(relPfaf); nvars := numgens ambring; x0 := ambring_(nvars - 6); x1 := ambring_(nvars - 5); line := transpose contract(transpose matrix{{x0,x1}},subsLine_{0..11}); syzJacL := syz jacLine; m := mingens image (syzJacL % map(target syzJacL,,sub(line,P1))); normalBundle := sheaf source m; normalBundle) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTors0(d1',relPfaf,Ms,0); normalBundle = normalBundleLineInQ(subsLine,relPfaf); /// ------------------------------------------------------------------------------------------ randomSection=method() -- Input: solutionMat: the solution matrix from the procedure solutionMatrix -- restVars: a row matrix containing the unknown c- and o-variables -- subsLine: row matrix containing the variables of the normalized set-up with the -- a-variables being replaced by the assignments from the procedure randomLine -- Output: randPoint: a random point in a kk^n isomorphic to the solution space -- subsPoint: row matrix containing the variables of the normalized set-up with -- all unknwon variables replaced by a possible assignment -- Note: the entries of subsPoint should now only depend on the variables x_0,x_1,y_0..y_3 randomSection(Matrix,Matrix,Matrix) := (solutionMat,restVars,subsLine) ->( SR := ring solutionMat; kk:= coefficientRing(SR); nvars := numgens SR; solutionMatLine := sub(solutionMat,subsLine); x0 := (gens SR)_(nvars-6); x1 := (gens SR)_(nvars-5); P1 := kk[x0,x1]; n2 := length select( (entries restVars)_0,c-> degree(c)=={2}); n4 := length select( (entries restVars)_0,c-> degree(c)=={4}); solutionSpaceTmp := map(P1^{n4:2,n2:1},,sub(syz(solutionMatLine,DegreeLimit=>{0}),P1)); if (isHomogeneous(solutionSpaceTmp) == false) then error "the solution matrix is not homogeneous"; -- the solution space is isomorphic to a kk^n solutionSpace := solutionSpaceTmp*basis(0,source solutionSpaceTmp); -- choose a random point in the solution space if char(kk) == 0 then randPoint := sub(randomIntegerMatrix(numcols solutionSpace,1,Height=>19),SR) else randPoint = sub(random(source solutionSpace,P1^1),SR); -- compute the corresponding solution section := restVars-transpose ( sub(solutionSpace,SR)*randPoint); subsPoint := subsLine%ideal section; mSubsPoint := ideal mingens ideal subsPoint; if (numgens mSubsPoint != 6) then error "not all variables have been assigned"; (randPoint,subsPoint)) TEST /// kk = ZZ/23; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf); point1 = randomPoint(ideal relPfaf,Sa); (randLine,subsLine) = randomLine(point1,relPfaf,Sa); randLine (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); randPoint /// ----------------------------------------------------------------------------------- ----------------------------------------------------------------------------------- -------- Models of the Fano variety of lines F(Q) and its quotients --------------- ----------------------------------------------------------------------------------- ----------------------------------------------------------------------------------- precomputedModelInP3xP3xP3xP3=method() precomputedModelInP3xP3xP3xP3(Ring) := kk -> ( degs12 := {{1, 0, 0, 0, 0, 1, 2, 0}, {1, 0, 0, 0, 1, 2, 0, 0}, {1, 0, 0, 0, 2, 0, 1, 0}, {1, 0, 0, 0, 1, 1, 1, 0}, {0, 1, 0, 0, 0, 1, 0, 2}, {0, 1, 0, 0, 1, 2, 0, 0}, {0, 1, 0, 0, 1, 1, 0, 1}, {0, 1, 0, 0, 2, 0, 0, 1}, {0, 0, 1, 0, 0, 0, 2, 1}, {0, 0, 1, 0, 1, 0, 0, 2}, {0, 0, 1, 0, 1, 0, 1, 1}, {0, 0, 1, 0, 2, 0, 1, 0}, {0, 0, 0, 1, 0, 2, 1, 0}, {0, 0, 0, 1, 0, 1, 0, 2}, {0, 0, 0, 1, 0, 1, 1, 1}, {0, 0, 0, 1, 0, 0, 2, 1}}; b := symbol b; Bgraded:=kk[b_(0,0)..b_(3,3),Degrees=>degs12]; I1 := ideal(b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)+b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2 ,2)*b_(3,0)*b_(3,1)+b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,3)*b_(1,2)*b_(1,3)*b_(2 ,2)^2*b_(3,0)*b_(3,1)+b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,3)*b_(1,0 )*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^2+ 2*b_(0,0)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0 )*b_(3,2)+b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,2)*b_(1,0)*b_(1,2)*b _(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0, 2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3, 2)-b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-2*b_(0,0)*b_(1,1)*b_(1,3)*b_(2,1 )*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)*b _(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2+b _(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b _(3,3)+b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)*b_(1,0)*b_(1,3)*b_(2, 1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)*b_(1,1 )*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)- b_(0,1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,1)* b_(3,3)-b_(0,2)*b_(1,1)^2*b_(2,1)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)* b_(3,2)*b_(3,3),b_(0,0)*b_(0,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1 ,3)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)^2*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)^2*b_(1,0)* b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0 ,3)^2*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3 ,2)+b_(0,0)*b_(0,3)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(2,0)*b_(2,3 )*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)* b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,3)^2* b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,0)* b_(0,3)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(2,1)*b_(2,3)*b_(3,2)^2+ b_(0,0)*b_(0,2)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(2,1)*b_(2,2)*b _(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1, 3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+2*b_(0,0)*b_(0,2)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3 )+b_(0,0)*b_(0,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(2,0)*b_(2,3)* b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1 ,2)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)- 2*b_(0,0)*b_(0,2)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,3)*b_(2,1)*b_(2,2)* b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,0)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b _(2,1)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)-b_(0,3)*b_(1,3)^2 *b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(1,0 )*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b _(3,2)+b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1)*b _(3,0)*b_(3,3)-b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(1,2)*b_(1, 3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0 )*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)* b_(3,3)+b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,3)*b_(1,1)*b_(1,3)*b_(2 ,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,2)*b_(1,0 )*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)- b_(0,0)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b _(3,2)*b_(3,3)+b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(1,1)*b_(1, 3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+2*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3 )+b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,3)*b_(1,0)^2*b_(2,3)^2*b_(3,2 )*b_(3,3)+b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)^2+2*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2 )*b_(2,3)*b_(3,3)^2+2*b_(0,1)*b_(1,0)^2*b_(2,3)^2*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0 )*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,3)^ 2*b_(2,0)*b_(3,0)*b_(3,1)-2*b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)*b_(3,0)*b_(3,1)+2*b_(0,0)*b_(0 ,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,3)*b_(3,0)* b_(3,1)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,1)*b_(1,3)*b _(2,3)*b_(3,1)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_( 1,2)^2*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0, 2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(3,1 )*b_(3,2)+2*b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)*b_(3,1)*b_(3,2)-2*b_(0,0)*b_(0,3)*b_(1,1 )*b_(1,3)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,3)*b_(3,1)*b_(3,2)-b _(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_( 3,2)^2+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1, 3)*b_(2,1)*b_(3,0)*b_(3,3)+2*b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1 )*b_(0,2)*b_(1,0)^2*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(3,1)* b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)^2*b _(2,1)*b_(3,1)*b_(3,3)-2*b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_( 0,1)*b_(1,2)^2*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(3,2)*b_(3, 3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,3 )*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,0)*b_(1,3 )*b_(2,0)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b _(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(3, 1)^2-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_( 3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0 )*b_(1,1)*b_(2,0)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(3,1)*b_(3,2)+b _(0,0)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_( 3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1, 1)*b_(2,1)*b_(3,2)^2-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2 )*b_(1,0)^2*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(3,1)*b_(3,3)+ b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)*b _(3,1)*b_(3,3)+2*b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b _(1,3)*b_(2,0)*b_(3,2)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,1)*b_( 0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(3,2)*b_(3,3)-2*b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,3)*b_(3,2)*b_( 3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(3,3)^2-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_( 3,3)^2-2*b_(0,1)^2*b_(1,0)^2*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3, 0)^2+b_(0,1)*b_(1,3)^2*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b _(3,1)-2*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(1,2)*b_(1,3)*b_( 2,2)^2*b_(3,0)*b_(3,1)+b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-2*b_(0,3)*b_( 1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0 )*b_(3,1)+b_(0,0)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1 )*b_(3,0)*b_(3,2)+2*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,0)*b_(1,2)* b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3 ,2)-b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+2*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0 )*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,2)*b_(1,0)* b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2-2* b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b _(3,2)^2-b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b _(2,1)*b_(3,0)*b_(3,3)+b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)*b_(1, 1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b _(3,3)-b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-2*b_(0,3)*b_(1,0)*b_(1,1)*b_( 2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1 )*b_(1,0)^2*b_(2,3)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)^2,2*b _(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)^2-b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_( 3,0)^2+b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(1,1)*b_(1,3)*b_(2,0)*b_( 2,1)*b_(3,0)*b_(3,1)-b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(1,2)^2*b_( 2,2)^2*b_(3,0)*b_(3,1)-b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(1, 0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-2*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0 )*b_(3,2)+b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)* b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(1,0)*b _(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3, 2)-b_(0,0)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3 )*b_(3,1)*b_(3,2)-b_(0,0)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,3)*b_(1,1)*b _(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)*b _(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b _(0,0)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_( 3,0)*b_(3,3)-b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)-b_(0,1)*b_(1,0)^2*b_(2,2)*b_( 2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(1,1 )^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)- b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(1,1)^2*b_(2,1)^2*b_(3,2)* b_(3,3),b_(0,2)^2*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,3)*b_(2,0)*b_(2,1)* b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,3)*b_(2,0)* b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0 ,3)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2 )-b_(0,1)*b_(0,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)*b_(2,1)*b _(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0, 3)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b _(3,2)+b_(0,1)*b_(0,3)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(2,1)*b_( 2,3)*b_(3,2)^2-b_(0,2)*b_(0,3)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1, 2)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-2*b_(0, 1)*b_(0,2)*b_(1,0)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)*b_(2,0)*b_(2,3)*b _(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,3)*b_(2,0)*b _(2,3)*b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_( 1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+2*b_(0,1)*b_(0,3)*b_(1,0)*b_(2,3)^2*b_(3,2)*b_(3,3)+b_( 0,1)*b_(0,3)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,1)^2*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,3)^2+2 *b_(0,1)^2*b_(1,0)*b_(2,3)^2*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,0)*b_(2,0)*b_(2,1)*b_(3,0)^2-b_( 0,1)*b_(0,2)*b_(1,2)*b_(2,0)^2*b_(3,0)*b_(3,1)+2*b_(0,1)*b_(0,3)*b_(1,3)*b_(2,0)^2*b_(3,0)*b _(3,1)-b_(0,0)*b_(0,2)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,2)*b_(2,0)*b_( 2,2)*b_(3,0)*b_(3,1)-2*b_(0,0)*b_(0,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0, 3)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,0)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0, 0)*b_(0,3)*b_(1,0)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(2,0)*b_(2,3)*b _(3,1)^2-b_(0,0)^2*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)^2+b_(0,3)^2*b_(1,2)*b_(2,0)*b_(2,1)*b_(3, 0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,0)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,2)*b _(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0, 3)^2*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(2,2)^2*b_(3,1)*b_(3, 2)+b_(0,0)*b_(0,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(1,1)*b_(2,1)*b_(2,3 )*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,1)*b_(2,1 )*b_(2,2)*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,2 )*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b _(0,0)*b_(0,1)*b_(1,0)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)*b_(2,0)*b_(2, 2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1 )*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b _(0,1)^2*b_(1,0)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2)^2*b_(1,0)*b_(2,0)*b_(2,1)*b_(3,0)^2 +b_(0,1)*b_(0,2)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)-2*b_(0,2)*b_(0,3)*b_(1,2)*b_(2,0)*b_(2,2 )*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+2*b_(0,0)*b_(0,2)*b_(1,2 )*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3 )*b_(1,0)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,0)*b_(2,2)*b_(2,3)*b_(3,0)*b _(3,1)+2*b_(0,2)*b_(0,3)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,3)*b_(2,0)*b _(2,1)*b_(3,0)*b_(3,2)-2*b_(0,0)*b_(0,2)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_( 0,3)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(2,1)*b_(2,3)*b_(3,0 )*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b _(2,2)^2*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_( 0,3)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,2)^2+2*b _(0,1)*b_(0,2)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,3)*b_(2,0)*b_(2, 1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3 )*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,1)* b_(0,2)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3 ,1)*b_(3,3)-2*b_(0,0)*b_(0,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0 )*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,1)* b_(0,3)*b_(1,0)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(2,2)*b_(2,3)*b_(3,3)^2, b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(3,0)^ 2+2*b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(3,0)*b_(3,1)-2*b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2 ,0)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)* b_(1,2)^2*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)* b_(0,1)*b_(1,3)^2*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)*b_(3,0)*b _(3,1)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_( 2,3)*b_(3,1)^2-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,2)^2*b _(2,1)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_( 1,0)*b_(1,3)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(3,1)*b_(3,2 )-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,3)* b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1 ,1)*b_(1,2)*b_(2,1)*b_(3,2)^2+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(3,2)^2+b_(0,1)*b_(0,3)*b _(1,0)*b_(1,3)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,1)*b _(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)*b_(3, 1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b _(1,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0, 1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,3)*b_(3,2 )*b_(3,3),b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0 )*b_(3,0)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,0)*b_(1,1 )*b_(2,0)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,2 )*b_(1,3)*b_(2,0)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)* b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,3)*b_(3 ,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,3 )*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(3,2)^2+b_(0,3)^2*b_(1,1 )*b_(1,3)*b_(2,0)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,3 )*b_(1,1)*b_(1,3)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,3)*b_(3,2)^2+b_(0,1 )*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(3,0)* b_(3,3)+2*b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b _(1,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0, 0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,2)*b_(3,1 )*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b _(1,2)*b_(2,0)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(3,2)*b_(3,3)-2*b_( 0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)*b_(3, 2)*b_(3,3)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1 )*b_(2,3)*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)-b_(0,1)*b_(0,3)*b_(1,2 )*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)-b_(0,2)* b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2 ,2)*b_(3,0)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3 )*b_(2,1)*b_(2,3)*b_(3,0)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)+b_(0,1)*b_(0,2)* b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3 ,1)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2 )^2*b_(3,1)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,1)* b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,1)-b_(0,0)*b _(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,1)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_( 3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2, 1)^2*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)+b_(0,1)^2*b_(1,0)*b_(1, 3)*b_(2,0)*b_(2,3)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)+b_(0,1)*b_(0,3 )*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,3)^2*b_(3,2)+2*b_(0 ,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)+2*b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2 ,3)*b_(3,3)+2*b_(0,1)^2*b_(1,0)^2*b_(2,3)^2*b_(3,3),2*b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2 ,1)*b_(3,0)-2*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)+b_(0,1)*b_(0,2)*b_(1,2 )*b_(1,3)*b_(2,0)^2*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,1)+b_(0,0)*b_(0,2)*b_(1 ,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,1)+b_(0,3 )^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1 )+b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3 ,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0 )*b_(2,3)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)-b_(0,0)*b_(0,3)*b _(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)+b_( 0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,2)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_( 3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2, 1)*b_(2,2)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)-b_(0,0)*b_(0,2)*b _(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3, 2)+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0 )*b_(2,1)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)* b_(1,1)*b_(2,1)*b_(2,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,3)-b_(0 ,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3 )*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,3),b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,0 )*b_(2,1)*b_(3,0)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)+b_(0,3)^2*b_(1,2)*b_(1,3 )*b_(2,0)*b_(2,1)*b_(3,0)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)+b_(0,0)*b _(0,2)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_( 3,0)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3 )*b_(2,1)*b_(2,3)*b_(3,0)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)+b_(0,3)^2* b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)-b _(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_( 2,3)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)+b_(0,0)^2*b_(1,1)*b_(1, 3)*b_(2,1)*b_(2,3)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)+2*b_(0,2 )*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)-2*b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1 )*b_(3,2)-2*b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)+2*b_(0,0)*b_(0,3)*b_(1,1 )*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)-2*b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)- 2*b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b _(2,0)*b_(2,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,3)+b_(0,0)*b_(0, 2)*b_(1,1)^2*b_(2,1)^2*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,3)-b_(0, 1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3, 3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,3 )^2*b_(3,3),b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2 ,0)^2*b_(3,0)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)-b_(0,2)*b_(0,3)*b_(1,2 )^2*b_(2,0)*b_(2,2)*b_(3,0)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)+b_(0,0)*b_(0,1 )*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)+b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)-b_(0,0)*b_(0 ,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0 )+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)* b_(2,3)*b_(3,0)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)-2*b_(0,0)*b_(0,3)*b _(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)+2*b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)+b _(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,2)-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_( 2,2)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1, 3)*b_(2,2)^2*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,2)-b_(0,0)*b_(0,1 )*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)- b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2 ,0)*b_(2,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,3)+b_(0,0)*b_(0,2)* b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,3)+b_(0,1)* b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2 ,3)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2 )*b_(2,3)^2*b_(3,3),b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,2)^2-b_(0,3)^2*b_(1,3)^2* b_(2,0)^2*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,3 )*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,2)*b_(3 ,3)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2 ,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,3 )^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,2 )*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,2 )*b_(1,3)*b_(2,2)^2*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)* b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b _(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3, 2)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,3)^2-b_(0,1)*b_(0,3)*b_(1,2)*b_(1, 3)*b_(2,0)*b_(2,2)*b_(3,3)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,3)^2+b_(0, 0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,3)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2, 3)*b_(3,3)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1, 0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1 )*b_(3,2)-b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3 )*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,2)*b_(0 ,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(3,2)^2+ b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,1)* b_(2,2)*b_(3,2)^2+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)* b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2 ,2)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,2 )*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,2)^2*b_(3,1 )*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b _(1,3)^2*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,2)*b _(3,3)-b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_( 1,2)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3, 3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3 )*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,1)*b_(3,2)-b_(0,0)^2*b _(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,2)^2 +b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b _(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3, 3)-b_(0,0)^2*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2, 0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1 )*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,2)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)* b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,2)*b_(3,3)-b_(0,2)*b _(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b _(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,3)^2-b_(0,0)*b_(0,2)*b_( 1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,3)^2-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,3)^2,2 *b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)-2*b_(0,3)^2*b_(1,3)^2*b_(2,0)^2*b _(3,1)*b_(3,2)-2*b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+2*b_(0,0)*b _(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)^2*b _(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b _(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_( 3,3)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_( 2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_( 0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2, 3)*b_(3,1)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,2 )*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b _(2,3)*b_(3,1)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,2)*b_( 0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_( 3,2)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2 )*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)* b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0 ,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1 )*b_(3,3)^2-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,3)^2+b_(0,0)*b_(0,2)*b_(1,1 )*b_(1,2)*b_(2,1)^2*b_(3,3)^2+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,3)^2+b_(0 ,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,3)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2 )^2*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,1)*b_(0,2)*b_(1 ,0)^2*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)-b _(0,0)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)^2 *b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,0 )*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,1)* b_(3,3)-b_(0,0)^2*b_(1,2)^2*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0 )*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)* b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b _(2,1)*b_(3,2)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_( 0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2 )^2*b_(3,2)*b_(3,3)-b_(0,3)^2*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1 ,0)^2*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,3 )^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,3)^2-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b _(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2 )*b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,1)*b_(3,2)+b_(0 ,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0 )*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)* b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,1 )*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)* b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b _(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1, 0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2 )^2-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b _(2,1)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,2)*b _(1,2)^2*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2 +b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b _(2,1)*b_(2,3)*b_(3,2)^2+2*b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-2*b_(0, 1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+2*b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2 )*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+2*b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3 )+2*b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-2*b_(0,1)*b_(0,3)*b_(1,0 )*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)+2*b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)* b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b _(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_( 3,2)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1 )*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2* b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0 ,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3 ,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,2 )*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,2)^2* b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3 )+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)* b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3 ,3)-b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,3)^ 2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b _(3,3)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,2)*b_(1,3)*b _(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,2)*b_(3,3)+b_( 0,3)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,2)*b_(2,3)*b _(3,3)^2+b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2-b_(0,1)*b_(0,2)*b_(1,0)*b _(1,2)*b_(2,3)^2*b_(3,3)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,3)^2,b_(0,2)*b_(0, 3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3, 0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1, 3)*b_(2,2)^2*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2 )-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)* b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3 ,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,3 )*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,2)^2+ b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^ 2*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,2)^2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1 ,1)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,2)^2+b_(0 ,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0 )*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b _(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_( 2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3 )+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b _(1,2)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3, 2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1 )*b_(1,3)*b_(2,2)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,2)* b_(3,3),b_(0,2)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,3)^2* b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3 ,2)+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2 ,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0 )*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,1)*b_(2,3 )*b_(3,2)^2+b_(0,2)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1 ,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)* b_(3,3)+b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,3)^2* b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b _(0,3)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,1)*b _(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,1)*b_(0,3)*b _(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_( 3,0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1, 1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b _(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_( 1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3, 0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1, 2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b _(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,2)*b_( 1,3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,3)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3, 3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)^2 *b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,2)*b_(3,3)-b _(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,3)^2-b_(0,1)^2*b_(1,2)^2*b_(2,2)*b_(2,3 )*b_(3,3)^2-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,3)^2,b_(0,2)^2*b_(1,1)*b_(1,3)*b_(2,0)* b_(2,1)*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,2)*b _(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2, 2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,2)^2-b_(0,0)*b_(0, 2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3, 0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0 )*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b _(3,1)*b_(3,3)-b_(0,1)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,1)*b _(1,2)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3, 2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1 )*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,3)^2-b_(0,1)^2*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2-b_(0 ,1)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b _(3,0)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_( 1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2 )*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,1)*b_(0,3)* b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b _(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0, 3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)^2*b_(3, 1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b _(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_( 3,2)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1, 0)*b_(1,2)*b_(2,2)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,2)*b_(3, 3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,3)^2-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2, 2)^2*b_(3,3)^2-b_(0,1)^2*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2 )*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b _(3,2)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(1,1)*b_(1,3)*b _(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,2)^2-b_(0,0)*b _(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_( 2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)^2*b_( 1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3 )*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0 )*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b _(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)^2*b_(1,0)*b _(1,2)*b_(2,0)*b_(2,2)*b_(3,3)^2-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,3)^2-b _(0,1)^2*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3, 0)*b_(3,2)-b_(0,3)^2*b_(1,3)^2*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_( 2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0, 2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2, 2)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1, 2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0 )*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)* b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3 ,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,1 )*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b _(3,2)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_( 1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,3)^2+b _(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,3)^2,b_(0,2)^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3, 0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)*b_(1, 3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,2)^2*b _(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_( 3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1, 0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b _(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_( 1,2)^2*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3, 2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0 )*b_(1,3)*b_(2,3)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,3)^ 2+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)* b_(2,3)^2*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,2)*b _(1,3)*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b _(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1, 2)*b_(2,0)^2*b_(3,2)^2+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,1 )*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)^ 2+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)^2*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0 )^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)* b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2 ,0)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1 )*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)^2*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)^ 2*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)* b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b _(3,2)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0, 3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,3)^2-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3 )*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1 ,3)*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2 )+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b _(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b _(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)^2*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b _(2,2)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)^2*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b _(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_( 3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1, 1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)^2*b_(3,2)*b_(3, 3)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1 )*b_(2,2)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,3)^2+b_(0,0 )*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)^2*b_(3,3)^2,b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3 ,1)^2-b_(0,0)^2*b_(1,3)^2*b_(2,2)^2*b_(3,1)^2-b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(3 ,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(1,3 )^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2 )+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)* b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,2)^ 2*b_(1,0)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)* b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0 ,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)^2*b_(2,1)*b_(2,3 )*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2 )*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2-b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)^2-b_(0,0)*b _(0,2)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)^2+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,2)^2*b_(3,1)^2-b_( 0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_( 2,1)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0 )*b_(0,3)*b_(1,3)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)^2*b_(3 ,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1 ,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3 )-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,3)^2*b_(1,0)*b_(1,3)* b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)-b_(0,1)* b_(0,2)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3),b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2 ,0)*b_(2,2)*b_(3,1)^2-b_(0,0)^2*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)^2-b_(0,0)*b_(0,3)*b_(1,2)* b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b _(3,2)+b_(0,0)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_( 1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0)*b _(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)^2*b _(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_( 1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2 )*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)* b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2 ,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1 )*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2 )*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2 ,0)*b_(2,2)*b_(3,1)^2-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0 ,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3 ,1)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1 ,3)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0 ,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0 )*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,1)*b_(3,2)-b_(0,2)* b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2 ,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,0 )*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)* b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)^2+b_(0,1)*b_(0,2)* b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)^ 2,b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,1)^2-b_(0,0)^2*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)^ 2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)* b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,2)^2*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,1)* b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b _(2,1)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b _(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2, 1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b _(0,2)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_( 2,1)*b_(3,3)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)*b _(1,3)*b_(2,0)^2*b_(3,1)^2-b_(0,3)^2*b_(1,3)^2*b_(2,0)^2*b_(3,1)^2-b_(0,0)*b_(0,2)*b_(1,2)*b _(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2+b_(0,0)^2*b_(1,3)^2*b_(2,2)^2*b_(3,1)^2+b_(0,0)*b_(0,3)*b_( 1,3)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3, 1)*b_(3,2)-b_(0,0)^2*b_(1,3)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1, 3)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0, 0)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,1 )^2*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b _(1,1)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_( 3,3)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,3)+2*b_(0,1)*b_(0,2)*b_(1,0)*b_( 1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3, 3)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b _(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+2*b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_( 3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,2)*b_(0,3 )*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,3 )^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,3)^2,b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3 )*b_(2,0)^2*b_(3,1)^2-b_(0,0)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2-b_(0,3)^2*b_(1,0)* b_(1,3)*b_(2,0)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b _(3,2)-b_(0,2)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_( 1,3)*b_(2,0)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3, 3)+b_(0,0)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3 )*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0 )^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1 )*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b _(0,3)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_( 2,1)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_( 1,0)^2*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,1)^2-b_(0,1 )*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,1)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3 ,1)^2+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,1)^2-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)* b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)^2-b_(0,0)*b_(0,2)*b_(1,2 )^2*b_(2,2)^2*b_(3,1)^2+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)^2+b_(0,2)*b_(0,3)* b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^ 2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)* b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,2)* b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)* b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0 ,2)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2 )*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b _(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_( 2,1)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,3)+b_(0,0 )*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,1)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)* b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0 ,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1 )*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-2*b_(0,2 )*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)-2*b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1 )*b_(2,2)*b_(3,2)*b_(3,3)-2*b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2 )^2*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b _(3,1)+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_( 1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1 )^2-b_(0,2)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2 ,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,2 )*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,2)^ 2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)* b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b _(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)^2*b_( 1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3, 2)^2-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,2)^2*b_(1,0)*b_(1,1)*b_( 2,1)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)*b_( 0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,3 )^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3),b_(0,2)^2*b_(1 ,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0 )*b_(3,1)-b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,1)*b_(0,3)*b_(1,3)^ 2*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)^2*b _(1,2)^2*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,2 )-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)* b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b _(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)^2*b_(1,1)*b_(1,2)*b_( 2,1)^2*b_(3,2)^2-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,0 )*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3 )+b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,1)*b _(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)+b _(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1, 3)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0, 2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2, 2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,2)*b _(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b _(3,1)*b_(3,2)-b_(0,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_( 1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3 )*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)^2*b_(2,1)^2*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,1)*b_(1 ,2)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2-b_(0 ,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,2)^2*b_(2,2)*b_(2 ,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3),b_(0,2)^2*b_(1,1)*b _(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_( 3,1)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,2)*b_(1,1 )*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0 ,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)* b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,2)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)* b_(0,2)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,1)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1 )*b_(3,2)+b_(0,2)^2*b_(1,1)^2*b_(2,1)^2*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b _(2,2)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b _(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)*b _(3,3),b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,0)*b_( 1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1 )^2+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,1)^2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2 ,1)^2*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b _(1,1)*b_(1,3)*b_(2,1)^2*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_( 3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3 )*b_(1,0)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2 )^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2 )*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,1 )*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,2)^ 2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0 )*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3),b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)* b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,2)*b_(1 ,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,1)^2+b _(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,2)^2 *b_(3,1)^2-b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1, 3)*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2 )+b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)* b_(2,1)^2*b_(3,1)*b_(3,2)-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)* b_(0,1)*b_(1,3)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)^2* b_(3,1)*b_(3,2)+b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3 )*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+ b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3),b_(0,0)*b_(0,2)*b_(1,0)*b_(1 ,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)* b_(3,1)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2+b_(0,0)^2*b_(1,1)*b_(1,3)* b_(2,1)*b_(2,2)*b_(3,1)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,0)* b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b _(2,1)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b _(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2, 2)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,2 )*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3 ,3)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2 ,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+ b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,1)* b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,0 )*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)* b_(3,1)+b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,2)*b_(1,1)*b _(1,2)*b_(2,0)*b_(2,2)*b_(3,1)^2+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)^2-b _(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)^2-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)^2 *b_(3,1)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,2)*b_(0,3)*b_(1,0 )*b_(1,1)*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)* b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,1)*b _(1,2)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3, 1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1, 3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2 )-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)* b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)^2*b_(2,3)^2*b_(3,1)*b_(3,3),b_(0,0)*b_(0,2 )*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0 )*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)* b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b _(3,3)-b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b _(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,2)^2*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b _(0,2)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_( 2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,0)*b_(0, 2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b _(2,3)*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0, 2)*b_(0,3)*b_(1,0)^2*b_(2,3)^2*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2, 3)*b_(3,3)^2+b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,3)^2*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b _(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b _(0,2)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,2)^2*b_(3,0 )*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,3)^ 2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b _(3,2)-b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,2)*b_( 1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3, 3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2, 1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1 )*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)* b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0 ,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)* b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)^2-b _(0,1)^2*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,2)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2 )*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)* b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1)* b_(3,2)+b_(0,2)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)* b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b _(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,1)*b_(1,2)*b_( 2,2)^2*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,2)^2*b _(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_( 3,1)*b_(3,3)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1, 0)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_( 0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2, 1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1 )*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)* b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,2 )*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)* b_(3,1)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,1)*b _(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2+b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b _(0,3)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_( 2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0, 2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,2)^2*b_( 3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3 )*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b _(2,2)*b_(3,2)^2+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,2)*b_(0,3)*b_(1,0 )*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3 )-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b _(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3, 0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1 )*b_(1,3)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)* b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1 ,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)* b_(3,2)*b_(3,3),b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0 ,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)* b_(2,3)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,2)* b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)* b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1 ,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3 ,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,2)^ 2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3)- b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1 ,3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)* b_(3,3)+b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,3)^2*b_(1,0)^2*b_(2,3 )^2*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,3)^2+b_(0,1)*b_(0,3 )*b_(1,0)^2*b_(2,3)^2*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b _(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1, 2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,1 )+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b _(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3, 0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b _(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b _(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1, 2)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3, 2)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2, 2)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,3)^2*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b _(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_( 3,3)+b_(0,1)^2*b_(1,0)^2*b_(2,3)^2*b_(3,2)*b_(3,3),b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,1 )*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)* b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2 ,3)*b_(3,1)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2 )*b_(1,2)^2*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3 ,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)* b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3 ,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,1)*b_(1 ,3)*b_(2,1)^2*b_(3,2)^2+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,1)*b _(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2, 1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0 )*b_(0,1)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)^ 2*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2* b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,2)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)* b_(3,1)-b_(0,2)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,2)*b _(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)*b_(0, 2)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,2)*b_(2,3)*b_(3, 1)^2-b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,3 )^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)^2*b_(1,2)^2*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,2)*b _(0,3)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b _(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,2)*b_(0, 3)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3, 1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,2)^2*b_(1,1 )*b_(1,2)*b_(2,1)^2*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,2)*b_(3,3 )+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1)*b_(0,2)*b_(1,2)*b _(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_( 3,1)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_( 2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)^2+b_(0, 2)*b_(0,3)*b_(1,2)^2*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)*b _(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,1)*b_( 1,3)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,1 )*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,2)*b_(0,3)*b _(1,1)*b_(1,2)*b_(2,1)^2*b_(3,2)^2+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,2)^2+b_(0,1)*b_( 0,3)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)^2*b_(3,0)*b _(3,3)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)*b_( 1,2)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,1 )*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)* b_(1,2)*b_(2,1)^2*b_(3,2)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(3,2)*b_(3,3)+ b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b _(2,0)*b_(2,1)*b_(3,0)*b_(3,1)+b_(0,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_( 0,3)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,2)^2*b _(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,3)^2*b_( 1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_( 3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,1)^2*b_( 2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0, 1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,1)^2*b_(2,1)^2*b_( 3,2)^2-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_( 1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_( 0,1)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b _(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,1)*b _(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b _(0,1)*b_(0,3)*b_(1,1)^2*b_(2,1)^2*b_(3,2)*b_(3,3)-b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2 )*b_(3,2)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,0)*b_(0,3)* b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)^2*b _(3,1)^2-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,1)^2-b_(0,0)*b_(0,3)*b_(1,2)^2*b_(2, 0)*b_(2,2)*b_(3,1)^2+b_(0,0)^2*b_(1,2)^2*b_(2,2)^2*b_(3,1)^2-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2 )*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)*b_(0 ,3)*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3 ,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)* b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)* b_(3,2)-b_(0,0)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)* b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1 ,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,1 )*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2 )*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0 ,2)*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,1)*b _(3,3)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,1)*b_(1,2)*b _(2,1)^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_( 0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_( 2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0, 3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2 )*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0 )*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,3)^2,b_(0 ,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0 )*b_(2,2)*b_(3,1)^2-b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)^2-b_(0,0)*b_(0,1)*b_(1 ,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3 ,2)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2 ,1)^2*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0 )*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)* b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0)*b _(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)^2+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1 )*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,0)^ 2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)- b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3),b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b _(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3, 1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2, 2)^2*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,0)*b_(0,3)*b_( 1,1)*b_(1,2)*b_(2,1)^2*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_( 3,2)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1, 2)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2 )-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1 )^2*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1 ,0)^2*b_(2,1)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,1)*b_(3 ,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)^2*b_(2,2)*b_(2,3)* b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)* b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3), b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,2)^2*b _(2,0)*b_(2,2)*b_(3,1)^2+b_(0,0)^2*b_(1,2)^2*b_(2,2)^2*b_(3,1)^2-b_(0,0)*b_(0,3)*b_(1,0)*b_( 1,2)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)*b _(0,3)*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b _(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,2)^2 *b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)+b _(0,3)^2*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3 )*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,0 )*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^ 2+b_(0,0)*b_(0,3)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0 )*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)* b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,2)*b_(2,3)* b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0 ,1)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,1)*b_(2,3 )*b_(3,2)*b_(3,3),b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)+b_(0,1)^2* b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b _(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_( 1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)^2+b _(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)*b _(2,3)*b_(3,1)^2+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0 )*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,0)* b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)^2*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)* b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3 ,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2 ,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3),b_(0,0)*b_(0 ,3)*b_(1,3)^2*b_(2,0)^2*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)- b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)*b _(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3, 3)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,0)^2*b_(1,2)*b_(1,3 )*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)- b_(0,2)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)^2*b_(1,0)*b_(1,3)*b_(2,1)* b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b _(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,2)^2*b _(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)^2*b_( 1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3 )*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)^2-b_(0,0)*b_(0,1)* b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,3)^2-b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,3)^2*b_(3,3)^2,b_(0 ,0)*b_(0,2)*b_(1,3)^2*b_(2,0)^2*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)* b_(3,2)-b_(0,0)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,3)* b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b _(0,2)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)^2*b_(1,0)^2*b_(2,0)*b_(2,3 )*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2* b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)* b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1 ,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,0)^2*b_(2,3)^2*b_(3,2)*b_(3 ,3)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,3)^2,b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2 ,0)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0 ,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)* b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0 ,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)^2*b _(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_( 1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2 )*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)*b _(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2, 0)*b_(2,1)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)^2+b_(0,0)*b_(0, 1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b _(2,2)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_( 0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2, 3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b _(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2, 1)*b_(2,3)*b_(3,3)^2,b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)-b_(0,0)^2*b_( 1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_( 3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2 )^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3 )-b_(0,0)^2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2 )^2*b_(3,0)*b_(3,3)-b_(0,3)^2*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)^2*b_(1,0)*b _(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_( 3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,1)*b_(1, 2)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3 )-b_(0,0)^2*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)* b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b _(0,0)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)^2 *b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b _(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2, 2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,0)^2*b_(1, 1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)^2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0 )*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,0)* b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,3)*b_(3,1)*b _(3,2)-b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,0)*b_( 1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2 )^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1 )*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b _(3,3)+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_( 1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)^2*b_(3,0)*b_(3, 1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3 )*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)^2- b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)^2-b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,0)*b_(2,2)*b_(3 ,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,0 )*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,1)* b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,0)*b _(1,2)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,2)^2-b _(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b _(2,3)*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_( 0,1)*b_(1,0)*b_(1,1)*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2, 1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)^2 *b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2)^2*b_(1,2)^2*b_(2,2)^2*b_(3,0)^2-b_(0,2)*b _(0,3)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)^2+b_(0,2)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0 )^2-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3 )*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,2)+b_(0,2 )*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,2)-b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3 )*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,2 )*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,0)* b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)* b_(2,3)^2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)^2-b_(0,3)^ 2*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)^2+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2 )^2-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3 )*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,0)*b_(3,3)+ b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b _(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3, 3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)*b_(3,3),b_(0,2)^2*b_(1,2)^2*b_(2,1)*b_( 2,2)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)^2-b_(0,1)*b_(0,2)*b_( 1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3, 0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,1)*b_(1, 2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b _(3,2)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,2)*b_(1,3)*b _(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3, 2)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2 )*b_(2,1)*b_(2,3)*b_(3,2)^2-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0 ,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,3)*b_(3,0)*b _(3,3)+b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1, 1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b _(3,2)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,2)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,1)*b _(1,2)*b_(2,1)*b_(2,2)*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)^2+b_(0,1)*b_(0, 2)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)^2-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3 )*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,2)*b _(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b _(3,0)*b_(3,2)-b_(0,3)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_( 1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3, 0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,1)^2*b_( 2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_( 0,3)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_( 3,0)*b_(3,3)-b_(0,1)^2*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b _(2,3)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2 *b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2 )*b_(3,3),b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3 )*b_(2,2)^2*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)^2-b_(0,1)*b_(0 ,2)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,2)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3 ,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,1 )*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b _(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,1)*b_( 1,1)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,2)^2+b _(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_( 2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,2)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0, 1)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_( 3,2)*b_(3,3)+b_(0,1)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2)*b_(0,3)*b_(1, 0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)^2+b_( 0,1)*b_(0,2)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)^2-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_( 2,2)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0 )*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)^ 2*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,3)^2* b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,2)*b_(2 ,3)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,3)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1 ,1)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1 )*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)* b_(1,1)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b _(3,3)-b_(0,1)^2*b_(1,0)^2*b_(2,3)^2*b_(3,0)*b_(3,3),b_(0,2)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2, 2)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,2)*b_( 1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_( 0,2)^2*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b _(3,0)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0, 3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3 )*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)* b_(1,1)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b _(3,2)*b_(3,3)+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,2)*b_(0,3)*b_( 1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3, 3)^2+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2-b_(0,1)*b_(0,2)*b_(1,0)*b_(1, 1)*b_(2,3)^2*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,1)*b_( 0,2)*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2, 2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3 )*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b _(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0, 2)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,2)^2*b_( 3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,2)*b_(0,3 )*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,2)^2-b _(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1, 1)*b_(2,2)^2*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0, 1)*b_(0,2)*b_(1,1)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,2 )*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,1)* b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,2)*b _(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,3)^2*b_(1,2)*b_(1, 3)*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,2)^2*b_(3,0)^2+b_(0,0)*b_(0,3)*b _(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)^2+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)^2 -b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,2 )*b_(2,3)*b_(3,0)^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)^2+b_(0,0)*b_(0,3 )*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)* b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,3)^2*b _(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_( 3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1, 0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b _(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0, 1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3, 0)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1 )*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)* b_(3,3),b_(0,2)^2*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0 )*b_(2,2)*b_(3,0)^2-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3 )*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,3)* b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b _(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)^2-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2 -b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b _(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3, 3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)^2 *b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3)+b _(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1, 3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3 )-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,3 )^2*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,1)*b_(0,3)*b_(1,2)*b _(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)^2+b _(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b _(2,3)*b_(3,0)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)^2+b_(0,0)*b_(0,1)*b _(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)^2-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_( 3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2 )*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0 )*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b _(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_( 3,0)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1, 1)^2*b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)^2+b_( 0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)^2,b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)*b_( 2,2)*b_(3,0)^2-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,1)*b _(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3, 0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,1)*b_(1, 2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,0)*b _(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1, 0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,1)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3, 2)+b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,1)^2*b_(2,0)*b_(2,1)*b _(3,2)^2-b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1 )*b_(2,0)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+ b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b _(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_( 0,0)*b_(0,1)*b_(1,1)^2*b_(2,2)^2*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,1)*b _(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,0)*b _(1,1)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b _(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)^2*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,0)*b _(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,0)*b_( 0,3)*b_(1,1)^2*b_(2,0)*b_(2,2)*b_(3,1)^2+b_(0,0)^2*b_(1,1)^2*b_(2,2)^2*b_(3,1)^2-b_(0,3)^2*b _(1,0)*b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2, 2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3 )*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3 ,2)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)* b_(1,1)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3 ,0)*b_(3,3)-b_(0,1)^2*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3),b_(0,2)^2*b_(1,2)^2*b_(2,1)^ 2*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,2)^2*b _(2,1)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)-b_( 0,0)*b_(0,1)*b_(1,3)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2, 3)^2*b_(3,1)^2-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b _(1,3)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_( 3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,3)^2*b_(1,1)*b_(1, 3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,2 )+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b _(1,3)*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3),b _(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,1)*b_(2,2 )*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)^2+b_(0,1)^2*b_(1,2)*b_(1 ,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1 )+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,2)^2* b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_(3,0)*b_(3,1)-b _(0,2)*b_(0,3)*b_(1,1)^2*b_(2,1)^2*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b _(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0, 3)^2*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2, 3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3 )*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1 )*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,1)*b_(3,3),b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2 ,1)^2*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)^2+b_(0,1)*b_(0,2)*b _(1,0)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)^2+b_(0,1)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1 )-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,2)*b _(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,3)^2*b_(3,0)*b_( 3,1)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,3)^2*b_(3,1)^2-b_(0,2)^2*b_(1,1)^2*b_(2,1)^2*b_(3, 0)*b_(3,2)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b _(1,1)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_( 3,1)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,1)*b_( 1,3)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,0)^2+b_( 0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,0)^2*b_(2,1)*b_( 2,3)*b_(3,0)^2-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0, 2)*b_(1,1)^2*b_(2,1)^2*b_(3,0)*b_(3,1)-b_(0,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_( 3,1)+b_(0,3)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1, 3)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)+b_(0, 1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,1)*b_(2, 3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,3)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1, 1)^2*b_(2,1)*b_(2,3)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,1)^2+b_( 0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,1)^2-b_(0,3)^2*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0 )*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)* b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,3)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)- b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b _(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,3)^2*b_(1,1)^2*b_(2,1)^2*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1, 1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2 )^2-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,2)^2*b_(2,1)*b _(2,2)*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,1)*b_( 0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b _(3,3)-b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)^2*b _(2,1)^2*b_(3,2)*b_(3,3)+b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)*b_(3,3)+b_(0,1)^2 *b_(1,0)*b_(1,1)*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_( 2,1)*b_(3,0)^2+b_(0,1)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,3)^2*b_(1,1)*b _(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3, 0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b _(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_( 3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,2)*b_( 1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0 )*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,3)^2*b_(1,1)^ 2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)*b _(3,3)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)^2*b _(2,1)*b_(2,3)*b_(3,3)^2-b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,3)^2-b_(0,1)^2*b_(1, 0)*b_(1,1)*b_(2,3)^2*b_(3,3)^2,b_(0,2)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)^2+b_(0,1)*b _(0,2)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b _(3,0)*b_(3,1)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0, 3)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3 )*b_(3,0)*b_(3,2)+b_(0,2)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,2)*b_(1,1 )*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)-b_(0,1)^2*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0 ,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,2)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2 ,3)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,1)* b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,3)^2-b_(0,1)^2*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3 )^2,b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)^2+b_(0,1)^2*b_(1,2)*b_(1,3)*b_(2 ,0)^2*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,1 )*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-2*b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,1 )*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3 )*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,2)*b _(2,3)*b_(3,0)*b_(3,1)+b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+2*b_(0,0)*b _(0,3)*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b _(3,0)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,1)*b_( 1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2 )*b_(3,1)*b_(3,2)+2*b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1 )*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)* b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,1)*b_(0 ,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2-2*b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)^2*b_(3,2)^ 2-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)* b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)^2*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1 )*b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)* b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)^2*b_(2 ,2)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,0 )*b_(0,1)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3 )*b_(3,1)*b_(3,3)-b_(0,1)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)* b_(1,1)^2*b_(2,1)^2*b_(3,2)*b_(3,3),b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)^ 2-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,0 )*b_(2,1)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)+b_(0,0)^ 2*b_(1,2)^2*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0 )*b_(3,1)+b_(0,0)^2*b_(1,0)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)+2*b_(0,1)*b_(0,3)*b_(1,0 )*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2 )-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)^2*b_(1,2)^2*b_(2,1 )*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)^2*b_(1,0)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)* b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,2)^2* b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)^2*b _(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2, 1)*b_(3,2)^2+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)^2*b_(1,0)*b_(1,1)*b _(2,1)*b_(2,3)*b_(3,2)^2-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,0)^2 *b_(1,1)*b_(1,2)*b_(2,1)^2*b_(3,0)*b_(3,3)+2*b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2 )*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,0)*b _(0,1)*b_(1,0)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)+2*b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3 )*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)* b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)* b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1 ,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)^2*b_(1,1)^2*b_(2,1)^2*b_(3,2)*b_(3,3),b _(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,1)*b_(3,0)^2-b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b _(2,2)*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_( 0,1)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_( 3,0)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)^2*b_(1,1)*b_( 1,2)*b_(2,1)^2*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)*b_(3, 2)+b_(0,0)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2, 0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0 )^2*b_(1,1)^2*b_(2,1)^2*b_(3,2)^2+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)+ b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,1)^2*b_(1,0)^2*b_(2,0)* b_(2,3)*b_(3,0)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)^2+b_(0,1)*b _(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,1)*b_( 2,2)*b_(3,0)^2-b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(3,0)^2-b_(0,1)*b_(0,2)*b_(1,0)*b _(1,2)*b_(2,0)*b_(2,3)*b_(3,0)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)^2-b _(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,0)^2-b_(0,3)^2*b_(1,1)*b_(1,2)*b_(2,0)*b _(2,3)*b_(3,0)*b_(3,1)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)-b_(0, 2)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0 )*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)* b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b _(2,3)*b_(3,0)*b_(3,2)-b_(0,1)*b_(0,3)*b_(1,2)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_( 0,1)*b_(1,2)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,3)^2*b_( 3,0)*b_(3,2)+b_(0,3)^2*b_(1,1)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)^2*b _(2,2)*b_(2,3)*b_(3,1)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)^2-b_( 0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,2)^2-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2, 3)^2*b_(3,2)^2-b_(0,1)^2*b_(1,2)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b _(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,1)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_( 3,3)-b_(0,0)*b_(0,1)*b_(1,1)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,1)^2*b_(1,1)*b_(1,2)*b_( 2,0)*b_(2,3)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0, 1)*b_(0,2)*b_(1,0)^2*b_(2,0)*b_(2,1)*b_(3,0)^2+b_(0,1)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)*b _(3,1)-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)*b_(0,3)*b_(1, 0)*b_(1,1)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,1)*b_(0,3)*b_(1,0)^2*b_(2,0)*b_(2,3)*b_(3,0 )*b_(3,1)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,1)^2+b_(0,0)^2*b_(1,1)^2*b_(2 ,1)*b_(2,2)*b_(3,1)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,1)^2+b_(0,1)*b_(0 ,3)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,1)^ 2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,1)*b_(3,2)-b_(0,0)^2* b_(1,1)^2*b_(2,1)^2*b_(3,1)*b_(3,2)+b_(0,1)^2*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,3 )+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,1)^2*b_(3,0)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,2)*b_(1,3)* b_(2,0)^2*b_(3,0)^2-b_(0,3)^2*b_(1,3)^2*b_(2,0)^2*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)* b_(2,0)*b_(2,2)*b_(3,0)^2+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)^2+b_(0,2)*b_(0,3 )*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)* b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b _(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_( 3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)^2*b_(1, 1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b _(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,1)*b _(1,2)*b_(2,2)*b_(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,3)^2*b_(3,3)^2,b_(0,2 )^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)^2-b_(0,2)*b_(0,3)*b_(1,3)^2*b_(2,0)^2*b_(3,0)^2-b_(0,0 )*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)* b_(2,3)*b_(3,0)*b_(3,2)+b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,2)*b _(0,3)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,2)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_( 2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,3)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)^2*b_( 1,1)*b_(1,3)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3, 2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b _(1,0)*b_(1,1)*b_(2,3)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,3)^2 +b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,2)*b_(0,3)*b_(1,2)^2*b_(2,0 )^2*b_(3,0)^2-b_(0,3)^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,2)^2*b_(2,0 )*b_(2,2)*b_(3,0)^2+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,2)*b_(0,3 )*b_(1,1)*b_(1,2)*b_(2,0)^2*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3 ,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)* b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,0)*b _(3,3)+b_(0,0)*b_(0,1)*b_(1,2)^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,2)*b _(2,1)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3, 3)-b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)^2*b_(1,1)^2*b_(2,2)*b_( 2,3)*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0 )^2*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,2)^2*b_(1,2)^2*b_(2,0)^2*b_(3,0)^2-b_(0,3 )^2*b_(1,3)^2*b_(2,0)^2*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2+ b_(0,0)*b_(0,3)*b_(1,3)^2*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,2)^2*b_(1,1)*b_(1,2)*b_(2,0)^2*b_(3 ,0)*b_(3,2)+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,2 )^2*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,0)* b_(3,2)+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)^2-b_(0,0)*b_(0,3)*b_(1,1)*b _(1,3)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_( 3,3)-b_(0,3)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)*b_(1, 2)*b_(2,2)^2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,2)^2*b_(3,0)*b_(3,3)+2*b_( 0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+2*b_(0,0)*b_(0,1)*b_(1,2)*b_(1, 3)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,3 )-b_(0,0)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3)-b_(0,0)*b_(0,2)*b_(1,1)^2* b_(2,0)*b_(2,3)*b_(3,1)*b_(3,3)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,3)^2*b_(3,1)*b_(3,3)-b_(0,0)* b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2 ,3)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,1)*b_(2,3)*b_(3,3)^2+b_(0,0)*b_(0,1)*b _(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,3)^2,b_(0,1)*b_(0,2)*b_(1,2)^2*b_(2,0)^2*b_(3,0)^2-b_(0, 1)*b_(0,3)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(3,0)^2+b_(0,0)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2, 1)*b_(3,0)^2+b_(0,0)*b_(0,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2-b_(0,0)*b_(0,3)*b_(1, 1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,1)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,2)*b_(2,3)*b_(3,0 )*b_(3,1)-b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)*b_(2,0)^2*b_(3,0)*b_(3,2)+b_(0,1)*b_(0,3)*b_(1,1)* b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,2)*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,0)*b_(3,2)- b_(0,0)*b_(0,1)*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,1)*b_(1,2)^2*b _(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,2)+b_( 0,0)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,3)*b_(3,1)*b_(3,2)-b_(0,0)^2*b_(1,1)^2*b_(2,2)*b_(2,3)*b _(3,1)*b_(3,2)+b_(0,0)*b_(0,1)*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,2)^2+b_(0,0)^2*b_(1,1)^2 *b_(2,1)*b_(2,3)*b_(3,2)^2+b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)-b _(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,3),b_(0,2)*b_(0,3)*b_(1,0)*b_(1, 2)*b_(2,0)^2*b_(3,0)^2-b_(0,3)^2*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3,0)^2-b_(0,0)*b_(0,2)*b_(1,0 )*b_(1,2)*b_(2,0)*b_(2,2)*b_(3,0)^2+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^ 2+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,1)*b_(1,3)*b_(2,0 )*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)^2*b_(3,0)*b_(3,2)+b_(0,0)* b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2 ,0)*b_(2,1)*b_(3,0)*b_(3,3)-b_(0,3)^2*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,3)-b_(0,0 )^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,2)^ 2*b_(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,3)+b_(0,0)*b _(0,3)*b_(1,1)^2*b_(2,0)*b_(2,2)*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(1,1)^2*b_(2,2)^2*b_(3,1)*b_(3, 3)-b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(3,2)*b_(3,3)+b_(0,0)^2*b_(1,1)^2*b_(2,1)*b_( 2,2)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,2)*b_(3,3),b_(0,1 )*b_(0,2)*b_(1,0)*b_(1,2)*b_(2,0)^2*b_(3,0)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)*b_(2,0)^2*b_(3 ,0)^2+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,3)*b_(2,0)*b_(2,2)*b_(3,0)^2+b_(0,0)*b_(0,3)*b_(1,1)*b_(1 ,2)*b_(2,0)*b_(2,2)*b_(3,0)*b_(3,1)-b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,2)^2*b_(3,0)*b_(3,1)-b_(0 ,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(2,0)^2*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)*b_(1,2)*b_(2,0 )*b_(2,1)*b_(3,0)*b_(3,2)+b_(0,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)-b_(0,0)* b_(0,1)*b_(1,0)*b_(1,2)*b_(2,0)*b_(2,3)*b_(3,0)*b_(3,2)-b_(0,0)*b_(0,3)*b_(1,1)^2*b_(2,0)*b _(2,2)*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(1,1)^2*b_(2,2)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)*b_(1,1 )^2*b_(2,0)*b_(2,1)*b_(3,2)^2-b_(0,0)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(3,2)^2+b_(0,0)*b_(0,1)* b_(1,0)*b_(1,1)*b_(2,0)*b_(2,3)*b_(3,2)^2-b_(0,1)*b_(0,3)*b_(1,0)*b_(1,1)*b_(2,0)*b_(2,2)*b _(3,0)*b_(3,3)+b_(0,0)*b_(0,1)*b_(1,0)*b_(1,1)*b_(2,2)^2*b_(3,0)*b_(3,3),b_(1,0)*b_(1,3)^3*b _(2,0)^2*b_(2,1)*b_(2,2)*b_(3,0)^3*b_(3,1)-b_(1,1)*b_(1,3)^3*b_(2,0)^3*b_(2,1)*b_(3,0)^2*b_( 3,1)^2-b_(1,2)^2*b_(1,3)^2*b_(2,0)^2*b_(2,2)^2*b_(3,0)^2*b_(3,1)^2-b_(1,0)*b_(1,2)*b_(1,3)^2 *b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,0)^2*b_(3,1)^2+b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,0)^3*b_(2,3)*b _(3,0)*b_(3,1)^3+b_(1,2)^2*b_(1,3)^2*b_(2,0)^2*b_(2,1)*b_(2,2)*b_(3,0)^2*b_(3,1)*b_(3,2)+b_( 1,0)*b_(1,2)*b_(1,3)^2*b_(2,0)*b_(2,2)^3*b_(3,0)^2*b_(3,1)*b_(3,2)-b_(1,0)*b_(1,2)*b_(1,3)^2 *b_(2,0)^2*b_(2,1)*b_(2,3)*b_(3,0)^2*b_(3,1)*b_(3,2)+b_(1,0)^2*b_(1,3)^2*b_(2,0)*b_(2,2)^2*b _(2,3)*b_(3,0)^2*b_(3,1)*b_(3,2)+b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,0)^2*b_(2,2)^2*b_(3,0)*b_(3, 1)^2*b_(3,2)+b_(1,2)^3*b_(1,3)*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,2)-b_(1,0)*b _(1,1)*b_(1,3)^2*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,2)+b_(1,0)*b_(1,2)^2*b_(1, 3)*b_(2,0)^2*b_(2,3)^2*b_(3,0)*b_(3,1)^2*b_(3,2)-b_(1,0)*b_(1,2)*b_(1,3)^2*b_(2,0)*b_(2,1)*b _(2,2)^2*b_(3,0)^2*b_(3,2)^2-b_(1,0)^2*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0)^2*b _(3,2)^2-b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,0)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)*b_(3,2)^2-b_(1, 0)*b_(1,1)*b_(1,3)^2*b_(2,0)*b_(2,2)^3*b_(3,0)*b_(3,1)*b_(3,2)^2-b_(1,2)^3*b_(1,3)*b_(2,0)^2 *b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)^2+2*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)^2*b_(2,1)*b_( 2,3)*b_(3,0)*b_(3,1)*b_(3,2)^2-b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,0)*b _(3,1)*b_(3,2)^2-b_(1,0)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,1)*b_(3,2 )^2-b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,1)^2*b_(3,2)^2-b_(1,0)*b_(1,1)* b_(1,2)*b_(1,3)*b_(2,0)^2*b_(2,3)^2*b_(3,1)^2*b_(3,2)^2+b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)*b _(2,1)*b_(2,2)^2*b_(3,0)*b_(3,2)^3+b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3 )*b_(3,0)*b_(3,2)^3+b_(1,0)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,0)*b_(3,2)^3+b _(1,1)*b_(1,2)^2*b_(1,3)*b_(2,0)^2*b_(2,1)*b_(2,3)*b_(3,1)*b_(3,2)^3+b_(1,0)*b_(1,1)*b_(1,2 )*b_(1,3)*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,1)*b_(3,2)^3+b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2 ,2)*b_(2,3)^2*b_(3,1)*b_(3,2)^3-b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2 ,3)*b_(3,2)^4-b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,2)^4+b_(1,0)*b_(1,2)* b_(1,3)^2*b_(2,0)*b_(2,1)^2*b_(2,2)*b_(3,0)^3*b_(3,3)+b_(1,0)^2*b_(1,3)^2*b_(2,0)*b_(2,1)^2* b_(2,3)*b_(3,0)^3*b_(3,3)-2*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,0)^2*b_(2,1)^2*b_(3,0)^2*b_(3,1)* b_(3,3)-b_(1,2)^3*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)^2*b_(3,1)*b_(3,3)+2*b_(1,0)*b_(1 ,1)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)^2*b_(3,1)*b_(3,3)+b_(1,0)*b_(1,2)^2*b_(1,3)* b_(2,2)^4*b_(3,0)^2*b_(3,1)*b_(3,3)-3*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2 ,3)*b_(3,0)^2*b_(3,1)*b_(3,3)+2*b_(1,0)^2*b_(1,2)*b_(1,3)*b_(2,2)^3*b_(2,3)*b_(3,0)^2*b_(3,1 )*b_(3,3)-2*b_(1,0)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,0)^2*b_(3,1)*b_(3,3)+b _(1,0)^3*b_(1,3)*b_(2,2)^2*b_(2,3)^2*b_(3,0)^2*b_(3,1)*b_(3,3)-2*b_(1,1)^2*b_(1,3)^2*b_(2,0 )^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,1)^2*b_(3,3)-b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,2)^3*b _(3,0)*b_(3,1)^2*b_(3,3)+2*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2,0)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3, 1)^2*b_(3,3)+b_(1,2)^4*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,3)-3*b_(1,0)*b_(1,1 )*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,3)+2*b_(1,0)*b_(1,2)^3*b _(2,0)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,1)^2*b_(3,3)-2*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2, 2)*b_(2,3)^2*b_(3,0)*b_(3,1)^2*b_(3,3)+b_(1,0)^2*b_(1,2)^2*b_(2,0)*b_(2,3)^3*b_(3,0)*b_(3,1 )^2*b_(3,3)+b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,1)^3*b_(3,3)+b_(1,0)*b _(1,1)^2*b_(1,3)*b_(2,0)^2*b_(2,3)^2*b_(3,1)^3*b_(3,3)+b_(1,2)^3*b_(1,3)*b_(2,0)*b_(2,1)^2*b _(2,2)*b_(3,0)^2*b_(3,2)*b_(3,3)-b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)*b_(2,1)^2*b_(2,2)*b_(3,0 )^2*b_(3,2)*b_(3,3)-b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,1)*b_(2,2)^3*b_(3,0)^2*b_(3,2)*b_(3,3)+b _(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,0)^2*b_(3,2)*b_(3,3)-2*b_(1,0)^2*b_( 1,2)*b_(1,3)*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)^2*b_(3,2)*b_(3,3)-b_(1,0)^3*b_(1,3)*b_(2,1)*b _(2,2)*b_(2,3)^2*b_(3,0)^2*b_(3,2)*b_(3,3)+2*b_(1,1)^2*b_(1,3)^2*b_(2,0)^2*b_(2,1)^2*b_(3,0 )*b_(3,1)*b_(3,2)*b_(3,3)+3*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)*b_(3 ,1)*b_(3,2)*b_(3,3)-b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,2)^4*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3 )-b_(1,2)^4*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+6*b_(1,0)*b_(1,1 )*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(1,0)*b _(1,2)^3*b_(2,2)^3*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,2 )^3*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(1,0)*b_(1,2)^3*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3 ,0)*b_(3,1)*b_(3,2)*b_(3,3)+3*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,0)*b _(3,1)*b_(3,2)*b_(3,3)-2*b_(1,0)^2*b_(1,2)^2*b_(2,2)^2*b_(2,3)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_( 3,3)-b_(1,0)^3*b_(1,2)*b_(2,2)*b_(2,3)^3*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_(1,1)^2*b_(1,2)*b _(1,3)*b_(2,0)*b_(2,2)^3*b_(3,1)^2*b_(3,2)*b_(3,3)-b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(2, 1)*b_(2,3)*b_(3,1)^2*b_(3,2)*b_(3,3)-b_(1,1)*b_(1,2)^3*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,1)^2*b _(3,2)*b_(3,3)+b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,1)^2*b_(3,2)*b_(3,3 )-2*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(2,3)^2*b_(3,1)^2*b_(3,2)*b_(3,3)-b_(1,0)^2* b_(1,1)*b_(1,2)*b_(2,0)*b_(2,3)^3*b_(3,1)^2*b_(3,2)*b_(3,3)-2*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2 ,0)*b_(2,1)^2*b_(2,2)*b_(3,0)*b_(3,2)^2*b_(3,3)+b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2 ,2)^3*b_(3,0)*b_(3,2)^2*b_(3,3)-3*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,3)* b_(3,0)*b_(3,2)^2*b_(3,3)+b_(1,0)*b_(1,2)^3*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,2)^2*b_(3 ,3)+b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,2)^2*b_(3,3)+2*b_(1,0)^ 2*b_(1,2)^2*b_(2,1)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,2)^2*b_(3,3)+b_(1,0)^3*b_(1,2)*b_(2,1)*b _(2,3)^3*b_(3,0)*b_(3,2)^2*b_(3,3)-2*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2*b_( 3,1)*b_(3,2)^2*b_(3,3)+b_(1,1)*b_(1,2)^3*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)^2*b _(3,3)-3*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)^2*b_(3,3 )+b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,2)^3*b_(2,3)*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(1,0)*b_(1,1)*b_(1 ,2)^2*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,1)*b_(3,2)^2*b_(3,3)+2*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,2 )^2*b_(2,3)^2*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(1,0)^3*b_(1,1)*b_(2,2)*b_(2,3)^3*b_(3,1)*b_(3,2)^ 2*b_(3,3)+b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,2)*b_(3,2)^3*b_(3,3)+2*b_(1,0)*b _(1,1)^2*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,2)^3*b_(3,3)-b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2, 1)*b_(2,2)^2*b_(2,3)*b_(3,2)^3*b_(3,3)-2*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(2,3)^2 *b_(3,2)^3*b_(3,3)-b_(1,0)^3*b_(1,1)*b_(2,1)*b_(2,3)^3*b_(3,2)^3*b_(3,3)-b_(1,1)*b_(1,2)^2*b _(1,3)*b_(2,0)*b_(2,1)^3*b_(3,0)^2*b_(3,3)^2+b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(2, 2)^2*b_(3,0)^2*b_(3,3)^2+b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)^2*b_(3, 3)^2-2*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,2)*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(1,0 )*b_(1,1)^2*b_(1,3)*b_(2,1)*b_(2,2)^3*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(1,1)*b_(1,2)^3*b_(2,0)*b _(2,1)^2*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2, 3)*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_( 3,1)*b_(3,3)^2+b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,1)*b_(3,3)^2 -b_(1,1)^3*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,1)^2*b_(3,3)^2+b_(1,1)^2*b_(1,2)^2*b_(2,0 )*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,1)^2*b_(3,3)^2+b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,0)*b_(2,1)*b_(2 ,3)^2*b_(3,1)^2*b_(3,3)^2+2*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)^3*b_(3,0)*b_(3,2)*b_(3 ,3)^2-b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,1)^2*b_(2,2)^2*b_(3,0)*b_(3,2)*b_(3,3)^2-2*b_(1,0)*b_(1 ,1)*b_(1,2)^2*b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)*b_(3,3)^2-2*b_(1,0)^2*b_(1,1)*b_(1,2 )*b_(2,1)^2*b_(2,3)^2*b_(3,0)*b_(3,2)*b_(3,3)^2+2*b_(1,1)^3*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,2 )*b_(3,1)*b_(3,2)*b_(3,3)^2-b_(1,1)^2*b_(1,2)^2*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,1)*b_(3,2)*b _(3,3)^2-2*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,1)*b_(3,2)*b_(3,3)^2-2*b _(1,0)^2*b_(1,1)^2*b_(2,1)*b_(2,2)*b_(2,3)^2*b_(3,1)*b_(3,2)*b_(3,3)^2-b_(1,1)^3*b_(1,3)*b_( 2,0)*b_(2,1)^3*b_(3,2)^2*b_(3,3)^2+2*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,1)^2*b_(2,2)*b_(2,3)*b_( 3,2)^2*b_(3,3)^2+2*b_(1,0)^2*b_(1,1)^2*b_(2,1)^2*b_(2,3)^2*b_(3,2)^2*b_(3,3)^2+b_(1,0)*b_(1, 1)^2*b_(1,2)*b_(2,1)^3*b_(2,3)*b_(3,0)*b_(3,3)^3+b_(1,0)*b_(1,1)^3*b_(2,1)^2*b_(2,2)*b_(2,3 )*b_(3,1)*b_(3,3)^3-b_(1,0)*b_(1,1)^3*b_(2,1)^3*b_(2,3)*b_(3,2)*b_(3,3)^3,b_(0,0)*b_(0,2)^3* b_(2,0)^2*b_(2,1)^2*b_(3,0)^3*b_(3,1)-2*b_(0,0)*b_(0,2)^2*b_(0,3)*b_(2,0)^2*b_(2,1)*b_(2,3)* b_(3,0)^2*b_(3,1)^2+2*b_(0,0)^2*b_(0,2)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0)^2*b_(3,1)^ 2+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,0)^2*b_(2,3)^2*b_(3,0)*b_(3,1)^3-2*b_(0,0)^2*b_(0,2)*b_(0,3 )*b_(2,0)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,1)^3+b_(0,0)^3*b_(0,2)*b_(2,2)^2*b_(2,3)^2*b_(3,0)* b_(3,1)^3+b_(0,1)*b_(0,2)^3*b_(2,0)^3*b_(2,1)*b_(3,0)^2*b_(3,1)*b_(3,2)-b_(0,2)^2*b_(0,3)^2* b_(2,0)^2*b_(2,1)*b_(2,2)*b_(3,0)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,2)^2*b_(0,3)*b_(2,0)*b_(2,1 )*b_(2,2)^2*b_(3,0)^2*b_(3,1)*b_(3,2)-2*b_(0,0)^2*b_(0,2)^2*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,0 )^2*b_(3,1)*b_(3,2)-b_(0,1)*b_(0,2)^2*b_(0,3)*b_(2,0)^3*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,2)+b _(0,0)*b_(0,1)*b_(0,2)^2*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,2)+b_(0,2)*b_(0,3 )^3*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,2)-2*b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,0)* b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,2)+b_(0,0)^2*b_(0,2)*b_(0,3)*b_(2,2)^3*b_(2,3)*b_(3 ,0)*b_(3,1)^2*b_(3,2)+2*b_(0,0)^2*b_(0,2)*b_(0,3)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,0)*b_(3,1)^ 2*b_(3,2)-2*b_(0,0)^3*b_(0,2)*b_(2,1)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,1)^2*b_(3,2)+b_(0,2)^2* b_(0,3)^2*b_(2,0)^2*b_(2,1)^2*b_(3,0)^2*b_(3,2)^2-b_(0,0)*b_(0,2)^2*b_(0,3)*b_(2,0)*b_(2,1)^ 2*b_(2,2)*b_(3,0)^2*b_(3,2)^2-b_(0,1)*b_(0,2)^2*b_(0,3)*b_(2,0)^2*b_(2,2)^2*b_(3,0)*b_(3,1)* b_(3,2)^2+b_(0,0)*b_(0,1)*b_(0,2)^2*b_(2,0)*b_(2,2)^3*b_(3,0)*b_(3,1)*b_(3,2)^2-2*b_(0,0)*b _(0,1)*b_(0,2)^2*b_(2,0)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)^2-b_(0,2)*b_(0,3)^3*b_(2, 0)^2*b_(2,1)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)^2+3*b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,0)*b_(2,1)*b _(2,2)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)^2-2*b_(0,0)^2*b_(0,2)*b_(0,3)*b_(2,1)*b_(2,2)^2*b_(2, 3)*b_(3,0)*b_(3,1)*b_(3,2)^2+b_(0,0)^3*b_(0,2)*b_(2,1)^2*b_(2,3)^2*b_(3,0)*b_(3,1)*b_(3,2)^2 +b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2,0)^2*b_(2,3)^2*b_(3,1)^2*b_(3,2)^2-b_(0,0)^2*b_(0,1)*b _(0,2)*b_(2,0)*b_(2,2)*b_(2,3)^2*b_(3,1)^2*b_(3,2)^2+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(2,0)^2*b_( 2,1)*b_(2,2)*b_(3,0)*b_(3,2)^3-b_(0,0)*b_(0,1)*b_(0,2)^2*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)*b _(3,2)^3-b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,0)*b_(3,2)^3+b_(0,0)^2*b_( 0,2)*b_(0,3)*b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)^3+b_(0,1)*b_(0,2)*b_(0,3)^2*b_(2,0)^2 *b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)^3-b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2,0)*b_(2,2)^2*b_(2,3 )*b_(3,1)*b_(3,2)^3+b_(0,0)^2*b_(0,1)*b_(0,2)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,1)*b_(3,2)^3-b _(0,1)*b_(0,2)*b_(0,3)^2*b_(2,0)^2*b_(2,1)*b_(2,3)*b_(3,2)^4+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3 )*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,2)^4+b_(0,0)*b_(0,2)^2*b_(0,3)*b_(2,0)*b_(2,1)^3*b_(3 ,0)^3*b_(3,3)+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(2,0)^2*b_(2,1)*b_(2,2)*b_(3,0)^2*b_(3,1)*b_(3,3)- 2*b_(0,0)*b_(0,1)*b_(0,2)^2*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)^2*b_(3,1)*b_(3,3)-b_(0,2)*b_(0 ,3)^3*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,1)* b_(2,2)^3*b_(3,0)^2*b_(3,1)*b_(3,3)-2*b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,0)*b_(2,1)^2*b_(2,3)*b _(3,0)^2*b_(3,1)*b_(3,3)+b_(0,0)^2*b_(0,2)*b_(0,3)*b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)^2*b_(3, 1)*b_(3,3)-b_(0,1)^2*b_(0,2)^2*b_(2,0)^3*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,3)+b_(0,1)*b_(0,2)*b _(0,3)^2*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,3)-3*b_(0,0)*b_(0,1)*b_(0,2)*b_(0, 3)*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,3)+2*b_(0,0)^2*b_(0,1)*b_(0,2)*b_(2,2)^3 *b_(2,3)*b_(3,0)*b_(3,1)^2*b_(3,3)-b_(0,0)^2*b_(0,1)*b_(0,2)*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3, 0)*b_(3,1)^2*b_(3,3)+b_(0,0)*b_(0,3)^3*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,0)*b_(3,1)^2*b_(3,3)-b _(0,0)^2*b_(0,3)^2*b_(2,1)*b_(2,2)*b_(2,3)^2*b_(3,0)*b_(3,1)^2*b_(3,3)+b_(0,0)^2*b_(0,1)*b_( 0,3)*b_(2,0)*b_(2,3)^3*b_(3,1)^3*b_(3,3)-b_(0,0)^3*b_(0,1)*b_(2,2)*b_(2,3)^3*b_(3,1)^3*b_(3, 3)+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(2,0)^2*b_(2,1)^2*b_(3,0)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b _(0,2)^2*b_(2,0)*b_(2,1)^2*b_(2,2)*b_(3,0)^2*b_(3,2)*b_(3,3)+b_(0,2)*b_(0,3)^3*b_(2,0)*b_(2, 1)^2*b_(2,2)*b_(3,0)^2*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(0,3)^2*b_(2,1)^2*b_(2,2)^2*b_(3,0 )^2*b_(3,2)*b_(3,3)-b_(0,0)^2*b_(0,2)*b_(0,3)*b_(2,1)^3*b_(2,3)*b_(3,0)^2*b_(3,2)*b_(3,3)-b _(0,1)^2*b_(0,2)^2*b_(2,0)^2*b_(2,2)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(0,1)*b_(0,2)*b_(0, 3)^2*b_(2,0)*b_(2,2)^3*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2, 2)^4*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-3*b_(0,1)*b_(0,2)*b_(0,3)^2*b_(2,0)^2*b_(2,1)*b_(2,3)*b _(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+6*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_( 2,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_(0,3)^4*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3, 1)*b_(3,2)*b_(3,3)-3*b_(0,0)^2*b_(0,1)*b_(0,2)*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)*b_( 3,2)*b_(3,3)-b_(0,0)*b_(0,3)^3*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_( 0,0)^2*b_(0,3)^2*b_(2,1)^2*b_(2,3)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)^2*b_(0, 2)*b_(2,0)^2*b_(2,3)^2*b_(3,1)^2*b_(3,2)*b_(3,3)+2*b_(0,0)*b_(0,1)*b_(0,3)^2*b_(2,0)*b_(2,2 )*b_(2,3)^2*b_(3,1)^2*b_(3,2)*b_(3,3)-2*b_(0,0)^2*b_(0,1)*b_(0,3)*b_(2,2)^2*b_(2,3)^2*b_(3,1 )^2*b_(3,2)*b_(3,3)+b_(0,0)^3*b_(0,1)*b_(2,1)*b_(2,3)^3*b_(3,1)^2*b_(3,2)*b_(3,3)+b_(0,1)^2* b_(0,2)^2*b_(2,0)^2*b_(2,1)*b_(2,2)*b_(3,0)*b_(3,2)^2*b_(3,3)+b_(0,1)*b_(0,2)*b_(0,3)^2*b_(2 ,0)*b_(2,1)*b_(2,2)^2*b_(3,0)*b_(3,2)^2*b_(3,3)-b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2,1)*b_(2 ,2)^3*b_(3,0)*b_(3,2)^2*b_(3,3)-3*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2,0)*b_(2,1)^2*b_(2,3)* b_(3,0)*b_(3,2)^2*b_(3,3)-b_(0,3)^4*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,0)*b_(3,2)^2*b_(3,3)+b_(0 ,0)^2*b_(0,1)*b_(0,2)*b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)^2*b_(3,3)+b_(0,0)*b_(0,3)^3* b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,2)^2*b_(3,3)+2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(2,0)^2*b _(2,2)*b_(2,3)*b_(3,1)*b_(3,2)^2*b_(3,3)-b_(0,0)*b_(0,1)^2*b_(0,2)*b_(2,0)*b_(2,2)^2*b_(2,3 )*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(0,1)*b_(0,3)^3*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,1)*b_(3,2)^2*b _(3,3)-b_(0,0)*b_(0,1)*b_(0,3)^2*b_(2,2)^3*b_(2,3)*b_(3,1)*b_(3,2)^2*b_(3,3)-b_(0,0)*b_(0,1 )*b_(0,3)^2*b_(2,0)*b_(2,1)*b_(2,3)^2*b_(3,1)*b_(3,2)^2*b_(3,3)+2*b_(0,0)^2*b_(0,1)*b_(0,3)* b_(2,1)*b_(2,2)*b_(2,3)^2*b_(3,1)*b_(3,2)^2*b_(3,3)-2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(2,0)^2*b _(2,1)*b_(2,3)*b_(3,2)^3*b_(3,3)+b_(0,0)*b_(0,1)^2*b_(0,2)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b _(3,2)^3*b_(3,3)-b_(0,1)*b_(0,3)^3*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,2)^3*b_(3,3)+b_(0,0 )*b_(0,1)*b_(0,3)^2*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,2)^3*b_(3,3)+b_(0,1)*b_(0,2)*b_(0,3)^2*b _(2,0)*b_(2,1)^2*b_(2,2)*b_(3,0)^2*b_(3,3)^2-b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(2,1)^2*b_(2, 2)^2*b_(3,0)^2*b_(3,3)^2-b_(0,0)^2*b_(0,1)*b_(0,2)*b_(2,1)^3*b_(2,3)*b_(3,0)^2*b_(3,3)^2-b_( 0,1)^2*b_(0,2)*b_(0,3)*b_(2,0)*b_(2,2)^3*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(0,0)*b_(0,1)^2*b_(0,2 )*b_(2,2)^4*b_(3,0)*b_(3,1)*b_(3,3)^2-2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(2,0)^2*b_(2,1)*b_(2,3)* b_(3,0)*b_(3,1)*b_(3,3)^2+3*b_(0,0)*b_(0,1)^2*b_(0,2)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0 )*b_(3,1)*b_(3,3)^2+b_(0,1)*b_(0,3)^3*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,3 )^2-b_(0,0)*b_(0,1)*b_(0,3)^2*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(0,0)^2* b_(0,1)*b_(0,3)*b_(2,1)^2*b_(2,3)^2*b_(3,0)*b_(3,1)*b_(3,3)^2+2*b_(0,0)*b_(0,1)^2*b_(0,3)*b _(2,0)*b_(2,2)*b_(2,3)^2*b_(3,1)^2*b_(3,3)^2-2*b_(0,0)^2*b_(0,1)^2*b_(2,2)^2*b_(2,3)^2*b_(3, 1)^2*b_(3,3)^2+b_(0,1)^2*b_(0,2)*b_(0,3)*b_(2,0)*b_(2,1)*b_(2,2)^2*b_(3,0)*b_(3,2)*b_(3,3)^2 -b_(0,0)*b_(0,1)^2*b_(0,2)*b_(2,1)*b_(2,2)^3*b_(3,0)*b_(3,2)*b_(3,3)^2-2*b_(0,0)*b_(0,1)^2*b _(0,2)*b_(2,0)*b_(2,1)^2*b_(2,3)*b_(3,0)*b_(3,2)*b_(3,3)^2-2*b_(0,1)*b_(0,3)^3*b_(2,0)*b_(2, 1)^2*b_(2,3)*b_(3,0)*b_(3,2)*b_(3,3)^2+2*b_(0,0)*b_(0,1)*b_(0,3)^2*b_(2,1)^2*b_(2,2)*b_(2,3 )*b_(3,0)*b_(3,2)*b_(3,3)^2+b_(0,1)^3*b_(0,2)*b_(2,0)^2*b_(2,2)*b_(2,3)*b_(3,1)*b_(3,2)*b_(3 ,3)^2+2*b_(0,1)^2*b_(0,3)^2*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,1)*b_(3,2)*b_(3,3)^2-2*b_(0,0)*b _(0,1)^2*b_(0,3)*b_(2,2)^3*b_(2,3)*b_(3,1)*b_(3,2)*b_(3,3)^2-b_(0,0)*b_(0,1)^2*b_(0,3)*b_(2, 0)*b_(2,1)*b_(2,3)^2*b_(3,1)*b_(3,2)*b_(3,3)^2+2*b_(0,0)^2*b_(0,1)^2*b_(2,1)*b_(2,2)*b_(2,3 )^2*b_(3,1)*b_(3,2)*b_(3,3)^2-b_(0,1)^3*b_(0,2)*b_(2,0)^2*b_(2,1)*b_(2,3)*b_(3,2)^2*b_(3,3)^ 2-2*b_(0,1)^2*b_(0,3)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,2)^2*b_(3,3)^2+2*b_(0,0)*b_(0,1 )^2*b_(0,3)*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,2)^2*b_(3,3)^2-b_(0,1)^2*b_(0,3)^2*b_(2,0)*b_(2,1 )^2*b_(2,3)*b_(3,0)*b_(3,3)^3+b_(0,0)*b_(0,1)^2*b_(0,3)*b_(2,1)^2*b_(2,2)*b_(2,3)*b_(3,0)*b _(3,3)^3+b_(0,1)^3*b_(0,3)*b_(2,0)*b_(2,2)^2*b_(2,3)*b_(3,1)*b_(3,3)^3-b_(0,0)*b_(0,1)^3*b_( 2,2)^3*b_(2,3)*b_(3,1)*b_(3,3)^3-b_(0,1)^3*b_(0,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)*b_(3,2)*b _(3,3)^3+b_(0,0)*b_(0,1)^3*b_(2,1)*b_(2,2)^2*b_(2,3)*b_(3,2)*b_(3,3)^3,b_(0,0)*b_(0,2)^3*b_( 1,0)^2*b_(1,2)^2*b_(3,0)^3*b_(3,1)-2*b_(0,0)*b_(0,2)^2*b_(0,3)*b_(1,0)^2*b_(1,2)*b_(1,3)*b_( 3,0)^3*b_(3,1)+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)^2*b_(1,3)^2*b_(3,0)^3*b_(3,1)+2*b_(0,0)^2*b _(0,2)^2*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,0)^2*b_(3,1)^2-2*b_(0,0)^2*b_(0,2)*b_(0,3)*b_( 1,0)*b_(1,1)*b_(1,3)^2*b_(3,0)^2*b_(3,1)^2+b_(0,0)^3*b_(0,2)*b_(1,1)^2*b_(1,3)^2*b_(3,0)*b_( 3,1)^3-2*b_(0,0)*b_(0,2)^3*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(3,0)^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0, 2)^2*b_(0,3)*b_(1,0)*b_(1,2)^3*b_(3,0)^2*b_(3,1)*b_(3,2)+2*b_(0,0)*b_(0,2)^2*b_(0,3)*b_(1,0 )^2*b_(1,1)*b_(1,3)*b_(3,0)^2*b_(3,1)*b_(3,2)-2*b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,2)^2* b_(1,3)*b_(3,0)^2*b_(3,1)*b_(3,2)+b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(3,0 )^2*b_(3,1)*b_(3,2)+b_(0,0)*b_(0,3)^3*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(3,0)^2*b_(3,1)*b_(3,2)-b _(0,0)^2*b_(0,1)*b_(0,3)*b_(1,0)*b_(1,3)^3*b_(3,0)^2*b_(3,1)*b_(3,2)-2*b_(0,0)^2*b_(0,2)^2*b _(1,0)*b_(1,1)^2*b_(1,3)*b_(3,0)*b_(3,1)^2*b_(3,2)+b_(0,0)^2*b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2 )^2*b_(1,3)*b_(3,0)*b_(3,1)^2*b_(3,2)-b_(0,0)^2*b_(0,3)^2*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(3,0)* b_(3,1)^2*b_(3,2)+b_(0,0)^3*b_(0,1)*b_(1,1)*b_(1,3)^3*b_(3,0)*b_(3,1)^2*b_(3,2)-b_(0,0)*b_(0 ,1)*b_(0,2)^2*b_(1,0)^2*b_(1,2)*b_(1,3)*b_(3,0)^2*b_(3,2)^2+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)* b_(1,0)^2*b_(1,3)^2*b_(3,0)^2*b_(3,2)^2+b_(0,0)*b_(0,2)^3*b_(1,0)^2*b_(1,1)^2*b_(3,0)*b_(3,1 )*b_(3,2)^2-2*b_(0,0)*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(3,0)*b_(3,1)*b_(3,2)^2+ 3*b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,0)*b_(3,1)*b_(3,2)^2+b_(0,0 )^2*b_(0,1)*b_(0,2)*b_(1,2)^3*b_(1,3)*b_(3,0)*b_(3,1)*b_(3,2)^2-2*b_(0,0)^2*b_(0,1)*b_(0,2)* b_(1,0)*b_(1,1)*b_(1,3)^2*b_(3,0)*b_(3,1)*b_(3,2)^2-b_(0,0)*b_(0,3)^3*b_(1,0)*b_(1,1)*b_(1,3 )^2*b_(3,0)*b_(3,1)*b_(3,2)^2-b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,2)^2*b_(1,3)^2*b_(3,0)*b_(3,1)* b_(3,2)^2-b_(0,0)^2*b_(0,2)*b_(0,3)*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(3,1)^2*b_(3,2)^2+b_(0,0)^2* b_(0,3)^2*b_(1,1)^2*b_(1,3)^2*b_(3,1)^2*b_(3,2)^2+b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)^2*b_(1,1 )*b_(1,3)*b_(3,0)*b_(3,2)^3-b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(3,0 )*b_(3,2)^3+b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(3,0)*b_(3,2)^3+b_(0,0)*b _(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(3,1)*b_(3,2)^3-b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1, 0)*b_(1,1)^2*b_(1,3)*b_(3,1)*b_(3,2)^3-b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)^2*b_(1,3)*b _(3,1)*b_(3,2)^3+b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(3,1)*b_(3,2)^3+b_(0, 0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,2)^4-b_(0,0)*b_(0,1)*b_(0,3 )^2*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(3,2)^4-b_(0,1)*b_(0,2)^3*b_(1,0)^3*b_(1,2)*b_(3,0)^3*b_(3,3 )+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(1,0)^3*b_(1,3)*b_(3,0)^3*b_(3,3)-b_(0,2)^2*b_(0,3)^2*b_(1,0)^ 2*b_(1,1)*b_(1,2)*b_(3,0)^2*b_(3,1)*b_(3,3)+2*b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)*b_(1,2)^3*b _(3,0)^2*b_(3,1)*b_(3,3)-b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(3,0)^2*b_(3, 1)*b_(3,3)+b_(0,2)*b_(0,3)^3*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(3,0)^2*b_(3,1)*b_(3,3)-3*b_(0,0)*b _(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(3,0)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,1)*b _(0,3)^2*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(3,0)^2*b_(3,1)*b_(3,3)-b_(0,0)^2*b_(0,1)^2*b_(1,0)*b_( 1,3)^3*b_(3,0)^2*b_(3,1)*b_(3,3)+b_(0,0)*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(3,0 )*b_(3,1)^2*b_(3,3)+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,1)*b_(1,2)^3*b_(3,0)*b_(3,1)^2*b_(3,3)-2* b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(3,0)*b_(3,1)^2*b_(3,3)-2*b_(0,0)^2*b _(0,1)*b_(0,2)*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(3,0)*b_(3,1)^2*b_(3,3)-b_(0,0)*b_(0,3)^3*b_(1,1 )*b_(1,2)^2*b_(1,3)*b_(3,0)*b_(3,1)^2*b_(3,3)+b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(1 ,3)^2*b_(3,0)*b_(3,1)^2*b_(3,3)+b_(0,0)^2*b_(0,2)*b_(0,3)*b_(1,1)^3*b_(1,3)*b_(3,1)^3*b_(3,3 )+b_(0,1)*b_(0,2)^3*b_(1,0)^3*b_(1,1)*b_(3,0)^2*b_(3,2)*b_(3,3)-2*b_(0,1)*b_(0,2)^2*b_(0,3)* b_(1,0)^2*b_(1,2)^2*b_(3,0)^2*b_(3,2)*b_(3,3)+2*b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)^2*b_(1,2)* b_(1,3)*b_(3,0)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,0)^2*b_(1,3)^2*b_(3,0)^2*b _(3,2)*b_(3,3)+b_(0,2)^2*b_(0,3)^2*b_(1,0)^2*b_(1,1)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-3*b_( 0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(0,2)*b_( 0,3)^3*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,1)*b_(0,2)*b_( 0,3)*b_(1,2)^4*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+6*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_( 1,1)*b_(1,2)*b_(1,3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)+b_(0,3)^4*b_(1,0)*b_(1,1)*b_(1,2)*b_(1, 3)*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,2)^3*b_(1,3)*b_(3,0)*b_(3, 1)*b_(3,2)*b_(3,3)-3*b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(3,0)*b_(3,1)*b_( 3,2)*b_(3,3)-b_(0,0)^2*b_(0,1)^2*b_(1,2)^2*b_(1,3)^2*b_(3,0)*b_(3,1)*b_(3,2)*b_(3,3)-b_(0,0 )*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)^3*b_(3,1)^2*b_(3,2)*b_(3,3)-b_(0,0)*b_(0,2)*b_(0,3)^2*b _(1,1)^2*b_(1,2)^2*b_(3,1)^2*b_(3,2)*b_(3,3)+b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,1)^2*b_(1,2)*b_( 1,3)*b_(3,1)^2*b_(3,2)*b_(3,3)+b_(0,0)*b_(0,3)^3*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(3,1)^2*b_(3,2 )*b_(3,3)+b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,1)^2*b_(1,3)^2*b_(3,1)^2*b_(3,2)*b_(3,3)+2*b_(0,1)* b_(0,2)^2*b_(0,3)*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(3,0)*b_(3,2)^2*b_(3,3)-b_(0,1)*b_(0,2)*b_(0,3 )^2*b_(1,0)*b_(1,2)^3*b_(3,0)*b_(3,2)^2*b_(3,3)-b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)^2*b_(1,1)* b_(1,3)*b_(3,0)*b_(3,2)^2*b_(3,3)-b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(3,0 )*b_(3,2)^2*b_(3,3)+b_(0,1)*b_(0,3)^3*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(3,0)*b_(3,2)^2*b_(3,3)+2* b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(3,0)*b_(3,2)^2*b_(3,3)+b_(0,0)*b_(0,1 )*b_(0,2)^2*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(0,2)*b_(0,3)^3*b_(1,0)*b _(1,1)^2*b_(1,2)*b_(3,1)*b_(3,2)^2*b_(3,3)-b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)^3 *b_(3,1)*b_(3,2)^2*b_(3,3)-3*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(3, 1)*b_(3,2)^2*b_(3,3)-b_(0,3)^4*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(0,0)*b _(0,1)*b_(0,3)^2*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(0,0)^2*b_(0,1)^2*b_( 1,1)*b_(1,2)*b_(1,3)^2*b_(3,1)*b_(3,2)^2*b_(3,3)+b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)*b _(1,2)^2*b_(3,2)^3*b_(3,3)+b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,2 )^3*b_(3,3)-b_(0,1)*b_(0,3)^3*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,2)^3*b_(3,3)-2*b_(0,0)*b _(0,1)^2*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(3,2)^3*b_(3,3)-2*b_(0,1)^2*b_(0,2)^2*b_(1,0)^2 *b_(1,2)^2*b_(3,0)^2*b_(3,3)^2+2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(1,0)^2*b_(1,2)*b_(1,3)*b_(3,0 )^2*b_(3,3)^2+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(1,0)^2*b_(1,1)^2*b_(3,0)*b_(3,1)*b_(3,3)^2-b_(0,1 )*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(0,0)*b_(0,1)^2*b _(0,2)*b_(1,2)^4*b_(3,0)*b_(3,1)*b_(3,3)^2+3*b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,0)*b_(1,1)*b_(1, 2)*b_(1,3)*b_(3,0)*b_(3,1)*b_(3,3)^2+b_(0,1)*b_(0,3)^3*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3, 0)*b_(3,1)*b_(3,3)^2-b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,2)^3*b_(1,3)*b_(3,0)*b_(3,1)*b_(3,3)^2-2 *b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(3,0)*b_(3,1)*b_(3,3)^2-b_(0,0)*b_(0, 1)*b_(0,2)^2*b_(1,0)*b_(1,1)^3*b_(3,1)^2*b_(3,3)^2-b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,1)^2 *b_(1,2)^2*b_(3,1)^2*b_(3,3)^2+b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(3,1)^2 *b_(3,3)^2+2*b_(0,1)^2*b_(0,2)^2*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(3,0)*b_(3,2)*b_(3,3)^2-2*b_(0, 1)^2*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)^3*b_(3,0)*b_(3,2)*b_(3,3)^2-b_(0,1)^2*b_(0,2)*b_(0,3)*b _(1,0)^2*b_(1,1)*b_(1,3)*b_(3,0)*b_(3,2)*b_(3,3)^2+2*b_(0,1)^2*b_(0,3)^2*b_(1,0)*b_(1,2)^2*b _(1,3)*b_(3,0)*b_(3,2)*b_(3,3)^2+b_(0,0)*b_(0,1)^3*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(3,0)*b_(3,2 )*b_(3,3)^2+2*b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(3,1)*b_(3,2)*b_(3,3)^2- b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,1)*b_(1,2)^3*b_(3,1)*b_(3,2)*b_(3,3)^2-2*b_(0,0)*b_(0,1)^2*b _(0,2)*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(3,1)*b_(3,2)*b_(3,3)^2-2*b_(0,1)*b_(0,3)^3*b_(1,0)*b_(1, 1)^2*b_(1,3)*b_(3,1)*b_(3,2)*b_(3,3)^2+b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,1)*b_(1,2)^2*b_(1,3)*b _(3,1)*b_(3,2)*b_(3,3)^2+2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(3,2)^2*b_( 3,3)^2-2*b_(0,1)^2*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,2)^2*b_(3,3)^2-b_(0,0)*b_( 0,1)^3*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(3,2)^2*b_(3,3)^2-b_(0,1)^3*b_(0,2)*b_(1,0)*b_(1,2)^3*b_( 3,0)*b_(3,3)^3+b_(0,1)^3*b_(0,3)*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(3,0)*b_(3,3)^3+b_(0,1)^2*b_(0, 2)*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(3,1)*b_(3,3)^3-b_(0,1)^2*b_(0,3)^2*b_(1,0)*b_(1,1)^2 *b_(1,3)*b_(3,1)*b_(3,3)^3+b_(0,1)^3*b_(0,2)*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(3,2)*b_(3,3)^3-b_( 0,1)^3*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(3,2)*b_(3,3)^3,b_(0,1)^2*b_(0,2)^2*b_(1,1 )*b_(1,2)^2*b_(1,3)*b_(2,0)^3*b_(2,1)-2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(1,1)*b_(1,2)*b_(1,3)^2* b_(2,0)^3*b_(2,1)+b_(0,1)^2*b_(0,3)^2*b_(1,1)*b_(1,3)^3*b_(2,0)^3*b_(2,1)+2*b_(0,0)*b_(0,1)* b_(0,2)^2*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(2,1)^2-2*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b _(1,1)^2*b_(1,3)^2*b_(2,0)^2*b_(2,1)^2+b_(0,0)^2*b_(0,2)^2*b_(1,1)^3*b_(1,3)*b_(2,0)*b_(2,1 )^3-b_(0,1)*b_(0,2)^3*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,0)^2*b_(2,1)*b_(2,2)-b_(0,1)*b_(0,2)^2* b_(0,3)*b_(1,1)*b_(1,2)^3*b_(2,0)^2*b_(2,1)*b_(2,2)+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1 )^2*b_(1,3)*b_(2,0)^2*b_(2,1)*b_(2,2)+2*b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,1)*b_(1,2)^2*b_(1,3)* b_(2,0)^2*b_(2,1)*b_(2,2)+2*b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,0)^2*b _(2,1)*b_(2,2)-b_(0,1)*b_(0,3)^3*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,0)^2*b_(2,1)*b_(2,2)-2*b_(0, 0)*b_(0,1)^2*b_(0,3)*b_(1,1)*b_(1,3)^3*b_(2,0)^2*b_(2,1)*b_(2,2)-b_(0,0)*b_(0,2)^3*b_(1,0)*b _(1,1)^3*b_(2,0)*b_(2,1)^2*b_(2,2)-b_(0,0)*b_(0,2)^2*b_(0,3)*b_(1,1)^2*b_(1,2)^2*b_(2,0)*b_( 2,1)^2*b_(2,2)+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,2 )+2*b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,1)^2*b_(1,3)^2*b_(2,0)*b_(2,1)^2*b_(2,2)-b_(0,1)^2*b_(0,2 )^2*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(2,2)^2+b_(0,1)^2*b_(0,2)*b_(0,3)*b_(1,0)*b _(1,1)*b_(1,3)^2*b_(2,0)^2*b_(2,2)^2+b_(0,2)^2*b_(0,3)^2*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,0)*b _(2,1)*b_(2,2)^2+b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,1)*b_(1,2)^3*b_(2,0)*b_(2,1)*b_(2,2)^2-2*b_( 0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2-b_(0,2)*b_(0,3)^3 *b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2-3*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1, 1)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)^2+2*b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,1)*b_(1,2)*b _(1,3)^2*b_(2,0)*b_(2,1)*b_(2,2)^2+b_(0,0)^2*b_(0,1)^2*b_(1,1)*b_(1,3)^3*b_(2,0)*b_(2,1)*b_( 2,2)^2+b_(0,0)^2*b_(0,2)^2*b_(1,1)^2*b_(1,2)^2*b_(2,1)^2*b_(2,2)^2-b_(0,0)^2*b_(0,2)*b_(0,3 )*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,1)^2*b_(2,2)^2+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)*b _(1,2)^2*b_(2,0)*b_(2,2)^3-b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,0 )*b_(2,2)^3-b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)*b_(2,2)^3-b_(0,0)*b _(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,1)*b_(2,2)^3+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1, 0)*b_(1,1)^2*b_(1,3)*b_(2,1)*b_(2,2)^3+b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,1)*b_(1,2)^2*b_(1,3)*b _(2,1)*b_(2,2)^3-b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,1)*b_(2,2)^3-b_(0, 0)*b_(0,1)*b_(0,2)^2*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,2)^4+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_( 1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,2)^4-b_(0,1)^3*b_(0,2)*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(2,0)^3 *b_(2,3)+b_(0,1)^3*b_(0,3)*b_(1,0)*b_(1,3)^3*b_(2,0)^3*b_(2,3)-b_(0,1)*b_(0,2)^3*b_(1,0)^2*b _(1,1)^2*b_(2,0)^2*b_(2,1)*b_(2,3)-b_(0,1)*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2, 0)^2*b_(2,1)*b_(2,3)+3*b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,0)^2*b _(2,1)*b_(2,3)-b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,2)^3*b_(1,3)*b_(2,0)^2*b_(2,1)*b_(2,3)-b_(0,0 )*b_(0,1)^2*b_(0,2)*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)^2*b_(2,1)*b_(2,3)-2*b_(0,1)*b_(0,3)^3* b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)^2*b_(2,1)*b_(2,3)+b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,2)^2*b_(1 ,3)^2*b_(2,0)^2*b_(2,1)*b_(2,3)+b_(0,0)*b_(0,2)^2*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,0)* b_(2,1)^2*b_(2,3)+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,1)*b_(1,2)^3*b_(2,0)*b_(2,1)^2*b_(2,3)-2*b _(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)*b_(1,1)^2*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,3)-2*b_(0,0)^2*b_( 0,1)*b_(0,2)*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,3)-b_(0,0)*b_(0,3)^3*b_(1,1)*b _(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)^2*b_(2,3)+b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,1)*b_(1,2)*b_(1,3 )^2*b_(2,0)*b_(2,1)^2*b_(2,3)-b_(0,0)^3*b_(0,2)*b_(1,1)^2*b_(1,2)*b_(1,3)*b_(2,1)^3*b_(2,3)- b_(0,1)^2*b_(0,2)^2*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,0)^2*b_(2,2)*b_(2,3)+2*b_(0,1)^2*b_(0,2)* b_(0,3)*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)^2*b_(2,2)*b_(2,3)-2*b_(0,1)^2*b_(0,3)^2*b_(1,0)*b _(1,2)*b_(1,3)^2*b_(2,0)^2*b_(2,2)*b_(2,3)-b_(0,0)*b_(0,1)^3*b_(1,0)*b_(1,3)^3*b_(2,0)^2*b_( 2,2)*b_(2,3)+b_(0,2)^2*b_(0,3)^2*b_(1,0)^2*b_(1,1)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)+3*b_(0, 0)*b_(0,1)*b_(0,2)^2*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)-b_(0,2)*b_(0, 3)^3*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)+b_(0,0)*b_(0,1)*b_(0,2)*b_(0, 3)*b_(1,2)^4*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)-6*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_(1, 1)*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)+b_(0,3)^4*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3 )*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)-b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,2)^3*b_(1,3)*b_(2,0)*b_(2,1 )*b_(2,2)*b_(2,3)+3*b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(2 ,2)*b_(2,3)-b_(0,0)^2*b_(0,1)^2*b_(1,2)^2*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(2,2)*b_(2,3)+b_(0,0)^ 2*b_(0,2)^2*b_(1,0)*b_(1,1)^2*b_(1,2)*b_(2,1)^2*b_(2,2)*b_(2,3)-b_(0,0)^2*b_(0,2)*b_(0,3)*b _(1,1)*b_(1,2)^3*b_(2,1)^2*b_(2,2)*b_(2,3)+b_(0,0)^2*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,1)^2*b_(1, 3)*b_(2,1)^2*b_(2,2)*b_(2,3)+b_(0,0)^2*b_(0,3)^2*b_(1,1)*b_(1,2)^2*b_(1,3)*b_(2,1)^2*b_(2,2 )*b_(2,3)-b_(0,0)^3*b_(0,1)*b_(1,1)*b_(1,2)*b_(1,3)^2*b_(2,1)^2*b_(2,2)*b_(2,3)+2*b_(0,1)*b _(0,2)^2*b_(0,3)*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,2)^2*b_(2,3)-b_(0,1)*b_(0,2)*b_(0,3 )^2*b_(1,0)*b_(1,2)^3*b_(2,0)*b_(2,2)^2*b_(2,3)-b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)^2*b_(1,1)* b_(1,3)*b_(2,0)*b_(2,2)^2*b_(2,3)-b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0 )*b_(2,2)^2*b_(2,3)+b_(0,1)*b_(0,3)^3*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,2)^2*b_(2,3)+2* b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(2,0)*b_(2,2)^2*b_(2,3)-b_(0,0)*b_(0,2 )^2*b_(0,3)*b_(1,0)^2*b_(1,1)^2*b_(2,1)*b_(2,2)^2*b_(2,3)+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)* b_(1,1)*b_(1,2)^2*b_(2,1)*b_(2,2)^2*b_(2,3)-b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,2)^4*b_(2,1)*b_(2 ,2)^2*b_(2,3)+3*b_(0,0)^2*b_(0,1)*b_(0,2)*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)^2* b_(2,3)-b_(0,0)*b_(0,3)^3*b_(1,0)*b_(1,1)*b_(1,2)*b_(1,3)*b_(2,1)*b_(2,2)^2*b_(2,3)+b_(0,0)^ 2*b_(0,1)*b_(0,3)*b_(1,2)^3*b_(1,3)*b_(2,1)*b_(2,2)^2*b_(2,3)-b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1 ,0)*b_(1,1)*b_(1,3)^2*b_(2,1)*b_(2,2)^2*b_(2,3)-2*b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)^2*b_(1,1 )*b_(1,2)*b_(2,2)^3*b_(2,3)+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)*b_(1,2)^3*b_(2,2)^3*b_(2 ,3)+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,2)^3*b_(2,3)-b_(0,0)*b_(0 ,1)*b_(0,3)^2*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,2)^3*b_(2,3)+2*b_(0,1)^2*b_(0,2)*b_(0,3)*b_(1,0 )^2*b_(1,2)*b_(1,3)*b_(2,0)^2*b_(2,3)^2-2*b_(0,1)^2*b_(0,3)^2*b_(1,0)^2*b_(1,3)^2*b_(2,0)^2* b_(2,3)^2+2*b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(2,3)^2-b _(0,2)*b_(0,3)^3*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,0)*b_(2,1)*b_(2,3)^2+b_(0,0)*b_(0,1)*b_(0,2 )*b_(0,3)*b_(1,0)*b_(1,2)^3*b_(2,0)*b_(2,1)*b_(2,3)^2-3*b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1 ,0)^2*b_(1,1)*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,3)^2+b_(0,3)^4*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,0)* b_(2,1)*b_(2,3)^2-b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,0)*b_(1,2)^2*b_(1,3)*b_(2,0)*b_(2,1)*b_(2,3 )^2-b_(0,0)^2*b_(0,1)^2*b_(1,0)*b_(1,2)*b_(1,3)^2*b_(2,0)*b_(2,1)*b_(2,3)^2-b_(0,0)^2*b_(0,2 )*b_(0,3)*b_(1,0)*b_(1,1)*b_(1,2)^2*b_(2,1)^2*b_(2,3)^2+b_(0,0)^2*b_(0,3)^2*b_(1,0)*b_(1,1)* b_(1,2)*b_(1,3)*b_(2,1)^2*b_(2,3)^2-b_(0,0)^3*b_(0,1)*b_(1,0)*b_(1,1)*b_(1,3)^2*b_(2,1)^2*b _(2,3)^2+b_(0,1)*b_(0,2)^2*b_(0,3)*b_(1,0)^3*b_(1,1)*b_(2,0)*b_(2,2)*b_(2,3)^2-2*b_(0,1)*b_( 0,2)*b_(0,3)^2*b_(1,0)^2*b_(1,2)^2*b_(2,0)*b_(2,2)*b_(2,3)^2-b_(0,0)*b_(0,1)^2*b_(0,2)*b_(1, 0)^2*b_(1,2)*b_(1,3)*b_(2,0)*b_(2,2)*b_(2,3)^2+2*b_(0,1)*b_(0,3)^3*b_(1,0)^2*b_(1,2)*b_(1,3 )*b_(2,0)*b_(2,2)*b_(2,3)^2+2*b_(0,0)*b_(0,1)^2*b_(0,3)*b_(1,0)^2*b_(1,3)^2*b_(2,0)*b_(2,2)* b_(2,3)^2+b_(0,0)*b_(0,2)*b_(0,3)^2*b_(1,0)^2*b_(1,1)*b_(1,2)*b_(2,1)*b_(2,2)*b_(2,3)^2-2*b _(0,0)^2*b_(0,1)*b_(0,2)*b_(1,0)*b_(1,2)^3*b_(2,1)*b_(2,2)*b_(2,3)^2+2*b_(0,0)^2*b_(0,1)*b_( 0,2)*b_(1,0)^2*b_(1,1)*b_(1,3)*b_(2,1)*b_(2,2)*b_(2,3)^2-b_(0,0)*b_(0,3)^3*b_(1,0)^2*b_(1,1 )*b_(1,3)*b_(2,1)*b_(2,2)*b_(2,3)^2+2*b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,0)*b_(1,2)^2*b_(1,3)*b _(2,1)*b_(2,2)*b_(2,3)^2-b_(0,0)*b_(0,1)*b_(0,2)^2*b_(1,0)^3*b_(1,1)*b_(2,2)^2*b_(2,3)^2+2*b _(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)^2*b_(1,2)^2*b_(2,2)^2*b_(2,3)^2-2*b_(0,0)*b_(0,1)*b_( 0,3)^2*b_(1,0)^2*b_(1,2)*b_(1,3)*b_(2,2)^2*b_(2,3)^2-b_(0,1)*b_(0,2)*b_(0,3)^2*b_(1,0)^3*b_( 1,2)*b_(2,0)*b_(2,3)^3+b_(0,1)*b_(0,3)^3*b_(1,0)^3*b_(1,3)*b_(2,0)*b_(2,3)^3-b_(0,0)^2*b_(0, 1)*b_(0,2)*b_(1,0)^2*b_(1,2)^2*b_(2,1)*b_(2,3)^3+b_(0,0)^2*b_(0,1)*b_(0,3)*b_(1,0)^2*b_(1,2 )*b_(1,3)*b_(2,1)*b_(2,3)^3+b_(0,0)*b_(0,1)*b_(0,2)*b_(0,3)*b_(1,0)^3*b_(1,2)*b_(2,2)*b_(2,3 )^3-b_(0,0)*b_(0,1)*b_(0,3)^2*b_(1,0)^3*b_(1,3)*b_(2,2)*b_(2,3)^3); assert(isHomogeneous I1); I1) precomputedModelInP3xP5=method() precomputedModelInP3xP5(Ring) := kk -> ( w := symbol w; z := symbol z; P3xP5:=kk[w_0..w_3,z_0..z_5,Degrees=>{4:{1,0},6:{0,1}}]; H:=matrix {{w_1*w_2*w_3^2*z_0^2*z_1*z_2^2*z_3-w_0*w_1*w_3^2*z_0^2*z_2^3*z_3+w_2^2*w_3^2*z_0^2*z_ 1^2*z_3^2+w_1*w_2*w_3^2*z_0*z_1^3*z_3^2-2*w_0*w_2*w_3^2*z_0^2*z_1*z_2*z_3^2-w_2^3*w_3*z_0*z_1 ^2*z_2*z_3^2-w_0*w_1*w_3^2*z_0*z_1^2*z_2*z_3^2+w_0^2*w_3^2*z_0^2*z_2^2*z_3^2+2*w_0*w_2^2*w_3* z_0*z_1*z_2^2*z_3^2-w_0^2*w_2*w_3*z_0*z_2^3*z_3^2-w_0*w_2^2*w_3*z_1^3*z_3^3+2*w_0^2*w_2*w_3*z _1^2*z_2*z_3^3-w_0^3*w_3*z_1*z_2^2*z_3^3+w_2^2*w_3^2*z_0^3*z_1*z_3*z_4-w_1^2*w_3^2*z_0*z_1^3* z_3*z_4-w_0*w_2*w_3^2*z_0^3*z_2*z_3*z_4-w_2^3*w_3*z_0^2*z_1*z_2*z_3*z_4+w_0*w_1*w_3^2*z_0^2*z _1*z_2*z_3*z_4+w_1*w_2^2*w_3*z_0*z_1^2*z_2*z_3*z_4+w_0*w_2^2*w_3*z_0^2*z_2^2*z_3*z_4-3*w_0*w_ 1*w_2*w_3*z_0*z_1*z_2^2*z_3*z_4+2*w_0^2*w_1*w_3*z_0*z_2^3*z_3*z_4-2*w_0*w_2^2*w_3*z_0*z_1^2*z _3^2*z_4+w_0*w_1*w_2*w_3*z_1^3*z_3^2*z_4+3*w_0^2*w_2*w_3*z_0*z_1*z_2*z_3^2*z_4+w_0*w_2^3*z_1^ 2*z_2*z_3^2*z_4-w_0^2*w_1*w_3*z_1^2*z_2*z_3^2*z_4-w_0^3*w_3*z_0*z_2^2*z_3^2*z_4-2*w_0^2*w_2^2 *z_1*z_2^2*z_3^2*z_4+w_0^3*w_2*z_2^3*z_3^2*z_4-w_1*w_2*w_3^2*z_0^3*z_1*z_4^2-w_1^2*w_3^2*z_0^ 2*z_1^2*z_4^2+w_0*w_1*w_3^2*z_0^3*z_2*z_4^2+w_1*w_2^2*w_3*z_0^2*z_1*z_2*z_4^2-w_0*w_1*w_2*w_3 *z_0^2*z_2^2*z_4^2-w_0*w_2^2*w_3*z_0^2*z_1*z_3*z_4^2+2*w_0*w_1*w_2*w_3*z_0*z_1^2*z_3*z_4^2+w_ 0^2*w_2*w_3*z_0^2*z_2*z_3*z_4^2+w_0*w_2^3*z_0*z_1*z_2*z_3*z_4^2-2*w_0^2*w_1*w_3*z_0*z_1*z_2*z _3*z_4^2-w_0*w_1*w_2^2*z_1^2*z_2*z_3*z_4^2-w_0^2*w_2^2*z_0*z_2^2*z_3*z_4^2+2*w_0^2*w_1*w_2*z_ 1*z_2^2*z_3*z_4^2-w_0^3*w_1*z_2^3*z_3*z_4^2+w_0*w_1*w_2*w_3*z_0^2*z_1*z_4^3-w_0^2*w_1*w_3*z_0 ^2*z_2*z_4^3-w_0*w_1*w_2^2*z_0*z_1*z_2*z_4^3+w_0^2*w_1*w_2*z_0*z_2^2*z_4^3-w_1*w_2*w_3^2*z_0^ 2*z_1*z_2*z_3*z_5+w_1^2*w_3^2*z_0*z_1^2*z_2*z_3*z_5+w_0*w_1*w_3^2*z_0^2*z_2^2*z_3*z_5+w_1*w_2 ^2*w_3*z_0*z_1*z_2^2*z_3*z_5-w_0*w_1*w_2*w_3*z_0*z_2^3*z_3*z_5+w_0*w_2*w_3^2*z_0^2*z_1*z_3^2* z_5+2*w_2^3*w_3*z_0*z_1^2*z_3^2*z_5+w_0*w_1*w_3^2*z_0*z_1^2*z_3^2*z_5+w_1*w_2^2*w_3*z_1^3*z_3 ^2*z_5-w_0^2*w_3^2*z_0^2*z_2*z_3^2*z_5-5*w_0*w_2^2*w_3*z_0*z_1*z_2*z_3^2*z_5-w_2^4*z_1^2*z_2* z_3^2*z_5-3*w_0*w_1*w_2*w_3*z_1^2*z_2*z_3^2*z_5+3*w_0^2*w_2*w_3*z_0*z_2^2*z_3^2*z_5+2*w_0*w_2 ^3*z_1*z_2^2*z_3^2*z_5+2*w_0^2*w_1*w_3*z_1*z_2^2*z_3^2*z_5-w_0^2*w_2^2*z_2^3*z_3^2*z_5-w_0^2* w_2*w_3*z_1^2*z_3^3*z_5+w_0^3*w_3*z_1*z_2*z_3^3*z_5+2*w_2^3*w_3*z_0^2*z_1*z_3*z_4*z_5-w_1*w_2 ^2*w_3*z_0*z_1^2*z_3*z_4*z_5-w_1^2*w_2*w_3*z_1^3*z_3*z_4*z_5-2*w_0*w_2^2*w_3*z_0^2*z_2*z_3*z_ 4*z_5-w_2^4*z_0*z_1*z_2*z_3*z_4*z_5+4*w_0*w_1*w_2*w_3*z_0*z_1*z_2*z_3*z_4*z_5+w_1*w_2^3*z_1^2 *z_2*z_3*z_4*z_5+w_0*w_1^2*w_3*z_1^2*z_2*z_3*z_4*z_5+w_0*w_2^3*z_0*z_2^2*z_3*z_4*z_5-3*w_0^2* w_1*w_3*z_0*z_2^2*z_3*z_4*z_5-2*w_0*w_1*w_2^2*z_1*z_2^2*z_3*z_4*z_5+w_0^2*w_1*w_2*z_2^3*z_3*z _4*z_5-w_0^2*w_2*w_3*z_0*z_1*z_3^2*z_4*z_5-w_0*w_2^3*z_1^2*z_3^2*z_4*z_5+w_0^3*w_3*z_0*z_2*z_ 3^2*z_4*z_5+3*w_0^2*w_2^2*z_1*z_2*z_3^2*z_4*z_5-2*w_0^3*w_2*z_2^2*z_3^2*z_4*z_5-2*w_1*w_2^2*w _3*z_0^2*z_1*z_4^2*z_5-w_1^2*w_2*w_3*z_0*z_1^2*z_4^2*z_5+2*w_0*w_1*w_2*w_3*z_0^2*z_2*z_4^2*z_ 5+w_1*w_2^3*z_0*z_1*z_2*z_4^2*z_5+w_0*w_1^2*w_3*z_0*z_1*z_2*z_4^2*z_5-w_0*w_1*w_2^2*z_0*z_2^2 *z_4^2*z_5-w_0*w_2^3*z_0*z_1*z_3*z_4^2*z_5+w_0*w_1*w_2^2*z_1^2*z_3*z_4^2*z_5+w_0^2*w_2^2*z_0* z_2*z_3*z_4^2*z_5-3*w_0^2*w_1*w_2*z_1*z_2*z_3*z_4^2*z_5+2*w_0^3*w_1*z_2^2*z_3*z_4^2*z_5+w_0*w _1*w_2^2*z_0*z_1*z_4^3*z_5-w_0^2*w_1*w_2*z_0*z_2*z_4^3*z_5-w_1^2*w_3^2*z_0*z_1^2*z_3*z_5^2-w_ 1*w_2^2*w_3*z_0*z_1*z_2*z_3*z_5^2+w_1^2*w_2*w_3*z_1^2*z_2*z_3*z_5^2+w_0*w_1*w_2*w_3*z_0*z_2^2 *z_3*z_5^2-w_0*w_1^2*w_3*z_1*z_2^2*z_3*z_5^2+2*w_0*w_2^2*w_3*z_0*z_1*z_3^2*z_5^2+w_2^4*z_1^2* z_3^2*z_5^2+2*w_0*w_1*w_2*w_3*z_1^2*z_3^2*z_5^2-2*w_0^2*w_2*w_3*z_0*z_2*z_3^2*z_5^2-3*w_0*w_2 ^3*z_1*z_2*z_3^2*z_5^2-2*w_0^2*w_1*w_3*z_1*z_2*z_3^2*z_5^2+2*w_0^2*w_2^2*z_2^2*z_3^2*z_5^2+w_ 2^4*z_0*z_1*z_3*z_4*z_5^2-w_0*w_1*w_2*w_3*z_0*z_1*z_3*z_4*z_5^2-w_1*w_2^3*z_1^2*z_3*z_4*z_5^2 -w_0*w_2^3*z_0*z_2*z_3*z_4*z_5^2+w_0^2*w_1*w_3*z_0*z_2*z_3*z_4*z_5^2+3*w_0*w_1*w_2^2*z_1*z_2* z_3*z_4*z_5^2-2*w_0^2*w_1*w_2*z_2^2*z_3*z_4*z_5^2-w_0^2*w_2^2*z_1*z_3^2*z_4*z_5^2+w_0^3*w_2*z _2*z_3^2*z_4*z_5^2-w_1*w_2^3*z_0*z_1*z_4^2*z_5^2+w_0*w_1*w_2^2*z_0*z_2*z_4^2*z_5^2+w_0^2*w_1* w_2*z_1*z_3*z_4^2*z_5^2-w_0^3*w_1*z_2*z_3*z_4^2*z_5^2-w_1^2*w_2*w_3*z_1^2*z_3*z_5^3+w_0*w_1^2 *w_3*z_1*z_2*z_3*z_5^3+w_0*w_2^3*z_1*z_3^2*z_5^3-w_0^2*w_2^2*z_2*z_3^2*z_5^3-w_0*w_1*w_2^2*z_ 1*z_3*z_4*z_5^3+w_0^2*w_1*w_2*z_2*z_3*z_4*z_5^3}}; H) precomputedCoxModel=method() precomputedCoxModel(Ring) := kk -> ( r := symbol r; s := symbol s; t := symbol t; coxRing:=kk[s_0..s_2, t_0,t_1, r_0..r_3,Degrees=>{2:{1, 1, 0}, {1, 0, 0}, 2:{0, 1, 0},3:{1, 2, 1}, {0, 0,1}}]; coxModel := ideal(s_0*s_2*t_0*r_0^3*r_2-s_2^2*t_0*t_1*r_0^3*r_2+2*s_0*s_2*t_0*r_0^2*r_1*r_2-s_0*s_2*t_1*r_0^ 2*r_1*r_2-2*s_2^2*t_0*t_1*r_0^2*r_1*r_2+s_2^2*t_1^2*r_0^2*r_1*r_2+s_0^2*r_0*r_1^2*r_2-s_0*s_1*r_ 0*r_1^2*r_2+s_0*s_2*t_0*r_0*r_1^2*r_2-3*s_0*s_2*t_1*r_0*r_1^2*r_2+s_1*s_2*t_1*r_0*r_1^2*r_2-s_2^ 2*t_0*t_1*r_0*r_1^2*r_2+2*s_2^2*t_1^2*r_0*r_1^2*r_2+s_0^2*r_1^3*r_2-s_0*s_1*r_1^3*r_2-2*s_0*s_2* t_1*r_1^3*r_2+s_1*s_2*t_1*r_1^3*r_2+s_2^2*t_1^2*r_1^3*r_2-s_0*s_2*t_0*r_0^2*r_2^2+s_2^2*t_0^2*r_ 0^2*r_2^2+s_2^2*t_0*t_1*r_0^2*r_2^2-s_0*s_2*t_0*r_0*r_1*r_2^2+s_2^2*t_0^2*r_0*r_1*r_2^2+s_0*s_2* t_1*r_0*r_1*r_2^2-s_2^2*t_1^2*r_0*r_1*r_2^2-s_0^2*r_1^2*r_2^2+s_0*s_1*r_1^2*r_2^2+s_0*s_2*t_0*r_ 1^2*r_2^2-s_1*s_2*t_0*r_1^2*r_2^2+2*s_0*s_2*t_1*r_1^2*r_2^2-s_1*s_2*t_1*r_1^2*r_2^2-s_2^2*t_0*t_ 1*r_1^2*r_2^2-s_2^2*t_1^2*r_1^2*r_2^2-s_0^2*s_2*t_0*t_1*r_0^3*r_3+s_0*s_1*s_2*t_0*t_1*r_0^3*r_3+ s_0*s_2^2*t_0*t_1^2*r_0^3*r_3-s_1*s_2^2*t_0*t_1^2*r_0^3*r_3+s_0^3*t_0*r_0^2*r_1*r_3-2*s_0^2*s_1* t_0*r_0^2*r_1*r_3+s_0*s_1^2*t_0*r_0^2*r_1*r_3-2*s_0^2*s_2*t_0*t_1*r_0^2*r_1*r_3+3*s_0*s_1*s_2*t_ 0*t_1*r_0^2*r_1*r_3-s_1^2*s_2*t_0*t_1*r_0^2*r_1*r_3+s_0^2*s_2*t_1^2*r_0^2*r_1*r_3-s_0*s_1*s_2*t_ 1^2*r_0^2*r_1*r_3+s_0*s_2^2*t_0*t_1^2*r_0^2*r_1*r_3-s_1*s_2^2*t_0*t_1^2*r_0^2*r_1*r_3-s_0*s_2^2* t_1^3*r_0^2*r_1*r_3+s_1*s_2^2*t_1^3*r_0^2*r_1*r_3-s_0^3*t_1*r_0*r_1^2*r_3+2*s_0^2*s_1*t_1*r_0*r_ 1^2*r_3-s_0*s_1^2*t_1*r_0*r_1^2*r_3+2*s_0^2*s_2*t_1^2*r_0*r_1^2*r_3-3*s_0*s_1*s_2*t_1^2*r_0*r_1^ 2*r_3+s_1^2*s_2*t_1^2*r_0*r_1^2*r_3-s_0*s_2^2*t_1^3*r_0*r_1^2*r_3+s_1*s_2^2*t_1^3*r_0*r_1^2*r_3- s_0*s_1*s_2*t_0^2*r_0^2*r_2*r_3+s_0^2*s_2*t_0*t_1*r_0^2*r_2*r_3-2*s_0*s_1*s_2*t_0*t_1*r_0^2*r_2* r_3+s_1*s_2^2*t_0^2*t_1*r_0^2*r_2*r_3-s_0*s_2^2*t_0*t_1^2*r_0^2*r_2*r_3+2*s_1*s_2^2*t_0*t_1^2*r_ 0^2*r_2*r_3-2*s_0^3*t_0*r_0*r_1*r_2*r_3+3*s_0^2*s_1*t_0*r_0*r_1*r_2*r_3-s_0*s_1^2*t_0*r_0*r_1*r_ 2*r_3-s_0*s_1*s_2*t_0^2*r_0*r_1*r_2*r_3+3*s_0^2*s_2*t_0*t_1*r_0*r_1*r_2*r_3-4*s_0*s_1*s_2*t_0*t_ 1*r_0*r_1*r_2*r_3+s_1^2*s_2*t_0*t_1*r_0*r_1*r_2*r_3+s_1*s_2^2*t_0^2*t_1*r_0*r_1*r_2*r_3-s_0^2*s_ 2*t_1^2*r_0*r_1*r_2*r_3+2*s_0*s_1*s_2*t_1^2*r_0*r_1*r_2*r_3-s_0*s_2^2*t_0*t_1^2*r_0*r_1*r_2*r_3+ s_1*s_2^2*t_0*t_1^2*r_0*r_1*r_2*r_3+s_0*s_2^2*t_1^3*r_0*r_1*r_2*r_3-2*s_1*s_2^2*t_1^3*r_0*r_1*r_ 2*r_3-2*s_0^2*s_1*t_0*r_1^2*r_2*r_3+2*s_0*s_1^2*t_0*r_1^2*r_2*r_3+s_0^3*t_1*r_1^2*r_2*r_3-3*s_0^ 2*s_1*t_1*r_1^2*r_2*r_3+2*s_0*s_1^2*t_1*r_1^2*r_2*r_3+3*s_0*s_1*s_2*t_0*t_1*r_1^2*r_2*r_3-2*s_1^ 2*s_2*t_0*t_1*r_1^2*r_2*r_3-2*s_0^2*s_2*t_1^2*r_1^2*r_2*r_3+5*s_0*s_1*s_2*t_1^2*r_1^2*r_2*r_3-2* s_1^2*s_2*t_1^2*r_1^2*r_2*r_3-s_1*s_2^2*t_0*t_1^2*r_1^2*r_2*r_3+s_0*s_2^2*t_1^3*r_1^2*r_2*r_3-2* s_1*s_2^2*t_1^3*r_1^2*r_2*r_3+s_0^3*t_0*r_1*r_2^2*r_3-s_0^2*s_1*t_0*r_1*r_2^2*r_3-s_0*s_1*s_2*t_ 0^2*r_1*r_2^2*r_3+s_1^2*s_2*t_0^2*r_1*r_2^2*r_3-s_0^2*s_2*t_0*t_1*r_1*r_2^2*r_3+s_0*s_1*s_2*t_0* t_1*r_1*r_2^2*r_3+s_0^2*s_1*s_2*t_0*t_1^2*r_0^2*r_3^2-s_0*s_1^2*s_2*t_0*t_1^2*r_0^2*r_3^2-s_0*s_ 1*s_2^2*t_0*t_1^3*r_0^2*r_3^2+s_1^2*s_2^2*t_0*t_1^3*r_0^2*r_3^2-s_0^3*s_1*t_0*t_1*r_0*r_1*r_3^2+ 2*s_0^2*s_1^2*t_0*t_1*r_0*r_1*r_3^2-s_0*s_1^3*t_0*t_1*r_0*r_1*r_3^2+2*s_0^2*s_1*s_2*t_0*t_1^2*r_ 0*r_1*r_3^2-3*s_0*s_1^2*s_2*t_0*t_1^2*r_0*r_1*r_3^2+s_1^3*s_2*t_0*t_1^2*r_0*r_1*r_3^2-s_0^2*s_1* s_2*t_1^3*r_0*r_1*r_3^2+s_0*s_1^2*s_2*t_1^3*r_0*r_1*r_3^2-s_0*s_1*s_2^2*t_0*t_1^3*r_0*r_1*r_3^2+ s_1^2*s_2^2*t_0*t_1^3*r_0*r_1*r_3^2+s_0*s_1*s_2^2*t_1^4*r_0*r_1*r_3^2-s_1^2*s_2^2*t_1^4*r_0*r_1* r_3^2+s_0^3*s_1*t_1^2*r_1^2*r_3^2-2*s_0^2*s_1^2*t_1^2*r_1^2*r_3^2+s_0*s_1^3*t_1^2*r_1^2*r_3^2-2* s_0^2*s_1*s_2*t_1^3*r_1^2*r_3^2+3*s_0*s_1^2*s_2*t_1^3*r_1^2*r_3^2-s_1^3*s_2*t_1^3*r_1^2*r_3^2+s_ 0*s_1*s_2^2*t_1^4*r_1^2*r_3^2-s_1^2*s_2^2*t_1^4*r_1^2*r_3^2+s_0^2*s_1^2*t_0^2*r_1*r_2*r_3^2-s_0* s_1^3*t_0^2*r_1*r_2*r_3^2+s_0^3*s_1*t_0*t_1*r_1*r_2*r_3^2-s_0^2*s_1^2*t_0*t_1*r_1*r_2*r_3^2-s_0* s_1^2*s_2*t_0^2*t_1*r_1*r_2*r_3^2+s_1^3*s_2*t_0^2*t_1*r_1*r_2*r_3^2-s_0^2*s_1*s_2*t_0*t_1^2*r_1* r_2*r_3^2+s_0*s_1^2*s_2*t_0*t_1^2*r_1*r_2*r_3^2); coxModel) -- End of precomputed functions modelInP3xP3xP3xP3=method() modelInP3xP3xP3xP3(Ring) := kk -> ( (relLin,relPfaf,d1',d2,Ms) := setupGodeaux(kk,"1111"); R:=kk[support relPfaf]; q:=ideal sub(relPfaf,R); qs:=gens q; Ms=apply(Ms,M->map(R^4,,sub(M,R))); qs=sub(qs,R); b := symbol b; B:=kk[b_(0,0)..b_(3,3),Degrees=>{4:{1,0,0,0},4:{0,1,0,0},4:{0,0,1,0},4:{0,0,0,1}}]; bs:=apply(4,i->(vars B)_{0+4*i..3+4*i}); RB:=R**B; incidence:=gens sum(4,i->ideal(sub(bs_i,RB)*sub(Ms_i,RB))); bmatrix:=map(B^12,,sub(diff(transpose sub(vars R,RB),incidence),B)); betti(hyp:=ann coker bmatrix); hesss:=apply(4,i->diff(transpose bs_i,diff(bs_i,gens hyp))); I0:=gens(ideal jacobian hyp); elapsedTime scan(4,d->scan(4,c->(elapsedTime I0=gens trim ideal (syz((matrix{{B_(4*c+d)}}|I0),DegreeLimit=>{3,3,3,3}))^{0}))); Ks:=apply(hesss,h-> ann coker h); I1:=ideal I0 + sum Ks; I1) extraGrading= method() extraGrading(Ideal) := I -> ( --add the code which produced the extra grading ) collapsingOneCStar =method() collapsingOneCStar(Ideal) := I1 -> ( Bgraded := ring I1; kk :=coefficientRing Bgraded; vBg := vars Bgraded; b := matrix apply(4,i->apply(4,j->vBg_(0,4*i+j))); h := matrix {{b_(0,1)*b_(1,3)*b_(2,3), b_(0,2)*b_(1,1)*b_(2,3), b_(0,2)*b_(1,2)*b_(2,3), b_(0,2)*b_(1,3)*b_(2,1), b_(0,2)*b_(1,3)*b_(2,2), b_(0,3)*b_(1,3)*b_(2,3)}}; b3:=(vars Bgraded)_{12..15}; betti(h6:=symmetricPower(6,h)); b34:=symmetricPower(4,b3); bh:=b34**h6; bound:=max degrees source bh; elapsedTime betti (rel:=sub( syz(bh%I1,DegreeLimit=>bound),kk)); -- 185.344 seconds elapsed w := symbol w; z := symbol z; P3xP5:=kk[w_0..w_3,z_0..z_5,Degrees=>{4:{1,0},6:{0,1}}]; betti(w4:=symmetricPower(4,ww:=(vars P3xP5)_{0..3})); betti(z6:=symmetricPower(6,zz:=(vars P3xP5)_{4..9})); H:=map(P3xP5^1,,(w4**z6)*rel); H) furtherCollapsing=method() furtherCollapsing(Ring) := kk -> ( H:=precomputedModelInP3xP5(kk); degs:={{1, 0, 2, 1, 0}, {1, 0, 1, 0, 2}, {1, 0, 1, 1, 1}, {1, 0, 0, 2, 1}, {0, 1, 2, 1, 1}, {0, 1, 2, 2, 0}, {0, 1, 1, 2, 1}, {0, 1, 0, 1, 3}, {0, 1, 0, 2, 2}, {0, 1, 1, 2, 1}}; w := symbol w;z := symbol z; P3xP5g:=kk[w_0..w_3,z_0..z_5,Degrees=>degs]; Hg:=map(P3xP5g^1,,sub(H,vars P3xP5g)); assert(isHomogeneous Hg); h2:=matrix {{w_0^2*z_0^2*z_4, w_0^2*z_0*z_1*z_3, w_0*w_1*z_0*z_1*z_2, w_0*w_1*z_0*z_1*z_5, w_0*w_2*z_0^2*z_2, w_0*w_2*z_0^2*z_5, w_0*w_3*z_0^3, w_1^2*z_1^3, w_1*w_2*z_0*z_1^2, w_2^2*z_0^2*z_1}}; assert(#keys tally degrees source h2==1); u := symbol u; P9:=kk[u_0..u_9]; phi:=map(P3xP5g,P9,h2); betti (fZ:=res (Z:=trim ker phi)); m4x2:=fZ.dd_3^{0,2,4,5}_{0,1}; PZ:=P9/Z; base:=sub(basis(6,PZ),P9); a:=map(P3xP5g^1,,sub(base,h2)); b:=a%ideal Hg; bound := first keys tally degrees source b; elapsedTime betti(rels:=sub(syz(b,DegreeLimit=>bound),kk)); betti(eqs:=ideal (sub(base,P9)*rels)); Z1:=trim(Z+eqs); r := symbol r; s := symbol s; t := symbol t; coxRing:=kk[s_0..s_2,t_0,t_1,r_0..r_3,Degrees=>{2:{1,1,0},{1,0,0},2:{0,1,0},3:{1,2,1},{0,0,1}}]; subs:={u_2=>s_0*t_0*r_3,u_4=>s_0*t_1*r_3,u_3=>s_1*t_0*r_3,u_5=>s_1*t_1*r_3, u_7=>s_2*t_0^2*r_3,u_8=>s_2*t_0*t_1*r_3,u_9=>s_2*t_1^2*r_3,u_0=>r_0,u_1=>r_1,u_6=>r_2}; Zcox:=trim sub(Z1,subs); scan(gens coxRing,m->Zcox=saturate(Zcox,m)); Zcox) modelInP1BundleOverP2xP5 = method() modelInP1BundleOverP2xP5(Matrix) := H -> ( P3xP5 := ring H; kk :=coefficientRing P3xP5; x := symbol x; y := symbol y; z := symbol z; P125:=kk[x_0,x_1,y_0..y_2,z_0..z_5,Degrees=>{{1,1,0},{1,0,0},3:{0,1,0},6:{0,0,1}}]; -- blow-up of a double point on H: subs:=matrix{{x_1*y_0,x_0,x_1*y_1,x_1*y_2,z_0,z_1,z_2,z_3,z_4,z_5}}; H125:=sub(H,subs); -- remove the exceptional divisor: H125=map(P125^1,,contract(x_1^2,H125)); H125) findPointInP3xP5=method() findPointInP3xP5(Ring) := kk -> ( H:=precomputedModelInP3xP5(kk); H125:=modelInP1BundleOverP2xP5(H); P125:=ring H125; p2xp5:=random(kk^1,kk^9); quadric :=sub(H125,(vars P125)_{0,1}|p2xp5); cquad := decompose ideal quadric; while #cquad <2 do (p2xp5=random(kk^1,kk^9); quadric =sub(H125,(vars P125)_{0,1}|p2xp5); cquad = decompose ideal quadric); p1:=sub(transpose syz diff ((vars P125)_{0,1}, gens first cquad),kk); p2 := p2xp5_{0,1,2}; p5:= p2xp5_{3..8}; p3xp5:=matrix{{p1_(0,1)*p2_(0,0), p1_(0,0),p1_(0,1)*p2_(0,1),p1_(0,1)*p2_(0,2)}}|p5; assert(sub(H,p3xp5)==0); p3xp5) pointOnARationalCodim1Hypersurface=method() pointOnARationalCodim1Hypersurface(ZZ) := ht -> ( H := ideal precomputedModelInP3xP5(QQ); lcm terms H_0; P3xP5 := ring H; constTerm := (coefficients(H_0,Variables=>{P3xP5_3}))_1_(2,0); while( a := randomMed(ZZ^1,ZZ^3,ht); b := randomMed(ZZ^1,ZZ^5,ht); sub1 := a|matrix{{P3xP5_3,P3xP5_4}}|b; c := matrix{{P3xP5_4}}% trim ideal sub(constTerm,sub1); sub2 := a|matrix{{P3xP5_3}}|c|b; d:=matrix{{P3xP5_3}}% (trim sub(H,sub2):ideal P3xP5_3); pt:=sub(a|d|c|b,QQ); not(checkPoint(pt))) do(); pt) TEST /// assert all(10,i-> (pt = pointOnARationalCodim1Hypersurface(19); (checkPoint(pt)))) /// fromPointInP3xP5ToPointInP3xP3xP3xP3=method() fromPointInP3xP5ToPointInP3xP3xP3xP3(Matrix) := p3xp5 -> ( kk := ring (p3xp5); p5 := p3xp5_{4..9}; p3:=p3xp5_{0..3}; I1 := precomputedModelInP3xP3xP3xP3(kk); B := kk[gens ring I1]; b := matrix apply(4,i-> apply(4,j->(vars B)_(0,4*i+j))); h := matrix {{b_(0,1)*b_(1,3)*b_(2,3), b_(0,2)*b_(1,1)*b_(2,3), b_(0,2)*b_(1,2)*b_(2,3), b_(0,2)*b_(1,3)*b_(2,1), b_(0,2)*b_(1,3)*b_(2,2), b_(0,3)*b_(1,3)*b_(2,3)}}; fiber := minors(2,h||p5); scan(12,i->fiber=saturate(fiber, B_i)); betti fiber; linEq:= ideal (gens fiber)_{0..2}; hilbertBurch:=syz((gens fiber)_{3..5}%linEq); pointInFiber := random(kk^2,kk^1); p3333:=ideal(hilbertBurch*pointInFiber)+linEq+minors(2,(vars B)_{12..15}||p3)+sub(I1,B); scan(gens B,m->p3333=saturate(p3333,m)); betti p3333; p3333a:=sub(syz(transpose jacobian p3333),kk); p3333b:= transpose sum(4,i->p3333a_{i}); p3333b) fromPointInP3xP3xP3xP3ToLine=method() fromPointInP3xP3xP3xP3ToLine(Matrix):= p3333 -> ( kk := ring p3333; a := symbol a; R := kk[a_323,a_313,a_303,a_223,a_212,a_202,a_113,a_112,a_101,a_003,a_002,a_001]; Ms :={matrix {{ 0, a_113, -a_323, -a_223}, {-a_113, 0, a_212, a_313}, { a_323,-a_212, 0 , a_112}, { a_223,-a_313, -a_112, 0 }}, matrix {{ 0 , a_003, -a_223, -a_323}, {-a_003, 0 , a_303, a_202}, { a_223,-a_303, 0 , a_002}, { a_323,-a_202, -a_002, 0 }}, matrix {{ 0 , a_113, a_003, a_303}, {-a_113, 0 , a_313, a_001}, {-a_003,-a_313, 0 , a_101}, {-a_303,-a_001, -a_101, 0 }}, matrix {{ 0 , a_001, a_101, a_202}, {-a_001, 0 , a_212, a_112}, {-a_101,-a_212, 0 , a_002}, {-a_202,-a_112, -a_002, 0 }}}; relPfaf := ideal apply(4, i-> pfaffians(4,Ms_i)); qs:=gens relPfaf; --(relLin,relPfaf,d1',d2,Ms):= setupGodeaux(kk,"1111"); --R:=kk[support relPfaf]; --q:=ideal sub(relPfaf,R); --qs:=gens q; --Ms=apply(Ms,M->map(R^4,,sub(M,R))); line:=trim sum(4,i->ideal(p3333_{4*i..4*i+3}*Ms_i)); assert(qs%line==0), subs:=(vars R%line); lastVariables := gens trim ideal subs; sub(diff(transpose lastVariables,subs),kk) ) fromLineToStandardResolution = method() fromLineToStandardResolution(Matrix):= line ->( kk := ring line; (relLin,relPfaf,d1',d2,Ms):= setupGodeaux(kk,"1111"); Sa := getP11(relPfaf); varsa := vars Sa; SR := ring d1'; numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); randline := transpose line; aaLine :=ideal(sub(varsa,SR)-transpose ( randline*matrix{{x0},{x1}})); subsLine := vars SR % aaLine; (solutionMat,restVars) := solutionMatrix(relLin); (randPoint,subsPoint) := randomSection(solutionMat,restVars,subsLine); F := standardResolution(d1',d2,subsPoint,"1111"); F) fromLineToGodeauxSurface = method() fromLineToGodeauxSurface(Matrix):= line ->( while( -- verify ring condition F := fromLineToStandardResolution(line); d1 := F.dd_1; not(verifyAssertions(d1))) do(); I := surfaceInWeightedP5(F); I) randomMed=method() randomMed(ZZ) := ht->random(ht)-floor(ht/2); randomMed(Module,Module,ZZ) := (F,G,ht) -> matrix apply(rank F,i-> apply(rank G,j->randomMed(ht))) TEST /// randomMed(ZZ^2,ZZ^3,19) /// checkPoint=method(TypicalValue=>Boolean) checkPoint(Matrix) := (pt) ->( kk := ring pt; prodCoef := product flatten entries pt; prodCoef != 0_kk) ----------------------------------------------------------------------------------- ----------------------------------------------------------------------------------- ------------Procedures for computing standard resolutions-------------------------- ----------------------------------------------------------------------------------- ----------------------------------------------------------------------------------- standardResolution=method() standardResolution(Matrix,Matrix,Matrix,String) := (d1',d2,subsPoint,s) ->( -- input: d1': the first syzygy matrix without the first row in normal form -- d2: the second syzygz matrix in normal form -- subspoint: the row matrix of variables of the set-up substituted by the -- assignments from the procedure randomSection -- s: the configuration string of the 4 base points -- output: F: a standard resolution of the S-module R obtained from the given input SR := ring d2; nvars := numgens SR; kk := coefficientRing(SR); S := kk[(gens SR)_{nvars-6..nvars-1},Degrees=>{2:2,4:3}]; d2 = map(S^{6:-6,12:-7,8:-8},S^{6:-11,12:-10,8:-9},sub(sub(d2,subsPoint),S)); d3t := syz(d2,DegreeLimit=>{20}); --d4test := syz(d3t,DegreeLimit=>{25}); d1temp :=(transpose d3t)**S^{-17}; --d2test := syz(d1temp,DegreeLimit=>{18}); --assert(betti d2test == betti d2 and source d4test == 0); d1b := sub(sub(d1',subsPoint),S); d10 := d1temp^{7}_{0..25}; d1t := d10 || d1b; x0 := (gens S)_0; x1 := (gens S)_1; d1tmod := d1t % ideal(x0,x1); D := complexModuloRegularSequence(S,s); t0 := transpose(D.dd_1) // transpose(d1tmod); d1 := map(S^{1:0,4:-4,3:-5},S^{6:-6,12:-7,8:-8},t0*d1t); d1mod := d1 % ideal(x0,x1); d2mod := d2 % ideal(x0,x1); if (d1mod-D.dd_1 !=0) then error "minimal free resolution is not standard"; d3 := transpose(d1)**S^{-17}; F := chainComplex(d1,d2,d3); F) TEST /// kk = ZZ/41; /// randomStandardResolution=method(Options=>{Height => 19,PrecomputedParametrization => true}) -- Input: kk: a field -- s: configuration string of the four base points -- Output: a standard resolution of an S = kk[x_0,x_1,y_0,y_1,y_2,y_3]-module R randomStandardResolution(Ring,String) := (kk,s) ->( (relLin,relPfaf,d1',d2,Ms) := setupGodeaux(kk,s); Sa := getP11(relPfaf); point1 := randomPoint(ideal relPfaf,Sa); (randLine,subsLine) := randomLine(point1,relPfaf,Sa); (solutionMat,restVars) := solutionMatrix(relLin); (randPoint,subsPoint) := randomSection(solutionMat,restVars,subsLine); F := standardResolution(d1',d2,subsPoint,s); F) TEST /// kk = ZZ/37; s = "1111"; F = randomStandardResolution(kk,s); betti F /// randomStandardResolution(Ring) := (kk) ->( -- input: kk: a field -- output: a standard resolution of an S = kk[x_0,x_1,y_0,y_1,y_2,y_3]-module R s := "1111"; F := randomStandardResolution(kk,s); F) TEST /// kk = ZZ/17; s = "1111"; F = randomStandardResolution(kk,s,3); betti F /// randomStandardResolution(Ring,String,ZZ) := opt -> (kk,s,n) ->( -- Input: kk: a field -- s: configuration string of the four base points -- n: an integer between 1 and 5 describing the order of the torsion group of the surface -- Output: a standard resolution of an S = kk[x_0,x_1,y_0,y_1,y_2,y_3]-module R -- Note: If n is odd, then the configuration "211" and "22" of base points is not possible oHeight := opt.Height; oParametrization := opt.PrecomputedParametrization; if (n != 1 and n!=2 and n!=3 and n!=4 and n!=5) then error "n is no integer between 1 and 5"; if ((n == 2 or n==4) and (s=="1111" or s=="211")) then error "order of the torsion group and configuration of the base points are not compatible"; (relLin,relPfaf,d1',d2,Ms) := setupGodeaux(kk,s); Sa := getP11(relPfaf); if n == 1 then (randLine,subsLine) := randomLineTors0(d1',relPfaf); if n == 2 then (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); if n == 3 then (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); if n == 4 then (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); if n == 5 then (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); (solutionMat,restVars) := solutionMatrix(relLin); (randPoint,subsPoint) := randomSection(solutionMat,restVars,subsLine); F := standardResolution(d1',d2,subsPoint,s); F) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; F = randomStandardResolution(kk,s,3); betti F kk = QQ s = "22"; F = randomStandardResolution(kk,s,4); betti F /// randomStandardResolution(Ring,String,ZZ,ZZ) := opt -> (kk,s,n,h) ->( -- Input: kk: a field -- s: configuration string of the four base points -- n: an integer between 1 and 5 describing the order of the torsion group of the surface -- Output: a standard resolution of an S = kk[x_0,x_1,y_0,y_1,y_2,y_3]-module R -- Note: If n is odd, then the configuration "211" and "22" of base points is not possible oHeight := opt.Height; oParametrization := opt.PrecomputedParametrization; if (n != 1 and n!=2 and n!=3 and n!=4 and n!=5) then error "n is no integer between 1 and 5"; if ((n == 1 or n==3 or n==5) and (s=="22" or s=="211")) then error "double base points are not possible if the order of the torsion group is odd"; (relLin,relPfaf,d1',d2,Ms) := setupGodeaux(kk,s); Sa := getP11(relPfaf); if n == 1 then (randLine,subsLine) := randomLineTors0(d1',relPfaf,Ms,h),; if n == 2 then (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); if n == 3 then (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); if n == 4 then (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); if n == 5 then (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf, Height=>oHeight,PrecomputedParametrization=>oParametrization); (solutionMat,restVars) := solutionMatrix(relLin); (randPoint,subsPoint) := randomSection(solutionMat,restVars,subsLine); F := standardResolution(d1',d2,subsPoint,s); F) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; F = randomStandardResolution(kk,s,1,1); betti F /// randomLineTorsZ3 = method(Options=>{Height => 19,PrecomputedParametrization => true}) randomLineTorsZ3(Matrix,Matrix) := opt -> (d1',relPfaf) ->( -- input: d1': the first syzygy matrix in normal form with the first row omitted -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: randLine: a 12x2-matrix spanning a line leading to a Z/3Z-Godeaux surface -- subsLine: row matrix containing the variables of the normalized set-up with -- the a-variables being replaced by the assginments from the chosen line Sa := getP11(relPfaf); if opt.PrecomputedParametrization == false then ( lociE := lowerRankLociE(d1',relPfaf); lociEP3 := select(lociE,c-> codim c == 8); comp1 := first lociEP3; point1 := randomPoint(comp1,Sa); (tangentSpace1,phi) := tangentSpacePoint(point1,ideal relPfaf,relPfaf); cTangentSpace1 := decompose tangentSpace1; degreeComps := apply(cTangentSpace1,c-> degree c); maxDegree := max degreeComps; maxDegreeComp := select(cTangentSpace1,c-> degree(c) == maxDegree); comp2 := preimage(phi,first maxDegreeComp); (randLine,subsLine) := randomLine(point1,comp2,relPfaf,Sa); ) else ( SR := ring(d1'); numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); kk := coefficientRing(SR); varsa := vars Sa; (phi1,phi2) := precomputedTorsZ3Line(Sa); while ( if char(kk) == 0 then ( r1 := sub(randomIntegerMatrix(1,4,Height=>opt.Height),SR); r2 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); r3 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); ) else ( r1 = random(kk^1,kk^4); r2 = random(kk^1,kk^2); r3 = random(kk^1,kk^2)); not (r1 !=0 and r2!= 0 and r3 != 0)) do(); pt1Coord := sub(phi1.matrix,r1|r2|r3); pt2Coord := sub(phi2.matrix,r1|r2|r3); randLine = transpose (pt1Coord||pt2Coord); aaLine :=ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine = vars SR % aaLine); (randLine,subsLine)) TEST /// restart kk =QQ; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf); randLine kk =ZZ/nextPrime(11101); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); elapsedTime (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf,PrecomputedParametrization=>false); randLine elapsedTime (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf); randLine /// randomLineTors0=method() randomLineTors0(Matrix,Matrix) := (d1',relPfaf) ->( -- input: d1': the first syzygy matrix in normal form with the first row omitted -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: randLine: a 12x2-matrix spanning a line leading to a torsion-free surface -- subsLine: row matrix containing the variables of the normalized set-up with -- the a-variables being replaced by the assginments from the chosen line SR := ring(d1'); numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); kk := coefficientRing(SR); aMat := getAMatrix(d1'); Sa := getP11(relPfaf); varsa := vars Sa; if char(kk) == 0 then ( pt:=pointOnARationalCodim1Hypersurface(21); pt1:=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt); line := fromPointInP3xP3xP3xP3ToLine(pt1); randLine := transpose line; ) else ( pt=findPointInP3xP5(kk); pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt); line = fromPointInP3xP3xP3xP3ToLine(pt1); randLine = transpose line; ); aaLine :=ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine := vars SR % aaLine; (randLine,subsLine)) randomLineTors0(Matrix,Matrix,List,ZZ) := (d1',relPfaf,Ms,h) ->( SR := ring(d1'); numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); kk := coefficientRing(SR); aMat := getAMatrix(d1'); Sa := getP11(relPfaf); if h == 0 then ( while( -- find a line which does not intersect the hyperelliptic locus (randLine,subsLine) := randomLineTors0(d1',relPfaf); aMatLine := sub(aMat,subsLine); P1 := kk[support aMatLine]; ma4 := minors(4,sub(aMatLine,P1)); not codim(ma4)==2) do()); if h == 1 then ( while( -- the line does not intersetct the hyperelliptic locus in exactly one point while( -- the rank of the a-matrix at the chosen point is not 3 phi := precomputedHyperellipticPoint(Sa); pt1Coord := sub(sub(phi.matrix,random(kk^1,kk^10)),Sa); point1 := trim eliminate(ideal(sub(vars Sa,SR) - x0*sub(pt1Coord,SR)),x0); aMatP := aMat % point1; not (rank(aMatP) == 3)) do(); (randLine,subsLine) = randomLine(point1,relPfaf,Sa); aMatLine = sub(aMat,subsLine); P1 = kk[support aMatLine]; --ma4 = radical minors(4,sub(aMatLine,P1)); ma4 = intersect decompose minors(4,sub(aMatLine,P1)); not (codim(ma4)==1 and degree(ma4) ==1)) do()); if h == 2 then ( --lowA := lowerRankLociA(d1',relPfaf); --hypLocus := first select(lowA,c-> codim c == 6); hypLocus := precomputedHyperellipticLocus(Sa); Q := ideal sub(relPfaf,Sa); jacQ := jacobian Q; varsa := vars Sa; phi = precomputedHyperellipticPoint(Sa); while( -- the line does not intersetct the hyperelliptic locus in exactly two points while( -- the rank of the a-matrix at the chosen points is not 3 pt1Coord = sub(sub(phi.matrix,random(kk^1,kk^10)),Sa); point1 = trim eliminate(ideal(sub(vars Sa,SR) - x0*sub(pt1Coord,SR)),x0); aMatP = aMat % point1; not (rank(aMatP) == 3)) do(); tangentQPt1 := ideal (varsa* sub(jacQ,pt1Coord)); linSpace := varsa % ideal mingens tangentQPt1; Sa1 := kk[support linSpace]; linSpace1 := sub(linSpace,Sa1); relpfaf1 := ideal mingens sub(Q,linSpace1); I1 := ideal mingens sub(hypLocus,linSpace1); pt1 := ideal mingens sub(sub(point1,Sa),linSpace1); -- the new locus in P7 is a curve of degree 72 singular in the chosen point: -- we assume that this curve is reducible C1 := trim (I1+relpfaf1); z := local z; P6 := kk[z_0..z_6]; -- project from the chosen point to a P6: tau := map(Sa1,P6,gens pt1); -- the image in P6 is a curve of degree 52: C6 := preimage (tau,C1); -- we project to a P2 to find a rational point on C6 while( randInd := random(0,34); L := subsets(7,3); vars6 := vars P6; vars2 := (vars P6)_(L_randInd); elimVars := mingens ideal (vars6 % ideal vars2); P2 := kk[(entries vars2)_0]; while( H1 := random(1,P2); planeC := sub(eliminate(C6,support elimVars),P2); pointsInP2 := decompose(H1+planeC); ratPointsInP2 := select(pointsInP2,c-> degree(c)==1 and dim(c)==1); not (length(ratPointsInP2) > 0)) do(); pt2InP2 := last ratPointsInP2; ptsInP6 := trim(sub(pt2InP2,P6)+C6):ideal(vars2); ratPointsInP6 := select(decompose ptsInP6,c-> degree(c)==1 and dim(c)==1); not (length(ratPointsInP6) > 0)) do(); ptInP6 := first ratPointsInP6; ptInP7 := trim(saturate(C1 + tau(ptInP6),pt1)); phi1 := map(Sa1,Sa,linSpace1); ptInP11 := preimage(phi1,ptInP7); pt2Coord := transpose syz transpose jacobian ptInP11; randLine = transpose sub((pt1Coord||pt2Coord),SR); aaLine :=ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine = vars SR % aaLine; aMatLine = sub(aMat,subsLine); P1 = kk[support aMatLine]; ma4 = trim minors(4,sub(aMatLine,P1)); ma3 := minors(3,sub(aMatLine,P1)); syzADeg := degrees source syz aMatLine; not (codim(ma4)==1 and degree(ma4) ==2 and codim(ma3)==2 and syzADeg == {{8},{8}})) do()); if h == 3 then ( comp0 := trim( ideal(aMat^{0})+ideal(relPfaf)); comp3 := trim( ideal(aMat^{3})+ideal(relPfaf)); Q = ideal sub(relPfaf,Sa); jacQ = jacobian Q; varsa = vars Sa; hypLocus = precomputedHyperellipticLocus(Sa); phi = precomputedHyperellipticPoint(Sa); while( -- the line does not intersetct the hyperelliptic locus in exactly two points while( while( -- the rank of the a-matrix at the chosen points is not 3 pt1Coord = sub(sub(phi.matrix,random(kk^1,kk^10)),Sa); point1 = trim eliminate(ideal(sub(vars Sa,SR) - x0*sub(pt1Coord,SR)),x0); --point1 = randomPoint(comp0,Sa); --pt1Coord = transpose syz transpose jacobian sub(point1,Sa); aMatP = aMat % point1; not (rank(aMatP) == 3)) do(); tangentQPt1 = ideal (varsa* sub(jacQ,pt1Coord)); linSpace = varsa % ideal mingens tangentQPt1; Sa1 = kk[support linSpace]; linSpace1 = sub(linSpace,Sa1); relpfaf1 = ideal mingens sub(Q,linSpace1); I1 = ideal mingens sub(sub(hypLocus,Sa),linSpace1); pt1 = ideal mingens sub(sub(point1,Sa),linSpace1); -- the new locus in P7 is a curve of degree 72 singular in the chosen point: -- we assume that this curve is reducible C1 = trim (I1+relpfaf1); not (dim(C1)==2)) do(); z = local z; P6 = kk[z_0..z_6]; -- project from the chosen point to a P6: tau = map(Sa1,P6,gens pt1); -- the image in P6 is a curve of degree 50: C6 = preimage (tau,C1); -- we project to a P2 to find a rational point on C6 while ( while( randInd = random(0,34); L = subsets(7,3); vars6 = vars P6; vars2 = (vars P6)_(L_randInd); elimVars = mingens ideal (vars6 % ideal vars2); P2 = kk[(entries vars2)_0]; while( H1 = random(1,P2); planeC = sub(eliminate(C6,support elimVars),P2); pointsInP2 = decompose(H1+planeC); ratPointsInP2 = select(pointsInP2,c-> degree(c)==1 and dim(c)==1); not (length(ratPointsInP2) > 0)) do(); pt2InP2 = last ratPointsInP2; ptsInP6 = trim(sub(pt2InP2,P6)+C6):ideal(vars2); ratPointsInP6 = select(decompose ptsInP6,c-> degree(c)==1 and dim(c)==1); not (length(ratPointsInP6) > 0)) do(); ptInP6 = last ratPointsInP6; ptInP7 = first decompose trim(saturate(C1 + tau(ptInP6),pt1)); not (dim(ptInP7) == 1)) do(); phi1 = map(Sa1,Sa,linSpace1); ptInP11 = preimage(phi1,ptInP7); pt2Coord = transpose syz transpose jacobian ptInP11; randLine = transpose sub((pt1Coord||pt2Coord),SR); aaLine =ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine = vars SR % aaLine; aMatLine = sub(aMat,subsLine); P1 = kk[support aMatLine]; ma4 = trim minors(4,sub(aMatLine,P1)); ma3 = minors(3,sub(aMatLine,P1)); not (codim(ma4)==1 and degree(ma4) ==3 and codim(ma3)==2)) do()); (randLine,subsLine)) TEST /// kk =ZZ/nextPrime(32101); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); elapsedTime (randLine,subsLine) = randomLineTors0(d1',relPfaf); randLine elapsedTime (randLine,subsLine) = randomLineTors0(d1',relPfaf,Ms,1); randLine /// precomputedHyperellipticPoint=method() precomputedHyperellipticPoint(Ring) := Sa -> ( -- rational parametrization of the hyperelliptic loci kk := coefficientRing(Sa); v := local v; w := local w; x := local x; y := local y; z := local z; R := kk[v_0,v_1,w_0,w_1,x_0,x_1,y_0,y_1,z_0,z_1,Degrees=>{1:{1,2,0,0,0},1:{1,0,0,0,0},2:{0,1,0,0,0},2:{0,0,1,0,0},2:{0,0,0,1,0},2:{0,0,0,0,1}}]; paraTex := matrix{{ v_0^2 * (x_1*w_1-x_0*w_0) * x_1 * (x_1+x_0) * y_0 * y_1 * z_1^2 , v_0^2 * (x_1 * w_1-x_0 * w_0)*x_0 * (x_1+x_0 )* y_0 * y_1 * z_0^2 , -v_1^2 * w_0^2 * w_1^2 * (w_1+w_0) * x_0 * x_1 * (x_1+x_0) * y_0 * y_1 * z_1^2 , -v_0^2 * (x_1*w_1-x_0*w_0) * x_0 * x_1 * y_0^2 * z_1^2 , -v_0^2 * (x_1*w_1-x_0*w_0) * x_0 * (x_1+x_0) * y_1^2 * z_0^2 , v_1^2 * w_0^2 * w_1 * (w_1+w_0)^2 * x_0 * x_1 * (x_1+x_0) * y_1^2 * z_1^2, -v_0^2 * (x_1*w_1-x_0*w_0) * x_0 * x_1 * y_0^2 * z_0 * z_1 , v_0^2 * (x_1*w_1-x_0*w_0) * x_1 * (x_1+x_0) * y_1^2 * z_0 * z_1 , -v_1^2 * w_0 * w_1^2 * (w_1+w_0)^2 * x_0 * x_1 * (x_1+x_0) * y_1^2 * z_0 * z_1 , -v_0 * v_1 * w_0 * w_1 * (x_1*w_1-x_0*w_0) * x_0 * x_1 * y_0^2 * z_1^2 , v_0 * v_1 * w_0 * (w_1+w_0) * (x_1*w_1-x_0*w_0) * x_1 * (x_1+x_0) * y_1^2 * z_1^2 , -v_0 * v_1 * w_1 * (w_1+w_0) * (x_1*w_1-x_0*w_0)* x_0 * (x_1+x_0) * y_1^2 * z_0^2 }}; para:=matrix {{-v_0^2*w_0*x_0^2*x_1*y_0*y_1*z_1^2-v_0^2*w_0*x_0*x_1^2*y_0* y_1*z_1^2+v_0^2*w_1*x_0*x_1^2*y_0*y_1*z_1^2+v_0^2*w_1*x_1^3*y_0*y_1* z_1^2, -v_0^2*w_0*x_0^3*y_0*y_1*z_0^2-v_0^2*w_0*x_0^2*x_1*y_0*y_1*z_ 0^2+v_0^2*w_1*x_0^2*x_1*y_0*y_1*z_0^2+v_0^2*w_1*x_0*x_1^2*y_0*y_1*z_ 0^2, -v_1^2*w_0^3*w_1^2*x_0^2*x_1*y_0*y_1*z_1^2-v_1^2*w_0^2*w_1^3*x_ 0^2*x_1*y_0*y_1*z_1^2-v_1^2*w_0^3*w_1^2*x_0*x_1^2*y_0*y_1*z_1^2-v_1^ 2*w_0^2*w_1^3*x_0*x_1^2*y_0*y_1*z_1^2, v_0^2*w_0*x_0^2*x_1*y_0^2*z_1^2-v_0^2*w_1*x_0*x_1^2*y_0^2*z_1^2, v_0^2*w_0*x_0^3*y_1^2*z_0^2+v_0^2*w_0*x_0^2*x_1*y_1^2*z_0^2-v_0^2*w_ 1*x_0^2*x_1*y_1^2*z_0^2-v_0^2*w_1*x_0*x_1^2*y_1^2*z_0^2, v_1^2*w_0^4*w_1*x_0^2*x_1*y_1^2*z_1^2+2*v_1^2*w_0^3*w_1^2*x_0^2*x_1* y_1^2*z_1^2+v_1^2*w_0^2*w_1^3*x_0^2*x_1*y_1^2*z_1^2+v_1^2*w_0^4*w_1* x_0*x_1^2*y_1^2*z_1^2+2*v_1^2*w_0^3*w_1^2*x_0*x_1^2*y_1^2*z_1^2+v_1^ 2*w_0^2*w_1^3*x_0*x_1^2*y_1^2*z_1^2, v_0^2*w_0*x_0^2*x_1*y_0^2*z_0*z_1-v_0^2*w_1*x_0*x_1^2*y_0^2*z_0*z_1, -v_0^2*w_0*x_0^2*x_1*y_1^2*z_0*z_1-v_0^2*w_0*x_0*x_1^2*y_1^2*z_0*z_1 +v_0^2*w_1*x_0*x_1^2*y_1^2*z_0*z_1+v_0^2*w_1*x_1^3*y_1^2*z_0*z_1, -v_1^2*w_0^3*w_1^2*x_0^2*x_1*y_1^2*z_0*z_1-2*v_1^2*w_0^2*w_1^3*x_0^2 *x_1*y_1^2*z_0*z_1-v_1^2*w_0*w_1^4*x_0^2*x_1*y_1^2*z_0*z_1-v_1^2*w_0 ^3*w_1^2*x_0*x_1^2*y_1^2*z_0*z_1-2*v_1^2*w_0^2*w_1^3*x_0*x_1^2*y_1^2 *z_0*z_1-v_1^2*w_0*w_1^4*x_0*x_1^2*y_1^2*z_0*z_1, v_0*v_1*w_0^2*w_1*x_0^2*x_1*y_0^2*z_1^2-v_0*v_1*w_0*w_1^2*x_0*x_1^2* y_0^2*z_1^2, -v_0*v_1*w_0^3*x_0^2*x_1*y_1^2*z_1^2-v_0*v_1*w_0^2*w_1* x_0^2*x_1*y_1^2*z_1^2-v_0*v_1*w_0^3*x_0*x_1^2*y_1^2*z_1^2+v_0*v_1*w_ 0*w_1^2*x_0*x_1^2*y_1^2*z_1^2+v_0*v_1*w_0^2*w_1*x_1^3*y_1^2*z_1^2+v_ 0*v_1*w_0*w_1^2*x_1^3*y_1^2*z_1^2, v_0*v_1*w_0^2*w_1*x_0^3*y_1^2*z_0^2+v_0*v_1*w_0*w_1^2*x_0^3*y_1^2*z_ 0^2+v_0*v_1*w_0^2*w_1*x_0^2*x_1*y_1^2*z_0^2-v_0*v_1*w_1^3*x_0^2*x_1* y_1^2*z_0^2-v_0*v_1*w_0*w_1^2*x_0*x_1^2*y_1^2*z_0^2-v_0*v_1*w_1^3*x_ 0*x_1^2*y_1^2*z_0^2}}; assert(paraTex==para); map(R,Sa,para)) TEST /// kk=QQ s="1111" (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf) vars Sa paraJ=matrix precomputedHyperellipticPoint(Sa) coxR =kk[v_0..z_1,Degrees=>degrees ring paraJ] paraTex=matrix{{ v_0^2 * (x_1*w_1-x_0*w_0) * x_1 * (x_1+x_0) * y_0 * y_1 * z_1^2 , v_0^2 * (x_1 * w_1-x_0 * w_0)*x_0 * (x_1+x_0 )* y_0 * y_1 * z_0^2 , -v_1^2 * w_0^2 * w_1^2 * (w_1+w_0) * x_0 * x_1 * (x_1+x_0) * y_0 * y_1 * z_1^2 , -v_0^2 * (x_1 * w_1-x_0 * w_0) * x_0 * x_1 * y_0^2 * z_1^2 , -v_0^2* (x_1 * w_1-x_0 * w_0) * x_0 * (x_1+x_0) * y_1^2 * z_0^2 , v_1^2 * w_0^2 * w_1 * (w_1+w_0)^2 * x_0 * x_1 * (x_1+x_0) * y_1^2 * z_1^2 , -v_0^2* (x_1 * w_1-x_0 * w_0) * x_0 * x_1 * y_0^2 * z_0 * z_1 , v_0^2* (x_1 * w_1-x_0 * w_0) * x_1 * (x_1+x_0) * y_1^2 * z_0 * z_1 , -v_1^2* w_0 * w_1^2 * (w_1+w_0)^2 * x_0 * x_1 * (x_1+x_0) * y_1^2 * z_0 * z_1 , -v_0 * v_1 * w_0 * w_1 * (x_1*w_1-x_0*w_0) * x_0 * x_1 * y_0^2 * z_1^2 , v_0 * v_1 * w_0 * (w_1+w_0) * (x_1 * w_1-x_0 * w_0)*x_1 * (x_1+x_0) * y_1^2 * z_1^2 , -v_0 * v_1 * w_1 * (w_1+w_0) * (x_1*w_1-x_0*w_0)* x_0 * (x_1+x_0) * y_1^2 * z_0^2 }} paraTex==map(coxR^1,,sub(paraJ,vars coxR)) /// verifyThmHypLocus=method() verifyThmHypLocus(Ring) := kk -> ( s := "1111"; (relLin,relPfaf,d1',d2,Ms) := setupGodeaux(kk,s); amat1 := getAMatrix(d1'); Sa := kk[support amat1]; amat := map(Sa^4,,sub(amat1,Sa)); Q := ideal sub(relPfaf,Sa); J := (minors(4,amat)+Q); scan(4,i->J=saturate(J,ideal amat^{i})); Jhyp := J; paraHyp := precomputedHyperellipticPoint(Sa); string := " betti res Jhyp paraHyp(Jhyp)==0 rank jacobian matrix paraHyp == dim Jhyp pt=random(kk^1,kk^(#support matrix paraHyp),Height=>10) pt1=(vars ring Jhyp)*syz sub(matrix paraHyp,pt); fiber=ideal paraHyp(pt1); baseLocus=ideal matrix paraHyp; cBL=decompose baseLocus; scan(cBL,c-> fiber=saturate(fiber,c)) dim fiber == 5 fiber degree fiber==degree ideal gens target paraHyp sub(fiber,pt) "; print string; < ( fI:= res I; S:= ring I; c := codim I; assert(length fI == c); m:=transpose fI.dd_c; linearPresOmega := if #unique degrees source m ==1 and # unique degrees target m ==1 then ((first degrees source m)_0-(first degrees target m)_0==1) else false; if not linearPresOmega then error("no implementation for non-linear Omega"); r:=rank target m; b:= symbol b; Sb:=coefficientRing S[b_0..b_(r-1)]; SSb:=S**Sb; graph := sub(vars Sb,SSb)*sub(m,SSb); n:=sub(diff(transpose sub(vars S,SSb),graph),Sb); --J:=ann coker n; L:=map(Sb^(numgens S),,n); L ) computeParametrizationOfHypLocus=method() computeParametrizationOfHypLocus(Ring) := kk -> ( s := "1111"; (relLin,relPfaf,d1',d2,Ms) := setupGodeaux(kk,s); amat1 := getAMatrix(d1'); Sa := kk[support amat1]; amat:= map(Sa^4,,sub(amat1,Sa)); Q := ideal sub(relPfaf,Sa); J := (minors(4,amat)+Q); scan(4,i->J=saturate(J,ideal amat^{i})); Jhyp := J; string := " Sa =ring Jhyp kk=coefficientRing Sa Lom=adjointPresentation Jhyp; betti Lom P19= ring Lom betti Lom J1=ann coker Lom; dim J1, degree J1, betti J1 -- J1 contains components which are supported on coordinate hyperplanes in P19. -- We remove these now. betti(J1s=J1:P19_0) degree J1s scan(20,i->(J1s=J1s:ideal P19_i)) degree J1s, betti J1s -* the residual part is irrelevant: betti(Jrest=J1:J1s) dim Jrest, degree Jrest, betti Jrest elapsedTime cJrest=decompose Jrest; tally apply(cJrest,c->(codim c, degree c, dim c, betti c)) -- => none of these components lie in the image of V(Jhyp) --> P19 *- betti (fJ1s=res(ideal (gens J1s)_{0..36},DegreeLimit=>1)) vertex=trim ideal fJ1s.dd_5 varsP11= reverse (entries gens vertex)_0 P11=kk[varsP11] scroll=trim sub(ann coker transpose fJ1s.dd_5,P11) fscroll=res scroll fscroll.dd_5 -- We compute the 2x6 matrix of the scroll using a scrollar syzygy koszulComplex=res trim ideal (fscroll.dd_5_{0}) dfscroll=dual fscroll[-5]**P11^{-6} extended=extend(koszulComplex,dfscroll,matrix{{1,0,0,0,0}}); m2x6=map(P11^2,P11^{6:-1},transpose (koszulComplex.dd_6|extended_5)) assert(minors(2,m2x6)==scroll) -- We compute the elimnation ideal J2 elimVars=(entries mingens ideal(vars P19%vertex))_0 J2=sub(eliminate(J1s,elimVars),P11) betti res J2 -- We compute a change of coordinates which identifies the scroll with P5xP1 -- in its Segre embedding jacobian flatten m2x6 aut=vars P11 * inverse jacobian flatten m2x6 J2normal=sub(sub(J2,P11),aut) m2x6normal=sub(m2x6,aut) -- We introduce the Cox ring of P5xP1 w=symbol w P5xP1=kk[c_0..c_5,w_0,w_1,Degrees=>{6:{1,0},2:{0,1}}] cs=basis({1,1},P5xP1) bs=flatten m2x6normal subCox=apply(12,i->bs_(0,i)=>cs_(0,i)) phiCox=map(P5xP1,P11,subCox) -- We saturate the image of J2 in the Cox ring V4=gens (ideal mingens phiCox J2normal:ideal basis({0,1},P5xP1)) ideal V4 use ring V4 m1=matrix{{c_0,c_2},{-c_4*w_1,c_5*(w_0-w_1)}} assert(det m1==V4_(0,0)) m2=matrix{{c_1,c_2},{-c_4*w_1,c_3*w_0}} assert(det m2== V4_(0,1)) -- We discovered two relative rank 4 quadrics P5xP1xP1xP1=kk[c_0..c_5,w_0,w_1,y_0..z_1,Degrees=>{6:{1,0,0,0},2:{0,1,0,0},2:{0,0,1,0},2:{0,0,0,1}}] J2sc=ideal (sub(m1,P5xP1xP1xP1)*transpose basis({0,0,0,1},P5xP1xP1xP1))+ ideal (sub(m2,P5xP1xP1xP1)*transpose basis({0,0,1,0},P5xP1xP1xP1)) sJ2sc=syz(m12=diff(basis({1,0,0,0},P5xP1xP1xP1),transpose gens J2sc)) isHomogeneous sJ2sc degrees source sJ2sc autinv=vars P11 *jacobian flatten m2x6 sub(aut,autinv) P1bundleOver3xP1=kk[v_0,v_1,w_0,w_1,y_0..z_1,Degrees=>{{1,2,0,0},{1,0,0,0},2:{0,1,0,0},2:{0,0,1,0},2:{0,0,0,1}}] paraV4=map(P1bundleOver3xP1^1,,transpose (sub(sJ2sc,P1bundleOver3xP1)*matrix{{v_0},{v_1}})) isHomogeneous paraV4 betti paraV4 paraV4'=flatten (paraV4**transpose matrix{{w_0,w_1}})*inverse sub(jacobian flatten m2x6,kk) -- paraV4' gives a parametrization of V(J2) sub(J2,paraV4') degrees map(P1bundleOver3xP1^1,,paraV4') u=symbol u Pu=kk[toList(u_0..u_8)|gens P1bundleOver3xP1,Degrees=>{{1,0,0,0,0},8:{1,1,3,1,1},{0,1,2,0,0},{0,1,0,0,0},2:{0,0,1,0,0},2:{0,0,0,1,0},2:{0,0,0,0,1}}] uparaV4=map(Pu^1,,u_0*sub(paraV4',Pu)) isHomogeneous uparaV4, degrees source uparaV4 apply(8,i->(reverse elimVars)_i=>Pu_(i+1)) -- to use the elimVars in reversed order gives slightly better equations in the final parametrization psi=map(Pu,P19,apply(8,i->(reverse elimVars)_i=>Pu_(i+1))|apply(12,i->sub(P11_i,P19)=> uparaV4_(0,i))) betti(J3=psi J1s) -- J3 defines in P8-bundle over V4 the fibers of V(J1s)-->V4 isHomogeneous J3 -- we saturate with respect to u_0 to get some equations which are linear in the u's betti(J3u=saturate(J3,ideal u_0)) isHomogeneous J3u L1=select(rank source gens J3u, i->first (degrees source (gens J3u)_{i})_0==1) tally degrees source (gens J3u)_L1 isHomogeneous (gens J3u)_L1 -- we solve this linear system of equations for u's s0=diff((vars Pu)_{0..8},transpose (gens J3u)_L1) isHomogeneous s0 s1=syz s0 betti s0, betti s1 degrees source s1 P4bundle=kk[toList(t_0..t_4)|gens P1bundleOver3xP1,Degrees=>-degrees source s1|apply(degrees source vars P1bundleOver3xP1,c->prepend(0,c))] subToP4bundle=(vars P4bundle)_{0..4}*transpose sub(s1,P4bundle) rho=map(P4bundle,Pu,apply(9,i->Pu_i=>subToP4bundle_(0,i))|apply(numgens P1bundleOver3xP1,i->Pu_(i+9)=>P4bundle_(i+5))) isHomogeneous rho J4=(rho J3u); isHomogeneous J4 -- cJ4=decompose J4 -- J4 defines the rational normal curve fibration in the P4-bundle generically. -- We have to remove some primary components of J4. betti(J4t=saturate(J4,ideal (w_0-w_1))) betti(J4t=saturate(J4t,ideal (w_0))) betti(J4t=saturate(J4t,ideal (w_1))) fJ4t=res J4t -- the resolution of a relative rational normal curve fibration over the P1bundleOver3xP1 apply(4,i->tally degrees fJ4t_i) -- Macaulay discovers a relative scrollar syzygy. We compute the corresponding 4x2 matrix: row0=mingens ideal fJ4t.dd_3_{0} frow=res image row0 dualfJ = dual fJ4t[-3] frow0=(chainComplex( prepend(row0,apply(3,i->frow.dd_(i+1)))))**P4bundle^(-degrees target (dualfJ.dd_1)^{0}) extended=extend(frow0,dualfJ,map(frow0_0,dualfJ_0,matrix{{1_P4bundle,0,0}})) betti(mat4x2=extended_3|frow0.dd_4) -- the matrix whose minorsdefine the syzygy scheme assert(minors(2,mat4x2)==J4t) isHomogeneous mat4x2 -- We compute the relative adjoint tensor of mat6x4 P1xP4bundle=kk[x_0,x_1]**P4bundle adj=diff (sub(transpose (vars P4bundle)_{0..4},P1xP4bundle), matrix{{x_1,x_0}}*sub(transpose mat4x2,P1xP4bundle)) m5x4=map(source (vars P1xP4bundle)_{2..6},,adj) tally degrees source m5x4 ,tally degrees target m5x4 betti(sadj=syz transpose m5x4) P1bundleOver4xP1=kk[x_0,x_1]**P1bundleOver3xP1 toP1xP4bundle=sub(sadj,P1bundleOver4xP1) alpha=map(P1bundleOver4xP1,P1xP4bundle, apply(5,i->P1xP4bundle_(i+2)=>toP1xP4bundle_(i,0))| apply(8,i->P1xP4bundle_(7+i)=>P1bundleOver4xP1_(2+i))| apply(2,i->P1xP4bundle_(i)=>P1bundleOver4xP1_i) ) alpha rho psi sub(rho psi vars P19,P1xP4bundle) paraJ1s=map(P1bundleOver4xP1^1,,alpha sub(rho psi vars P19,P1xP4bundle)) isHomogeneous paraJ1s -- paraJs give the parametrization of V(J1s) in P^19 sub(J1s,paraJ1s) betti (paraJPrelim=transpose syz transpose map(P1bundleOver4xP1^12,,sub(Lom,paraJ1s))) -- paraJPrelim is a parmatrization of the hyperelliptic loci V(Jhyp) sub(Jhyp,paraJPrelim) netList apply(12,i->factor paraJPrelim_(0,i)) vars P1bundleOver4xP1 -- sort variables and simplify factors finalCox=kk[(gens P1bundleOver4xP1)_{2..5,0,1,6..9},Degrees=>apply((gens P1bundleOver4xP1)_{2..5,0,1,6..9},m->degree m)] vars finalCox paraJPrelim1=sub(paraJPrelim,finalCox) paraJ=sub(paraJPrelim1,{w_0=>w_0+w_1}) netList apply(12,i->factor paraJ_(0,i)) paraHyp=map(finalCox,Sa,paraJ) paraHyp1=precomputedHyperellipticPoint(Sa) matrix paraHyp== sub(matrix paraHyp1,vars finalCox) "; print string; Jhyp) precomputedTorsZ4Line=method() precomputedTorsZ4Line(Ring) := Sa -> ( -- rational parametrization of the hyperelliptic loci kk := coefficientRing(Sa); u := local u; v := local v; P3xP1 := kk[u_0..u_3,v_4,v_6,Degrees=>{4:{1,0},2:{0,1}}]; point1 := matrix {{0, 0, u_0, 0, 0, u_1, 0, 0, u_2, 0, 0, u_3}}; point2 := matrix {{u_0*v_4, 0, 0, -u_1*v_4, 0, 0, u_2*v_6, 0, 0, -u_3*v_6, 0, 0}}; phi1 := map(P3xP1,Sa,point1); phi2 := map(P3xP1,Sa,point2); (phi1,phi2)) precomputedTorsZ3Line=method() precomputedTorsZ3Line(Ring) := Sa -> ( -- rational parametrization of the hyperelliptic loci kk := coefficientRing(Sa); u := local u; w := local w; z := local z; P3xP1xP1 := kk[u_0..u_3,w_0,w_1,z_0,z_1,Degrees=>{4:{1,0,0},2:{0,1,0},{2,3,1},{0,0,1}}]; point1 := matrix {{u_0, 0, 0, u_1, 0, 0, 0, 0, u_2, 0, 0, u_3}}; point2 := matrix {{-u_0^2*u_1*w_1^3*z_1, -u_1*u_3^2*w_0^2*w_1*z_1, u_1*u_2^2*w_0^2*w_1*z_1, 0, -u_0*u_3^2*w_0^2*w_1*z_1, u_0*u_2^2*w_0^2*w_1*z_1, u_1^2*u_3*w_0*w_1^2*z_1, -u_0^2*u_3*w_0*w_1^2*z_1, -u_2*z_0+u_2^2*u_3*w_0^3*z_1, u_1^2*u_2*w_0*w_1^2*z_1, -u_0^2*u_2*w_0*w_1^2*z_1, -u_3*z_0}}; phi1 := map(P3xP1xP1,Sa,point1); phi2 := map(P3xP1xP1,Sa,point2); (phi1,phi2)) precomputedTorsZ2Line=method() precomputedTorsZ2Line(Ring) := Sa -> ( -- rational parametrization of the hyperelliptic loci kk := coefficientRing(Sa); u := local u; w := local w; z := local z; h := local h; L1 := {{1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {-1,0, 1, 0, 0}, {0, 0, 0, 1, 0}, {-1, 0, 0, 1, 0}, {0, 1, 0, 0, 1}, {1, 1, -1, -2, 1}, {1, 1,-2, -1, 1}}; P3xP1xP1xP1 := kk[u_0..u_3,w_0,w_1,z_0,z_1,h_0,h_1,h_2,Degrees=>L1]; point1 := matrix {{u_0, 0, 0, u_1, 0, 0, u_2, 0, 0, u_3, 0, 0}}; point2 := matrix {{0, -2*u_0*u_2*w_0*w_1*z_1*h_2, 4*u_0^2*u_2*w_1*z_1^2*h_1, -2*u_3*w_1*z_0^2*h_1+w_0^2*z_0*h_2, u_2*w_1*z_0^2*h_1-2*u_1*u_2*w_0*w_1*z_1*h_2, -4*u_0*u_1*u_2*w_1*z_1^2*h_1, u_2*h_0, -2*u_0*u_2*w_1*z_0*z_1*h_1, 4*u_0*u_2^2*w_1^2*z_1*h_2, u_3*h_0+w_0*z_0^2*h_1-2*u_1*w_0^2*z_1*h_2, -2*u_0*u_3*w_1*z_0*z_1*h_1+u_0*w_0^2*z_1*h_2, -4*u_0*u_2*u_3*w_1^2*z_1*h_2}}; phi1 := map( P3xP1xP1xP1,Sa,point1); phi2 := map( P3xP1xP1xP1,Sa,point2); (phi1,phi2)) calculationOfTheUnirationalParametrizationOfTorsZ5Lines=method() calculationOfTheUnirationalParametrizationOfTorsZ5Lines(String) := s -> ( return( "kk = value(s); s = toString(1111); (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); lociE = lowerRankLociE(d1',relPfaf); -- choose the P3s among the loci lociEP3 = select(lociE,c-> codim c == 8); Sa = getP11(relPfaf); Q = sub(ideal relPfaf,Sa); -- L gives the list of P1xP1's inside P3xP3's leading to Z/5-Godeaux surfaces: L = lineConditionsTorsZ5(first lociEP3,last lociEP3,d1',relPfaf); -- we choose the first P1xP1; the others are equivalent under the S4-operation (comp0,comp1) = first L; -- introduce coordinates for the P1xP1: P1xP1 = kk[u_0..v_1,Degrees=>{2:{1,0},2:{0,1}}] -- the generic point in the first P1: genPoint0 =vars Sa % sub(comp0,Sa) entriesGenPoint0 =flatten entries genPoint0; -- the generic point in the second P1: genPoint1 =vars Sa % sub(comp1,Sa); entriesGenPoint1 =flatten entries genPoint1; pos0 = positions(entriesGenPoint0, i-> i!=0); pos1 = positions(entriesGenPoint1, i-> i!=0); P1xP1xP1 = kk[u_0..v_1,x_0,x_1,Degrees => {2:{1,0,0},2:{0,1,0},{0,1,1},{1,0,1}}] -- P1xP1xP1 is a P(O(1,0) ++ O(0,1)) -> P1xP1 -- the general line is given by: phi = map(P1xP1xP1,Sa,apply(2,i-> entriesGenPoint0_(pos0_i) => x_0*u_i) | apply(2,i-> entriesGenPoint1_(pos1_i) => x_1*v_i) | apply(select(12,j-> not member(j,pos0|pos1)),i-> Sa_i => 0_P1xP1xP1)) -- the following two points span a general line leading to a Z/5-Godeaux surface: phi0 = map(P1xP1,Sa,sub(diff(x_0,phi.matrix),P1xP1)) phi1 = map(P1xP1,Sa,sub(diff(x_1,phi.matrix),P1xP1))") ) precomputedTorsZ5Line=method() precomputedTorsZ5Line(Ring) := Sa -> ( -- rational parametrization of the hyperelliptic loci kk := coefficientRing(Sa); u := local u; v := local v; P1xP1 := kk[u_0,u_1,v_0,v_1,Degrees=>{2:{1,0},2:{0,1}}]; point1 := matrix {{0, 0, 0, u_0, 0, 0, 0, 0, u_1, 0, 0, 0}}; point2 := matrix {{0, v_0, 0, 0, 0, 0, 0, 0, 0, 0, v_1, 0}}; phi1 := map( P1xP1,Sa,point1); phi2 := map( P1xP1,Sa,point2); (phi1,phi2)) precomputedHyperellipticLocus=method() precomputedHyperellipticLocus(Ring) := Sa ->( a323 := Sa_0; a313 := Sa_1; a303 := Sa_2; a223 := Sa_3; a212 := Sa_4; a202 := Sa_5; a113 := Sa_6; a112 := Sa_7; a101 := Sa_8; a003 := Sa_9; a002 := Sa_10; a001 := Sa_11; hypLocus := ideal(a212*a202-a112*a101+a002*a001, -a313*a303-a113*a101+a003*a001, -a323*a303+a223*a202+a003*a002, -a323*a313+a223*a212-a113*a112, a212*a101*a002+a202*a112*a001, a313*a101*a003+a303*a113*a001, a323*a202*a003+a303*a223*a002, a323*a212*a113+a313*a223*a112, a313*a202*a112*a003-a303*a212*a113*a002, a323*a212*a101*a003+a303*a212*a113*a002+a323*a202*a113*a001, a303*a212*a113*a002+a323*a202*a113*a001+a303*a223*a112*a001,a313*a223*a101*a002 -a323*a202*a113*a001); hypLocus) randomLineTorsZ5 = method(Options=>{Height => 19,PrecomputedParametrization => true}) randomLineTorsZ5(Matrix,Matrix) := opt -> (d1',relPfaf) ->( -- input: d1': the first syzygy matrix in normal form with the first row omitted -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: randLine: a 12x2-matrix spanning a line leading to a Z/5Z-Godeaux surface -- subsLine: row matrix containing the variables of the normalized set-up with -- the a-variables being replaced by the assginments from the chosen line Sa := getP11(relPfaf); if opt.PrecomputedParametrization == false then ( eMat := getEMatrix(d1'); lociE := lowerRankLociE(d1',relPfaf); lociEP3 := select(lociE,c-> codim c == 8); finalComps := lineConditionsTorsZ5(first lociEP3,last lociEP3,d1',relPfaf); comp0 := finalComps_0_0; comp1 := finalComps_0_1; point1 := randomPoint(comp0,Sa); (randLine,subsLine) := randomLine(point1,comp1,relPfaf,Sa); ) else ( SR := ring(d1'); numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); kk := coefficientRing(SR); varsa := vars Sa; (phi1,phi2) := precomputedTorsZ5Line(Sa); while ( if char(kk) == 0 then ( r1 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); r2 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); ) else ( r1 = random(kk^1,kk^2); r2 = random(kk^1,kk^2)); not (r2_(0,0)*r2_(0,1)!= 0 and r1_(0,0)*r1_(0,1)!=0)) do(); pt1Coord := sub(phi1.matrix,r1|r2); pt2Coord := sub(phi2.matrix,r1|r2); randLine = transpose (pt1Coord||pt2Coord); aaLine :=ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine = vars SR % aaLine); (randLine,subsLine)) TEST /// restart loadPackage "NumericalGodeaux" kk =QQ; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf,PrecomputedParametrization=>true); randLine kk =ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf,PrecomputedParametrization=>false); randLine (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf); randLine /// randomLineTorsZ4 = method(Options=>{Height => 19,PrecomputedParametrization => true}) randomLineTorsZ4(Matrix,Matrix) := opt -> (d1',relPfaf) ->( -- input: d1': the first syzygy matrix in normal form with the first row omitted -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: randLine: a 12x2-matrix spanning a line leading to a Z/4Z-Godeaux surface -- subsLine: row matrix containing the variables of the normalized set-up with -- the a-variables being replaced by the assginments from the chosen line Sa := getP11(relPfaf); if opt.PrecomputedParametrization == false then ( eMat := getEMatrix(d1'); aMat := getAMatrix(d1'); lociE := lowerRankLociE(d1',relPfaf); lociEP3 := select(lociE,c-> codim c == 8); -- a point in the first component leads to an reducible fibre D1+D3 -- intersecting in the base point of |3K|: comp0 := first lociEP3; -- a point in the second component leads to a double fibre 2D2 in |2K| comp1 := ideal(aMat_{0,1,3}); finalComps := lineConditionsTorsZ4(comp0,comp1,d1',relPfaf); comp0 = finalComps_1_0; comp1 = finalComps_1_1; point1 := randomPoint(comp0,Sa); (randLine,subsLine) := randomLine(point1,comp1,relPfaf,Sa); ) else ( SR := ring(d1'); numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); kk := coefficientRing(SR); varsa := vars Sa; (phi1,phi2) := precomputedTorsZ4Line(Sa); while ( if char(kk) == 0 then ( r1 := sub(randomIntegerMatrix(1,4,Height=>opt.Height),SR); r2 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); ) else ( r1 = random(kk^1,kk^4); r2 = random(kk^1,kk^2)); not (r1_(0,0) !=0 and r1_(0,2) != 0 and r2_(0,0)*r2_(0,1)!= 0)) do(); pt1Coord := sub(phi1.matrix,r1|r2); pt2Coord := sub(phi2.matrix,r1|r2); randLine = transpose (pt1Coord||pt2Coord); aaLine :=ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine = vars SR % aaLine); (randLine,subsLine)) TEST /// restart loadPackage "NumericalGodeaux" kk = ZZ/nextPrime(32001); s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); elapsedTime (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf); randLine elapsedTime (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf,PrecomputedParametrization=>false); randLine (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); randPoint F = standardResolution(d1',d2,subsPoint,s); verifyAssertions(F.dd_1) I = surfaceInWeightedP5(F); tally degrees (J3 = bihomogeneousModel(I)) kk = QQ s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf); randLine (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); F = standardResolution(d1',d2,subsPoint,s); verifyAssertions(F.dd_1) I = surfaceInWeightedP5(F); tally degrees (J3 = bihomogeneousModel(I)) /// randomLineTorsZ2 = method(Options=>{Height => 19,PrecomputedParametrization => true}) randomLineTorsZ2(Matrix,Matrix) := opt -> (d1',relPfaf) ->( -- input: d1': the first syzygy matrix in normal form with the first row omitted -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: randLine: a 12x2-matrix spanning a line leading to a Z/2Z-Godeaux surface -- subsLine: row matrix containing the variables of the normalized set-up with -- the a-variables being replaced by the assginments from the chosen line Sa := getP11(relPfaf); if opt.PrecomputedParametrization == false then ( compDoubFib := lineConditionsTorsZ2(d1',relPfaf); point1 := randomPoint(compDoubFib,Sa); (tangentSpace1,phi) := tangentSpacePoint(point1,ideal relPfaf,relPfaf); cTangentSpace1 := decompose tangentSpace1; degreeComps := apply(cTangentSpace1,c-> degree c); maxDegree := max degreeComps; maxDegreeComp := select(cTangentSpace1,c-> degree(c) == maxDegree); comp2 := preimage(phi,first maxDegreeComp); (randLine,subsLine) := randomLine(point1,comp2,relPfaf,Sa); ) else ( SR := ring(d1'); numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); kk := coefficientRing(SR); varsa := vars Sa; (phi1,phi2) := precomputedTorsZ2Line(Sa); while ( if char(kk) == 0 then ( r1 := sub(randomIntegerMatrix(1,4,Height=>opt.Height),SR); r2 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); r3 := sub(randomIntegerMatrix(1,2,Height=>opt.Height),SR); r4 := sub(randomIntegerMatrix(1,3,Height=>opt.Height),SR); ) else ( r1 = random(kk^1,kk^4); r2 = random(kk^1,kk^2); r3 = random(kk^1,kk^2); r4 = random(kk^1,kk^3)); not (r1_(0,0) !=0 and r1_(0,2) != 0 and r2_(0,0)*r3_(0,1)!= 0 and r3_(0,0)*r2_(0,1)!=0 and r4_(0,0)*r4_(0,1)!= 0)) do(); pt1Coord := sub(phi1.matrix,r1|r2|r3|r4); pt2Coord := sub(phi2.matrix,r1|r2|r3|r4); randLine = transpose (pt1Coord||pt2Coord); aaLine :=ideal(sub(varsa,SR)-transpose ( randLine*matrix{{x0},{x1}})); subsLine = vars SR % aaLine); (randLine,subsLine)) TEST /// restart loadPackage "NumericalGodeaux" kk = ZZ/nextPrime(32001); s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf); (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf,PrecomputedParametrization=>false); (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); randPoint F = standardResolution(d1',d2,subsPoint,s); verifyAssertions(F.dd_1) I = surfaceInWeightedP5(F); tally degrees (J3 = bihomogeneousModel(I)) viewHelp NumericalGodeaux kk = QQ s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf); randLine (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); /// randomIntegerMatrix = method(Options=>{Height => 19}) randomIntegerMatrix(ZZ,ZZ) := opt -> (a,b) ->( median := floor(opt.Height/2); h := opt.Height; random(ZZ^a,ZZ^b,Height=>h) - matrix apply(a,i->apply(b,j-> median))) ---------------------------------------------------------------------------------------------- ----------------Procedures for computing Godeaux surfaces------------------------------------- ----------------------------------------------------------------------------------------------- surfaceInWeightedP5=method() surfaceInWeightedP5(ChainComplex) := (F) ->( d1 := F.dd_1; if (verifyAssertions(d1) == true) then ( d10 := d1^{0}; d1' := d1^{1..7}; I := ideal mingens ideal (d10*syz(d1'));) else I= ann coker d1; I) surfaceInWeightedP5(Matrix) := (d1) ->( if (verifyAssertions(d1) == true) then ( d10 := d1^{0}; d1' := d1^{1..7}; I := ideal mingens ideal (d10*syz(d1'));) else I= ann coker d1; I) randomGodeauxSurface=method(Options=>{Certify=>false,Attempts=>1,Height=>10,PrecomputedParametrization=>true}) -- input: kk: the base field -- s: the configuration string of the 4 base points -- output: I: a model of a Godeaux surface in a weighted projective space P(2,2,3,3,3,3) randomGodeauxSurface(Ring,String) := opt -> (kk,s) ->( if isField(kk) != true then error "input is not a field"; att:=0; while ( -- singular surface Attempts while( -- verify ring condition F := randomStandardResolution(kk,s); d1 := F.dd_1; not(verifyAssertions(d1))) do(); I := surfaceInWeightedP5(F); if opt.Certify==false then return I; if isSmoothModelInP5(I) == false then (<< "singular surface" < (kk) ->( -- input: kk: the base field -- output: I: a model of a Godeaux surface in a weighted projective space P(2,2,3,3,3,3) if isField(kk) != true then error "input is not a field"; s := "1111"; att:=0; while ( -- singular surface Attempts while( -- verify ring condition F := randomStandardResolution(kk,s); d1 := F.dd_1; not(verifyAssertions(d1))) do(); I := surfaceInWeightedP5(F); if opt.Certify==false then return I; if isSmoothModelInP5(I) == false then (<< "singular surface" < (kk,s,n) ->( -- input: kk: the base field -- s: the configuration string of the 4 base points -- n: an integer between 1 and 5 fixing the order of the torsion group of the surface -- output: I: a model of a Godeaux surface in a weighted projective space P(2,2,3,3,3,3) if isField(kk) != true then error "input is not a field"; oHeight := opt.Height; oParametrization := opt.PrecomputedParametrization; att := 0; while ( -- singular surface Attempts while( -- verify ring condition F := randomStandardResolution(kk,s,n,Height=>oHeight,PrecomputedParametrization=>true); d1 := F.dd_1; not(verifyAssertions(d1))) do(); I := surfaceInWeightedP5(F); if opt.Certify==false then return I; if isSmoothModelInP5(I) == false then (<< "singular surface" <19); -- sum (flatten entries sub((coefficients gens I)_1,QQ) / abs ) kk = ZZ/nextPrime(32001) s = "1111"; elapsedTime I = randomGodeauxSurface(kk,s,1); elapsedTime I = randomGodeauxSurface(kk,s,1,1); --elapsedTime I = randomGodeauxSurface(kk,s,1,2); -- 37.3906 seconds elapsed /// randomGodeauxSurface(Ring,String,ZZ,ZZ) := opt -> (kk,s,n,h) ->( -- input: kk: the base field -- s: the configuration string of the 4 base points -- n: an integer between 1 and 5 fixing the order of the torsion group of the surface -- output: I: a model of a Godeaux surface in a weighted projective space P(2,2,3,3,3,3) if isField(kk) != true then error "input is not a field"; oHeight := opt.Height; oParametrization := opt.PrecomputedParametrization; att := 0; while ( -- singular surface Attempts while( -- verify ring condition F := randomStandardResolution(kk,s,n,h,Height=>oHeight,PrecomputedParametrization=>true); d1 := F.dd_1; not(verifyAssertions(d1))) do(); I := surfaceInWeightedP5(F); if opt.Certify==false then return I; if isSmoothModelInP5(I) == false then (<< "singular surface" <( -- input: I: ideal defining a num. Godeaux surface Y in weighted projective space P(2,2,3,3,3,3) -- output: J: ideal defining a birational model of Y in the space P1xP3 S := ring I; kk := coefficientRing(S); Lx := (gens S)_{0..1}; Ly := (gens S)_{2..5}; SI := S/I; -- Rz is the coordinate ring of P^7 z := getSymbol "z"; Rz:=kk[z_(0,0)..z_(1,3)]; phi:=map(SI,Rz,flatten substitute(matrix apply(4,i->apply(2,j->Lx_j*Ly_i)),SI)); I2:=ideal mingens ker phi; S13 := kk[Lx,Ly,Degrees=>{2:{1,0},4:{0,1}}]; Tx := (gens S13)_{0..1}; Ty := (gens S13)_{2..5}; J1:=ideal mingens ideal substitute(gens I2,flatten matrix apply(4,i->apply(2,j->Tx_j*Ty_i))); J2 := saturate(J1,ideal(Tx_0,Tx_1)); J := saturate(J2,ideal(Ty_0,Ty_1,Ty_2,Ty_3)); J) TEST /// /// modelInP13 = method() modelInP13(Ideal) := I -> ( -- input: I: ideal in the polynomial ring S of P(2,2,3,3,3,3) -- output: I6: ideal defining the image of V(I) under the embedding of P(2,2,3,3,3,3) into P13 -- phi6: map from the polynomial ring of P13 to the coordinate ring of I ambring := ring(I); kk := coefficientRing(ambring); u := getSymbol "u"; P13 := kk[u_0..u_13]; SI := ambring/I; phi6 := map(SI,P13,sub(basis(6,ambring),SI)); I6 := trim kernel phi6; (I6,phi6)) tricanonicalModelInP3=method() tricanonicalModelInP3(Ideal) := I ->( S := ring I; kk := coefficientRing(S); Ly := (gens S)_{2..5}; T := kk[Ly]; phi := map(S/I,T,Ly); I3 := ideal mingens kernel phi; I3) TEST /// kk = ZZ/97; setRandomSeed 31; I = randomGodeauxSurface(kk); I3 = tricanonicalModelinP3(I); dim I3 betti I3 /// ---------------------------------------------------------------------------------- ---------------------------Verifications------------------------------------------- ---------------------------------------------------------------------------------- checkFirstRow = method() checkFirstRow(Matrix,Ideal) := (d2,J) ->( ambring := ring(d2); kk := coefficientRing(ambring); v := symbol v; w := symbol w; z := symbol z; V := kk[v_0..v_5,w_(0,0)..w_(11,3),z_(0,0)..z_(7,9),Degrees=>{6:6,12*4:4,80:2}]; VR := V**ambring; nvars := numgens VR; maty := matrix{(gens VR)_{nvars-4,nvars-3,nvars-2,nvars-1}}; matv := genericMatrix(VR,VR_0,1,6); matw := maty*genericMatrix(VR,VR_6,4,12); maty2 := gens ((ideal(maty))^2); matz := maty2*genericMatrix(VR,VR_54,10,8); d2v := sub(d2,VR); b3y := d2v^{0..5}_{18..25}; matp := d2v^{6..17}_{18..25}; matn := d2v^{0..5}_{6..17}; b4y := d2v^{6..17}_{6..17}; b0y := maty2_{0,1,2,4,5,7}; rel10 := ideal(b0y*matn+matw*b4y-matz*transpose(matp)); rel104 := ideal mingens ideal contract(transpose maty2,gens rel10); relw := (gens rel104)_{80..115}; rel9 := ideal(matv*b3y+matw*matp); rel96 := mingens ideal diff(transpose maty,gens rel9); firstMatrixCond := ideal select((entries rel96)_0,c-> degree(c) == {6,2}); matvnew := matv % firstMatrixCond; firstRowRed := (matvnew % sub(J,VR)); ) verifyAssertions = method(TypicalValue=>Boolean) verifyAssertions(Matrix) := (d1) ->( S := ring d1; y0 := (gens S)_2; y1 := (gens S)_3; y2 := (gens S)_4; y3 := (gens S)_5; d1mody := d1 % ideal(y0,y1,y2,y3); Iy := ann coker (d1mody) + ideal(y0,y1,y2,y3); -- verify the ring condition d1' := d1^{1..7}; I' := ann coker d1'; (dim Iy <= 1 and dim I' <= 1)) TEST /// kk = ZZ/97; setRandomSeed 31; F = randomStandardResolution(kk); d1 = F.dd_1; verifyAssertions(d1) /// isSmoothModelInP5=method(TypicalValue=>Boolean) isSmoothModelInP5(Ideal) := (I) ->( checkSmoothness:=1; S := ring I; jacI:= jacobian I; quasiSmoothLocus := trim(minors(codim I,jacI)+I); (I6,phi6) := modelInP13(I); locusInP13 := preimage(phi6,sub(quasiSmoothLocus,target phi6)); possibleSingPoints := decompose(locusInP13); multiplePoints := select(possibleSingPoints,c-> degree(c)>1); if length(multiplePoints) > 0 then error "there are non-rational points in the quasismooth locus"; jacI6 := jacobian I6; apply(possibleSingPoints, p->( jacP := jacI6 % p; if (rank(jacP) != codim I6) then checkSmoothness = 0 break)); checkSmoothness==1) TEST /// kk = ZZ/nextPrime(2020); setRandomSeed 31; s = "1111"; I = randomGodeauxSurface(kk,s,5); J = bihomogeneousModel(I); isSmoothBihomModel(J) /// isSmoothBihomModel=method(TypicalValue=>Boolean) isSmoothBihomModel(Ideal) := (J) ->( S13 := ring J; kk := coefficientRing(S13); Lx := (gens S13)_{0..1}; Ly := (gens S13)_{2..5}; checksing := 1; apply(2,i->(apply(4,j->( affineCoord := ideal(Lx_i-1,Ly_j-1); JInAffCoord := ideal (gens J % affineCoord); suppJ := support JInAffCoord; A4 := kk[suppJ]; JInA4 := sub(JInAffCoord,A4); jacJInA4 := jacobian(JInA4); m1 := (minors(codim JInA4,jacJInA4) + JInA4); if (dim m1 > 0) then checksing = 0 break)))); checksing == 1) TEST /// kk = ZZ/nextPrime(2020); setRandomSeed 31; s = "1111"; I = randomGodeauxSurface(kk,s,1,2); J = bihomogeneousModel(I); isSmoothBihomModel(J) s = "1111"; I = randomGodeauxSurface(kk,s,5); J = bihomogeneousModel(I); isSmoothBihomModel(J) /// --------------------------------------------------------------------------------------- -----------------Procedures for the canonical ring------------------------------------- --------------------------------------------------------------------------------------- canonicalRing = method() -- Input: d1: matrix defining the first syzygy matrix of an $S$-module R -- Output: IX: ideal defining the canonical model of a numerical Godeaux surface canonicalRing(Matrix) := (d1) ->( S := ring d1; kk := coefficientRing(S); -- introduce the free modules of the second symmetric power of the original complex F0 := S^{1:0,4:-4,3:-5}; F1 := S^{6:-6,12:-7,8:-8}; F1tenF0 := S^{6:-6,12:-7,8:-8,6:-10,12:-11,8:-12,6:-10,12:-11,8:-12,6:-10,12:-11,8:-12,6:-10,12:-11,8:-12,6:-11,12:-12,8:-13,6:-11,12:-12,8:-13,6:-11,12:-12,8:-13}; S2F0 := S^{1:0,4:-4,3:-5,4:-8,3:-9, 3:-8, 3:-9, 2:-8, 3:-9,1:-8, 3:-9, 6:-10}; -- set up the first syzgy matrix e1: S2(F0) <- F1 tensor F0 et0 := matrix apply(36,i->apply(26,j->(if i<8 then d1^{i}_{j} else 0))); et1 := matrix apply(36,i->apply(26,j->(if i==1 then d1^{i-1}_{j} else if (i>7 and i<15) then d1^{i-7}_{j} else 0))); et2 := matrix apply(36,i->apply(26,j->(if i==2 then d1^{0}_{j} else if i ==9 then d1^{1}_{j} else if (i>14 and i<21) then d1^{i-13}_{j} else 0))); et3 := matrix apply(36,i->apply(26,j->(if i==3 then d1^{0}_{j} else if i ==10 then d1^{1}_{j} else if i ==16 then d1^{2}_{j} else if (i>20 and i<26) then d1^{i-18}_{j} else 0))); et4 := matrix apply(36,i->apply(26,j->(if i==4 then d1^{0}_{j} else if i ==11 then d1^{1}_{j} else if i ==17 then d1^{2}_{j} else if i ==22 then d1^{3}_{j} else if (i>25 and i<30) then d1^{i-22}_{j} else 0))); et5 := matrix apply(36,i->apply(26,j->(if i==5 then d1^{0}_{j} else if i ==12 then d1^{1}_{j} else if i ==18 then d1^{2}_{j} else if i ==23 then d1^{3}_{j} else if i ==27 then d1^{4}_{j} else if (i>29 and i<33) then d1^{i-25}_{j} else 0))); et6 := matrix apply(36,i->apply(26,j->(if i==6 then d1^{0}_{j} else if i ==13 then d1^{1}_{j} else if i ==19 then d1^{2}_{j} else if i ==24 then d1^{3}_{j} else if i ==28 then d1^{4}_{j} else if i ==31 then d1^{5}_{j} else if (i>32 and i<35) then d1^{i-27}_{j} else 0))); et7 := matrix apply(36,i->apply(26,j->(if i==7 then d1^{0}_{j} else if i ==14 then d1^{1}_{j} else if i ==20 then d1^{2}_{j} else if i ==25 then d1^{3}_{j} else if i ==29 then d1^{4}_{j} else if i ==32 then d1^{5}_{j} else if (i>33 and i<36) then d1^{i-28}_{j} else 0))); e1 := map(S2F0,F1tenF0, et0 | et1| et2 | et3 | et4 | et5 | et6 | et7 ); u1 := matrix {{1, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0,0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 1}}; nn := 8; -- instead of computing Hom(coker e1, coker d1) we split e1 in smaller matrices ntmp and compute only Hom(coker ntmp, coker d1) -- which is usually much faster apply(7,i->( nn = nn+(8-i-1); coln := 26*(i+2); etmp := e1^{0..nn-1}_{0..coln-1}; l1 := 8-i-1; apply(l1,j->( gtmp := etmp^{0,nn-7+j+i}*syz(etmp^{1..nn-7+i+j-1,nn-7+i+j+1..nn-1}); ntmp := mingens image gtmp; Htmp := Hom0(coker ntmp,coker d1); htmp := homomorphism0(coker ntmp,coker d1,Htmp_{0}); j1 := sub(htmp_0_0,kk); hnormalized := ((1/j1)*htmp)_{1}; hfin := map(F0,S^{-10},hnormalized); u1 = u1 | hfin; )))); z := local z; w := local w; Sbig := kk[(gens S),z_0,z_1,z_2,z_3,w_0,w_1,w_2,Degrees=>{2:2,4:3,4:4,3:5}]; -- the products of the module generators of R arranged according to the definition of the matrix e1 n1 := matrix{{z_0^2,z_0*z_1,z_0*z_2,z_0*z_3,z_0*w_0,z_0*w_1,z_0*w_2, z_1^2,z_1*z_2,z_1*z_3,z_1*w_0,z_1*w_1,z_1*w_2, z_2^2,z_2*z_3,z_2*w_0,z_2*w_1,z_2*w_2, z_3^2,z_3*w_0,z_3*w_1,z_3*w_2, w_0^2,w_0*w_1,w_0*w_2, w_1^2,w_1*w_2, w_2^2}}; u1b := sub(u1,Sbig); d1b := sub(d1,Sbig); modulgen := matrix{{1,z_0, z_1, z_2, z_3, w_0, w_1, w_2}}; u1alg := u1b_{8..35}; algebrel := n1 - modulgen*u1alg; modulrel := modulgen*d1b; IX := ideal mingens (ideal(modulrel)+ideal(algebrel)); IX) TEST /// kk = ZZ/31; s = "1111"; F = randomStandardResolution(kk,s,5); d1 = F.dd_1; elapsedTime IX = canonicalRing(d1); betti IX /// --------------------------------------------------------------------------------------------------- -------------------------------------- Undocumented------------------------------------------------ --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- ---------------------------------New Test Functions------------------------------------------------ --------------------------------------------------------------------------------------------------- supportFirstRowDeg6 = method() supportFirstRowDeg6(Matrix) := (d2) ->( -- input: d2: the second syzygy matrix in normal form -- output: supportingAVar: a list containing the supporting a-variables -- Evaluating the condition for the first 6 unknown entries of degree 6 (cubic in the -- x-variables), we see that each entry is a sum of products of a-variables together -- with quadratic elements in the xi which occur in the middle matrix of the first row. -- Each of these six entries depend exactly on 4 a-variables. We present the corresponding supporting -- ideals in a list. SR := ring(d2); kk := coefficientRing(SR); v := symbol v; w := symbol w; V := kk[v_0..v_5,w_(0,0)..w_(11,3),Degrees=>{6:6,12*4:4}]; VR := V**SR; nvars := numgens VR; maty := matrix{(gens VR)_{nvars-4,nvars-3,nvars-2,nvars-1}}; -- the general entries depending on x_0,x_1 for the first six columns of the first row: matv := genericMatrix(VR,VR_0,1,6); -- the general entries depending on x_0,x_1 for the 12 columns of the first row in the middle: matw := maty*genericMatrix(VR,VR_6,4,12); d2v := sub(d2,VR); b3y := d2v^{0..5}_{18..25}; matp := d2v^{6..17}_{18..25}; matn := d2v^{0..5}_{6..17}; b4y := d2v^{6..17}_{6..17}; -- we have relations of degree 9 of the form (matv+b0(y))*b3(y) + matw*p = matv*b3(y) + matw*p rel9 := ideal(matv*b3y+matw*matp); -- differentiate the relations with respect to the y-variables: rel96 := mingens ideal diff(transpose maty,gens rel9); -- among the relations of degree six, there are 6 relations expressing the unknown entries of -- the first six columns of the first row as linear combinations of a-variables and w-variables firstMatrixRel := ideal select((entries rel96)_0,c-> degree(c) == {6,2}); matvnew := matv % firstMatrixRel; supportingAVar := apply(6,i-> trim sub(ideal support matvnew_(0,i),SR)); supportingAVar) familyOfLines = method() familyOfLines(Ideal,Ideal,Matrix) := (comp0,comp1,relPfaf) ->( SR := ring relPfaf; Sa := getP11(relPfaf); kk := coefficientRing(SR); t := symbol t; z := symbol z; T1 := kk[t_0..t_11]; Z1 := kk[z_0..z_11]; -- consider the components in a product space P11xP11 TZ := T1**Z1; phit := map(Sa,T1,vars Sa); phiz := map(Sa,Z1,vars Sa); comp0t := trim preimage(phit,sub(comp0,Sa)); comp0z := trim preimage(phiz,sub(comp1,Sa)); pt1 := vars T1 % comp0t; pt2 := vars Z1 % comp0z; n1 := numcols mingens ideal pt1 -1; n2 := numcols mingens ideal pt2 -1; Pn1 := kk[support pt1]; Pn2 := kk[support pt2]; Pn1xPn2 := Pn1 **Pn2; Q := sub( ideal relPfaf,Sa); -- a general line through the two chosen points --lineGen := sub(pt1,TZ)+sub(pt2,TZ); genLine := sub(pt1,Pn1xPn2)+sub(pt2,Pn1xPn2); --locusOfLines := trim(sub(comp0t,TZ)+sub(comp0z,TZ)+sub(Q,lineGen)) -- the locus of lines through two general points is a subscheme of P^n1 x P^n2: locusOfLines :=trim(sub(comp0t,Pn1xPn2)+sub(comp0z,Pn1xPn2)+sub(Q,genLine)); (genLine,locusOfLines)) checkForReducibleQuadricGenLine = method() checkForReducibleQuadricGenLine(Matrix,Ring,Matrix,Matrix) := (genLine,Sa,d1',d2) -> ( am := sub(getAMatrix(d1'),Sa); amLine := sub(am,genLine); zeroCol := select(6,i-> amLine_{i} == 0); V := ring genLine; if length(zeroCol) == 0 then return false; suppAVar := supportFirstRowDeg6(d2); suppAVarLine := apply(suppAVar,j-> trim sub(sub(j,Sa),genLine)); zeroEntry := select(6,i-> suppAVarLine_i == ideal(0_V)); onlyYCols := toList(set(zeroCol)*set(zeroEntry)); return(length(onlyYCols)>0)) containsReducibleQuadric = method() containsReducibleQuadric(Matrix,Ideal,Ring,List) := (genLine,lineLoc,Sa,L) -> ( d1' := first L; d2 := last L; if checkForReducibleQuadricGenLine(genLine,Sa,d1',d2) then return true; am := sub(getAMatrix(d1'),Sa); kk := coefficientRing(Sa); V := ring genLine; amLine := sub(am,genLine); Vl := V/lineLoc; amLoc := amLine ** Vl; zeroCol := select(6,i-> amLoc_{i} == 0); suppAVar := supportFirstRowDeg6(d2); suppAVarLoc := apply(suppAVar,j-> trim sub(sub(sub(j,Sa),genLine),Vl)); zeroEntry := select(6,i-> suppAVarLoc_i == ideal(0_Vl)); onlyYCols := toList(set(zeroCol)*set(zeroEntry)); if length(onlyYCols)>0 then return true; samLoc := syz(amLoc,DegreeLimit=>{1,1}); conSyzInd := select(numcols samLoc,i-> degrees source samLoc_{i} =={{0,0}} or degrees source samLoc_{i} =={{0,1}} or degrees source samLoc_{i} =={{1,0}}); samLoc0 := samLoc_conSyzInd; T := kk[ support d1'^{0..3}_{6..17}]; b0y :=matrix{flatten apply(4,i->apply(i,j->T_j*T_i))}; TVl := T**Vl; v := ideal(sub(b0y,TVl)*sub(samLoc0,TVl)); if v== ideal(0_TVl) then return false else return(length(decompose v)>1)) containsReducibleQuadricComp = method() containsReducibleQuadricComp(Ideal,Ideal,Matrix,List) := (comp0,comp1,relPfaf,L) -> ( d1' := first L; d2 := last L; Sa := getP11(relPfaf); (genLine,locusOfLines) := familyOfLines(comp0,comp1,relPfaf); cL := decompose locusOfLines; v1 := keys tally apply(cL,c-> containsReducibleQuadric(genLine,c,Sa,{d1',d2})); return( v1 =={true})) -------------------------------------------------------------------------------------- intersectionLineComp = method() intersectionLineComp(Matrix,List) := (subsLine,loci) ->( -- input: subsline: a row matrix containing all the variables of the general set-up with the -- assignments from the chosen line -- loci: a list containing the special loci for the construction -- output: LL: a list where each entry is a list of three elements -- Note: The first entry is the Betti table of a component (locus) which has a non-empty -- intersection with the chosen line. The second entry is the dimension of the intersection -- variety, whereas the third entry is its degree. ambring := ring(subsLine); kk := coefficientRing(ambring); nvars := numgens ambring; x0 := ambring_(nvars - 6); x1 := ambring_(nvars - 5); lineRel := ideal ((vars ambring - subsLine)_{0..11}); Sa := kk[support ((vars ambring)_{0..11})]; lineInP11 := sub(eliminate(lineRel,{x0,x1}),Sa); lociInP11 := apply(loci,c-> sub(c,Sa)); LL := {}; apply(lociInP11,c-> if dim(c + lineInP11) >0 then LL = append(LL,(betti c, dim(c+lineInP11)-1,degree (c+lineInP11)))); LL) intersectionPoints = method() intersectionPoints(Matrix,List) := (subsLine,loci) ->( ambring := ring(subsLine); kk := coefficientRing(ambring); nvars := numgens ambring; x0 := ambring_(nvars - 6); x1 := ambring_(nvars - 5); lineRel := ideal ((vars ambring - subsLine)_{0..11}); Sa := kk[support ((vars ambring)_{0..11})]; lineInP11 := sub(eliminate(lineRel,{x0,x1}),Sa); lociInP11 := apply(loci,c-> sub(c,Sa)); LL := {}; apply(lociInP11,c-> if dim(c + lineInP11) >0 then LL = append(LL,decompose trim(c+lineInP11))); LL = flatten(LL); indUnique := apply(unique apply(# LL,i-> positions(LL,j -> j == LL_i)),c-> first c); LLunique := LL_indUnique; L1 := apply(LLunique,c-> (c,select(lociInP11,d-> dim(c+d)>0))); L1) intersectionLineSingLocus = method() intersectionLineSingLocus(Matrix,Matrix) := (subsLine,relPfaf)->( singLocus := singularLocusQ(relPfaf); ambring := ring(subsLine); kk := coefficientRing(ambring); nvars := numgens ambring; x0 := ambring_(nvars - 6); x1 := ambring_(nvars - 5); lineRel := ideal ((vars ambring - subsLine)_{0..11}); Sa := kk[support ((vars ambring)_{0..11})]; lineInP11 := sub(eliminate(lineRel,{x0,x1}),Sa); lociInP11 := apply(singLocus,c-> sub(c,Sa)); LL := {}; apply(lociInP11,c-> if dim(c + lineInP11) >0 then LL = append(LL,(betti c, dim(c+lineInP11)-1,degree (c+lineInP11)))); LL) lineConditionsTorsZ5 = method() lineConditionsTorsZ5(Ideal,Ideal,Matrix,Matrix) := (comp0,comp1,d1',relPfaf) ->( -- input: comp0: an ideal defining a P3 in the P11 of a-variables at which the rank -- of the e-matrix drops -- comp1: a second ideal defining a P3 in the P11 of a-variables at which the rank -- of the e-matrix drops -- d1': the first syzygy matrix in normal form without the first row -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: finalComps: a list of pairs of ideals -- Each pair of the list finalComps defines two different ideals in the P11. To get a -- Godeaux surface with torsion goup Z/5Z we have to choose a line which meet the two corresponding loci -- in exactly one point. SR := ring(comp0); aMat := getAMatrix(d1'); kk := coefficientRing(SR); t := symbol t; z := symbol z; T1 := kk[t_0..t_11]; Z1 := kk[z_0..z_11]; -- consider the ideals in a product space P11xP11 TZ1 := T1**Z1; Sa := kk[support relPfaf]; phit := map(Sa,T1,vars Sa); phiz := map(Sa,Z1,vars Sa); comp0t := trim preimage(phit,sub(comp0,Sa)); comp0z := trim preimage(phiz,sub(comp1,Sa)); pt1 := vars T1 % comp0t; pt2 := vars Z1 % comp0z; relPfafa := sub(relPfaf,Sa); line1 := sub(pt1,TZ1)+sub(pt2,TZ1); -- impose the condition that the line is contained in the Pfaffian variety Q relLine1 := ideal mingens ideal sub(relPfafa,line1); cRelLine1 := decompose relLine1; firstComp := apply(cRelLine1, c-> trim (comp0 + sub(phit(sub(c,T1)),SR))); secondComp := apply(cRelLine1, c-> trim (comp1 + sub(phiz(sub(c,Z1)),SR))); newComps := apply(length firstComp,i-> (firstComp_i,secondComp_i)); -- exclude the options point x P2? finalComps := select(newComps,c-> codim c_0 < 11 and codim c_1 < 11 and rank(aMat % c_0) ==2 and rank(aMat % c_1)==2); --finalComps := select(newComps,c-> rank(aMat % c_0) ==2 and rank(aMat % c_1)==2); finalComps) lineConditionsTorsZ4 = method() lineConditionsTorsZ4(Ideal,Ideal,Matrix,Matrix) := (comp0,comp1,d1',relPfaf) ->( -- input: comp0: an ideal defining a P3 in the P11 of a-variables at which the rank -- of the e-matrix drops -- comp1: an ideal defining a P5 in the P11 necessary to get a double fibre in |2K| -- d1': the first syzygy matrix in normal form without the first row -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations -- output: finalComps: a list of pairs of ideals -- Each pair of the list finalComps defines two different ideals in the P11. To get a -- Godeaux surface with torsion goup Z/4Z we have to choose a line which meet the two corresponding loci -- in exactly one point. SR := ring(comp0); aMat := getAMatrix(d1'); eMat := getEMatrix(d1'); kk := coefficientRing(SR); t := symbol t; z := symbol z; T1 := kk[t_0..t_11]; Z1 := kk[z_0..z_11]; -- consider the ideals in a product space P11xP11 TZ1 := T1**Z1; Sa := kk[support relPfaf]; phit := map(Sa,T1,vars Sa); phiz := map(Sa,Z1,vars Sa); comp0t := trim preimage(phit,sub(comp0,Sa)); comp0z := trim preimage(phiz,sub(comp1,Sa)); pt1 := vars T1 % comp0t; pt2 := vars Z1 % comp0z; relPfafa := sub(relPfaf,Sa); line1 := sub(pt1,TZ1)+sub(pt2,TZ1); -- impose the condition that the line is contained in the Pfaffian variety Q relLine1 := ideal mingens ideal sub(relPfafa,line1); cRelLine1 := decompose relLine1; firstComp := apply(cRelLine1, c-> trim (comp0 + sub(phit(sub(c,T1)),SR))); secondComp := apply(cRelLine1, c-> trim (comp1 + sub(phiz(sub(c,Z1)),SR))); newComps := apply(length firstComp,i-> (firstComp_i,secondComp_i)); finalComps := select(newComps,c-> rank(eMat % c_0) == 2 and rank(eMat % c_1)==3 and codim c_0 < 11 and codim c_1 < 11 ); finalComps) lineConditionsTorsZ2 = method() lineConditionsTorsZ2(Matrix,Matrix) := (d1',relPfaf) ->( -- input: d1': the first syzygy matrix in normal form without the first row -- relPfaf: a row matrix containing the quadratic (Pfaffian) relations defining a variety Q in P11 -- output: compDoubFib: an ideal defining a P3 in Q -- To construct a Godeaux surface with torsion goup Z/2Z we have to choose a line which meets the -- the computed loci in in exactly one point. SR := ring d1'; numVars := numgens SR; x0 := SR_(numVars - 6); x1 := SR_(numVars -5); eMat := getEMatrix(d1'); aMat := getAMatrix(d1'); lociE := lowerRankLociE(d1',relPfaf); lociEP3 := select(lociE,c-> codim c == 8); -- a point in the first component leads to an reducible fibre D1+D3 -- intersecting in the base point of |3K|: comp0 := first lociEP3; -- a point in the second component leads to a double fibre 2D2 in |2K| comp1 := ideal(aMat_{0,1,3}); finalComps := lineConditionsTorsZ4(comp0,comp1,d1',relPfaf); compDoubFib := finalComps_1_1; if codim(compDoubFib) != 8 then error "wrong component is chosen"; compDoubFib) assignVariablesLine=method() assignVariablesLine(Ring,Matrix) := (SR,randLine) ->( -- input: d1': the first syzygy matrix in normal form without the first row -- randLine: a 12x2 matrix representing a line in the complete intersection of the quadrics -- output: subsLine: a row matrix containing all variables of the set-up with the a-,e-, and -- p-variables substituted with the the entries from the given line nvars := numgens SR; x0 := (gens SR)_(nvars-6); x1 := (gens SR)_(nvars-5); as := (vars SR)_{0..11}; aa := as-transpose ( randLine*substitute(matrix{{x0},{x1}},SR)); subsLine :=(vars SR)%ideal aa; subsLine) associatedLineInP11=method() associatedLineInP11(Matrix,Matrix) := (subsLine,relPfaf) ->( Sa := getP11(relPfaf); SR := ring subsLine; nvars := numgens SR; x0 := (gens SR)_(nvars-6); x1 := (gens SR)_(nvars-5); entriesALine := (vars SR)_{0..11} - subsLine_{0..11}; lineInP11 := sub(eliminate(ideal entriesALine,{x0,x1}),Sa); lineInP11) cohomologyTable = method() cohomologyTable(Matrix) := l2Line ->( -- input: l2Line: the second linear solution matrix considered over a P1 -- output: tab: part of the cohomology table of the cokernel sheaf of l2line sheafcokL2 := sheaf cokernel l2Line; tab := transpose matrix {apply(2..7,i->{rank HH^0(sheafcokL2(-i)),rank HH^1(sheafcokL2(-i-1))})}; tab) jacobianLine = method() jacobianLine(Matrix,Matrix) := (subsLine,relPfaf)->( -- input: subsLine: row matrix containing the variables of the normalized set-up with the -- a-variables being replaced by the assginments from the chosen line -- relPfaf: row matrix containing the quadratic (Pfaffian) relations -- ouput: jacQ: the Jacobian matrix of the ideal Q defined by the quadratic relations jacQ := jacobianQ(relPfaf); ambring := ring(relPfaf); kk := coefficientRing(ambring); nvars := numgens ambring; x0 := ambring_(nvars - 6); x1 := ambring_(nvars - 5); P1 := kk[x0,x1]; jacLine := map(P1^{4:2},P1^{12:1},transpose sub(sub(jacQ,subsLine),P1)); jacLine) TEST /// kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTors0(d1',relPfaf,Ms,0); jacLine = jacobianLine(subsLine,relPfaf); /// pickLineGeneral211=method() pickLineGeneral211(Matrix,List,Matrix) := (relPfaf,Ms,amatrix) ->( SR := ring amatrix; kk := coefficientRing(SR); subs1 := vars SR; nvars := numgens SR; rd:=0; x0 := (gens SR)_(nvars-6); x1 := (gens SR)_(nvars-5); as := mingens (ideal amatrix); ma4 := minors(4,amatrix); ma3 := minors(3,amatrix); while( J:=mingens sum (apply(Ms,M->( while (rd=random(SR^1,SR^4); rd ==0 ) do(); ideal (rd*M)))); conic := ideal mingens (ideal(relPfaf)+ideal(J)); Sa := kk[reverse (entries as)_0]; points := sub(conic,Sa)+ideal random(1,Sa); listpoints := select(decompose points,c->degree(c)==1 and dim(c) == 1); not length(listpoints) > 0) do(); pt1 := listpoints_0; pt1coord := syz transpose jacobian(pt1); Q := ideal sub(relPfaf,Sa); jacQ := jacobian Q; varsa := vars Sa; tangentQPt1 := ideal (varsa* sub(jacQ,transpose pt1coord)); linspace := varsa % ideal mingens tangentQPt1; Sa1 := kk[support linspace]; linspace1 := sub(linspace,Sa1); Ms1 := apply(Ms,m->sub(sub(m,Sa),linspace1)); relPfaf1 := ideal mingens sub(Q,linspace1); while( r1 := random(kk^4,kk^1); L1 := ideal mingens ideal apply(1,k->Ms1_k*r1); ci := ideal mingens ideal (gens relPfaf1 % L1); ciL := ci+L1; L2 := ideal(vars Sa1*random(kk^8,kk^1)); p8 := ciL+L2; rempoints := decompose p8; am1 := sub(sub(amatrix,Sa),linspace1); generalpoints := select(rempoints,c->degree(c) ==1 and dim(c)==1 and rank(am1 %c)==4); not length(generalpoints)>0) do(); pt2tmp := generalpoints_0; phi1 := map(Sa1,Sa,linspace1); pt2 := ideal mingens preimage(phi1,pt2tmp); pt2coord := syz transpose jacobian pt2; randline := sub((pt1coord|pt2coord),SR); aaline :=ideal(sub(varsa,SR)-transpose ( randline*matrix{{x0},{x1}})); --lineinP11 := sub(eliminate(aaline,{x0,x1}),Sa); --not ( dim(lineinP11+sub(ma4,Sa))==0 and dim(lineinP11+sub(ma3,Sa)) == 0)) do(); subsLine := subs1 % aaline; (randline,subsLine)) TEST /// /// ------------------------------ From MatFac15.m2----------------------------------------------- Hom0=method() Hom0(Module,Module) := (M,N) -> ( --compute the degree 0 part of Hom(M,N) assert(ring M===ring N); m:=presentation M; n:=presentation N; -- commutative diagramms cD1:=Hom(m,target n)|Hom(source m,n); hom0:=syz(cD1,DegreeLimit=>0); r:= rank Hom(target m,target n); -- homotopies betti Hom(m,target n); homotopies:=transpose (transpose Hom(target m, n)| (-1)*transpose Hom( m, source n)); hom0 = mingens image transpose (transpose hom0)_{0..r-1}; homotopies =mingens image transpose (transpose homotopies)_{0..r-1}; -- a truncate(0 is needed for the general case -- hom0 = mingens image(hom0% homotopies); hom0 = mingens image( gens truncate(0, image hom0) % gens gb(homotopies,DegreeLimit=>0)); hom0) homomorphism0=method() homomorphism0(Module,Module,Matrix) := (M,N,phi) -> ( m:=presentation M; n:=presentation N; rm:=rank target m;rn:=rank target n; psi:=map(target n,target m,matrix apply(rn,i-> apply(rm ,j-> phi_(i+rn*j,0)))); --isHomogeneous psi inducedMap(N,M,psi,Verify=>true) ) -------------------------------------------------------------------------------------------------s --===========================================================================================================================-- --===========================================================================================================================-- --=============================== DOCUMENTATION =============================================-- --===========================================================================================================================-- --===========================================================================================================================-- -------------------------- -- Begin of the documentation ------------------------ beginDocumentation() document { Key => NumericalGodeaux, Headline => "Construction of numerical Godeaux surfaces", "This package contains the implementation of our construction method for numerical Godeaux surfaces from ", HREF{"https://arxiv.org/abs/2009.05357","An 8-dimensional family of simply connected Godeaux surfaces"}, " and " , HREF{"https://arxiv.org/abs/2201.12065","Marked Godeaux surfaces with special bicanonical fibers"}, ". The articles focus on numerical Godeaux surfaces whose bicanonical systems have 4 distinct base points. The main construction has two big steps. The first step consists of choosing a line ", TEX " $$\\ell \\subset Q \\subset \\mathbb{P}^{11}. $$ ", " The variety ", TEX "$ Q \\subset \\mathbb{P}^{11} $ ", "is a complete intersection of four quadrics and plays, together with the corresponding Fano variety of lines ", TEX "$F(Q)$ ", "a crucial part in our construction. ", PARA{}, "The second step of our construction consists of solving a linear system of equations which depends on the line", TEX " $\\ell \\subset Q$ ", " from the first step. For a general line", TEX " $\\ell$ ", "one has a ", TEX " $\\mathbb{P}^3$ ", "of solutions. A general line together with a general solution specify a simply connected Godeaux surface. We call this the dominant component. Special lines lead to different components. We describe the family of lines in ", TEX " $Q$ ", " leading to numerical Godeaux surfaces with torsion group", TEX " $\\mathbb{Z}/3$ ", "and", TEX " $\\mathbb{Z}/5$. ", "Another highlight is the parametrization of the hyperelliptic locus in ", TEX " $Q$ ", " which leads to torsion-free numerical Godeaux surfaces with hyperelliptic bicanonical fibers.", PARA{}, "An important result of the package not covered by the preprints above, is the construction of a 8-dimensional locally complete unirational family of " , TEX " $\\mathbb{Z}/2-$", "Godeaux surfaces.", PARA{}, SUBSECTION "Random construction over finite fields and the rational numbers", UL{ TO randomStandardResolution, TO randomGodeauxSurface, }, SUBSECTION "Setup for the construction", UL{ TO setupGodeaux }, "We compute a model of the variety of lines", TEX " $ F(Q)$ ", "in ", TEX " $\\mathbb{P}^3 \\times \\mathbb{P}^3 \\times \\mathbb{P}^3 \\times \\mathbb{P}^3$. ", "The additional grading is coming from the", TEX " $G = (G_m)^3$", "-action, and a quotient of this action is computed in two steps. First we collapse one", TEX " $ G_m$", "-action and obtain a hypersurface ", TEX "$H_{4,6}$", " of bidegree (4,6) in a", TEX " $\\mathbb{P}^3 \\times \\mathbb{P}^5$.", "The final result is a model of the quotient", TEX " $F(Q)//G$ ", "realized as a hypersurface", TEX " $Y$ ", "in a toric variety. The hypersurface ", TEX "$H_{4,6}$ ", "contains some codimension 1 rational subvariety", TEX " $Z$ ", "and given a randomly chosen point in", TEX " $Z$, ", "functions are added which recover a line in the corresponding", TEX " $G$", "-orbit of lines in", TEX " $ F(Q)$. ", SUBSECTION "Models of F(Q) and its quotients", UL{ TO modelInP3xP3xP3xP3, TO collapsingOneCStar, TO furtherCollapsing, }, SUBSECTION "Precomputed models", UL{ TO precomputedModelInP3xP3xP3xP3, TO precomputedModelInP3xP5, TO precomputedCoxModel }, SUBSECTION "Recovering lines", UL{ TO findPointInP3xP5, TO pointOnARationalCodim1Hypersurface, TO fromPointInP3xP5ToPointInP3xP3xP3xP3, TO fromPointInP3xP3xP3xP3ToLine, TO fromLineToGodeauxSurface }, "We have precomputed parametrizations leading to the hyperelliptic locus in", TEX " $Q$ ", "and special lines.", SUBSECTION "Precomputed Parametrization of Special Points and Lines", UL{ TO precomputedHyperellipticLocus, TO precomputedHyperellipticPoint, TO precomputedTorsZ2Line, TO precomputedTorsZ3Line, TO precomputedTorsZ4Line, TO precomputedTorsZ5Line }, SUBSECTION "Steps of the construction", UL{ TO randomPoint, TO randomLine, TO randomSection, TO standardResolution }, SUBSECTION "From free resolutions to different models of Godeaux surfaces", UL{ TO surfaceInWeightedP5, TO bihomogeneousModel, TO tricanonicalModelInP3, TO canonicalRing }, SUBSECTION "Calculation of the Unirational Parametrization of the Loci of Special Points and Lines", UL{ TO calculationOfTheUnirationalParametrizationOfTorsZ5Lines, TO verifyThmHypLocus, TO computeParametrizationOfHypLocus } } doc /// Key globalVariables (globalVariables,Ring,String) Headline introduce the main variables for the construction Usage globalVariables(kk,s) Inputs kk: Ring the base field over which the computations are performed s: String describing the configuration of the 4 base points of the bicanonical system Outputs A: Matrix representing the first (unknown) syzygy matrix B: Matrix representing the second (unknown) syzygy matrix subs0: Matrix row matrix containing all unknown variables Description Text For each configuration of the 4 base points of the bicanonical system, an individual procedure is called. In all cases, $A$ is 7x26 matrix and $B$ a 26x26 skew-symmetric matrix whose unknown entries are represented by the variables of the construction. The possible strings are "1111", "22", "211" or "4". So far, the case "31" has not been treated. Example kk = ZZ/197; s = "1111"; (A,B,subs0) = globalVariables(kk,s); kk = QQ; s = "22"; (A,B,subs0) = globalVariables(kk,s); (betti A,betti B) /// doc /// Key globalVariables1111 (globalVariables1111,Ring) Headline introduce the main variables in the case of 4 distinct base points Usage globalVariables1111(kk) Inputs kk: Ring the base field over which the computations are performed Outputs A: Matrix represents the first (unknown) syzygy matrix B: Matrix represents the second (unknown) syzygy matrix subs0: Matrix row matrix containing all unknown variables SeeAlso globalVariables /// doc /// Key globalVariables22 (globalVariables22,Ring) Headline introduce the main variables in the case of 2 double base points Usage globalVariables22(kk) Inputs kk: Ring the base field over which the computations are performed Outputs A: Matrix represents the first (unknown) syzygy matrix B: Matrix represents the second (unknown) syzygy matrix subs0: Matrix row matrix containing all unknown variables SeeAlso globalVariables /// doc /// Key globalVariables211 (globalVariables211,Ring) Headline introduce the main variables for the configuration "211" of the base points Usage globalVariables211(kk) Inputs kk: Ring the base field over which the computations are performed Outputs A: Matrix represents the first (unknown) syzygy matrix B: Matrix represents the second (unknown) syzygy matrix subs0: Matrix row matrix containing all unknown variables SeeAlso globalVariables /// doc /// Key globalVariables4 (globalVariables4,Ring) Headline introduce the main variables in the case of a fat base point Usage globalVariables4(kk) Inputs kk: Ring the base field over which the construction will is performed Outputs A: Matrix represents the first (unknown) syzygy matrix B: Matrix represents the second (unknown) syzygy matrix subs0: Matrix row matrix containing all unknown variables SeeAlso globalVariables /// doc /// Key complexModuloRegularSequence (complexModuloRegularSequence,Ring,String) Headline set-up for minimal free resolution modulo x0,x1 Usage complexModuloRegularSequence(SR,s) Inputs SR: Ring containing all variables from the procedure globalVariables s: String describing the configuration of the 4 base points of the bicanonical system Outputs D: ChainComplex the minimal free resolution modulo the regular sequence $x_0,x_1$ Description Text Let $R(X)$ be the canonical ring of a numerical Godeaux surface which we consider as a finitely generated module over the weighted polynomial ring $S = k[x_0,x_1,y_0,\ldots,y_3]$. Modulo the regular sequence $x_0,x_1$, the minimal free resolution of $R(X)$ as an $S$-module splits into a direct sum of three complexes whose maps depend only on the variables $y_0,\ldots,y_3$. In this procedure we build the matrices of the individual complexes depending on the configuration of the four base points. The first complex is the minimal free resolution of the ideal of the four base points in $\mathbb{P}^3$. The second complex is either a direct sum of the resolutions of each single base point (case "1111") or an extension of the single resolutions. Finally, the third complex is the dual of the first one. Example kk = ZZ/197; s = "1111"; (A,B,subs0) = globalVariables(kk,s); SR = ring(A); D = complexModuloRegularSequence(SR,s); betti D -- the four base points in P3: basePoints = ann coker D.dd_1; netList decompose basePoints /// doc /// Key complexModuloRegularSequence1111 (complexModuloRegularSequence1111,Ring) Headline set-up the minimal free resolution modulo $x_0,x_1$ in the case of 4 distinct base points Usage complexModuloRegularSequence1111(SR) Inputs SR: Ring Outputs D: ChainComplex the minimal free resolution modulo the regular sequence $x_0,x_1$ SeeAlso complexModuloRegularSequence /// doc /// Key complexModuloRegularSequence22 (complexModuloRegularSequence22,Ring) Headline set-up the minimal free resolution modulo $x_0,x_1$ in the case of 2 double base points Usage complexModuloRegularSequence22(SR) Inputs SR: Ring Outputs D: ChainComplex the minimal free resolution modulo the regular sequence $x_0,x_1$ SeeAlso complexModuloRegularSequence /// doc /// Key complexModuloRegularSequence211 (complexModuloRegularSequence211,Ring) Headline set-up the minimal free resolution modulo $x_0,x_1$ for the configuration "211" of base points Usage complexModuloRegularSequence211(SR) Inputs SR: Ring Outputs D: ChainComplex the minimal free resolution modulo the regular sequence $x_0,x_1$ SeeAlso complexModuloRegularSequence /// doc /// Key complexModuloRegularSequence4 (complexModuloRegularSequence4,Ring,List) Headline set-up the minimal free resolution modulo $x_0,x_1$ in the case of a fat base point Usage complexModuloRegularSequence4(SR,L) Inputs SR: Ring L: List of length 3 whose entries are either 0 or 1 Outputs D: ChainComplex the minimal free resolution modulo the regular sequence $x_0,x_1$ Description Text If $L = \{0,0,0\}$, then the middle complex is simply the direct sum of the minimal free resolutions of a coordinate point in $\mathbb{P}^3$. SeeAlso complexModuloRegularSequence /// doc /// Key setupGeneralMatrices (setupGeneralMatrices,ChainComplex,Matrix,Matrix) Headline compute the general set-up for the construction Usage (d1',d2) = setupGeneralMatrices(D,A,B) Inputs D: ChainComplex the minimal free resolution modulo $x_0,x_1$ from the procedure complexModuloRegularSequence A: Matrix (part of) the first syzygy matrix with the variables from the procedure globalVariables B: Matrix the second syzygy matrix with the variables from the procedure globalVariables Outputs d1': Matrix d2: Matrix Description Text The procedure puts the matrices with the unknown entries from the procedure globalVariables and the matrices with the known entries from the procedure complexModuloRegularSequence together to the general set-up for the construction. Example kk = ZZ/197; s = "22"; (A,B,subs0) = globalVariables(kk,s); SR = ring(A); D = complexModuloRegularSequence(SR,s); (d1',d2) = setupGeneralMatrices(D,A,B); (betti d1',betti d2) /// doc /// Key getRelationsAndNormalForm (getRelationsAndNormalForm,Matrix,Matrix,Matrix) Headline compute a minimal set of the relations and a normal form for d1' and d2 Usage (relLin,relPfaf,d1'nor,d2nor) = getRelationsAndNormalForm(d1',d2,subs0) Inputs d1': Matrix the starting set-up for the first matrix d2: Matrix the starting set-up for the second matrix subs0: Matrix row matrix containing all unknown variables Outputs relLin: Matrix all relations which are linear in the unknown $o$- and $c$-variables relPfaf: Matrix all relations which are quadratic in the unknown $a$-variables d1'nor: Matrix the normal form of d1' d2nor: Matrix the normal form of d2 Description Text The procedure uses first a 6x8 submatrix of $d_2$ depending only on the $y$-variables to normalize the $o$-matrix in $d_2$. Then we compute the product $d_1'd_2$ whose entries define all relations between the known and unknown variables of the set-up. After evaluating the relations which are linear in the unknown variables we see that the entries of the matrix $e$ and $p$ depend only on the entries of the $a$-matrix. Furthermore, the entries of the $n$-matrix depend only on the $a$-, $c$- and $o$-variables. Updating the original matrices, we obtain normal forms for $d_1'$ and $d_2$ whose entries depend only on the $a$-,$c$-, $o$- and $y$-variables. The remaining linear relations are stored in the matrix relLin, whereas the quadratic relations are saved in the matrix relPfaf. These relations are usually Pfaffians of rank 5 or 6. Example kk = ZZ/197; s = "1111"; (A,B,subs0) = globalVariables(kk,s); SR = ring(A); D = complexModuloRegularSequence(SR,s); (d1',d2) = setupGeneralMatrices(D,A,B); (relLin,relPfaf,d1'nor,d2nor) = getRelationsAndNormalForm(d1',d2,subs0); betti relLin, betti relPfaf transpose relPfaf /// doc /// Key setupSkewMatrices (setupSkewMatrices,Matrix,String) Headline compute four skew-symmetric matrices whose Pfaffians are among the quadratic relations Usage Ms = setupSkewMatrices(relPfaf,s) Inputs relPfaf: Matrix row matrix containing the quadratic relations from the construction s: String describing the configuration of the 4 base points of the bicanonical system Outputs Ms: Sequence three or four skew-symmetric matrices of size 4 whose entries are $a$-variables Description Text The quadratic relations computed in the procedure getRelationsAndNormalForm depend only on the unknown entries of the matrix $a$. In almost all cases, each of these relations is the Pfaffian of skew-symmetric matrix of size 4. The procedure fixes a choice of skew-symmetric matrices whose Pfaffians coincides with the given quadrics. Example kk = ZZ/197; s = "22"; (A,B,subs0) = globalVariables(kk,s); SR = ring(A); D = complexModuloRegularSequence(SR,s); (d1',d2) = setupGeneralMatrices(D,A,B); (relLin,relPfaf,d1'nor,d2nor) = getRelationsAndNormalForm(d1',d2,subs0); Ms = setupSkewMatrices(relPfaf,s); /// doc /// Key setupGodeaux (setupGodeaux,Ring,String) Headline summarize the single steps for the general set-up of the construction Usage (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s) Inputs kk: Ring the base field over which the computations are performed s: String describing the configuration of the 4 base points of the bicanonical system Outputs relLin: Matrix row matrix containing the relations which are linear in the unknown $o$- and $c$-variables relPfaf: Matrix row matrix containing the relations which are quadratic in the unknown $a$-variables d1': Matrix the normal form of the first syzygy matrix with the first row omitted d2: Matrix the normal form of the second syzygy matrix Ms: Sequence three or four skew-symmetric matrices of size 4 whose entries are $a$-variables Description Text Starting with a base field $kk$ and a string $s$, the procedure computes the normal forms for the matrices $d_1'$ and $d_2$, all relations which have to be solved and a sequence of skew-symmetric matrices representing the quadratic relations which are usually Pfaffians of rank 5 or 6. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); SeeAlso globalVariables complexModuloRegularSequence setupGeneralMatrices getRelationsAndNormalForm /// doc /// Key getAMatrix (getAMatrix,Matrix) Headline compute the a-matrix of a given matrix Usage getAMatrix(A) Inputs A: Matrix Outputs aMat: Matrix the $a$-matrix of A Description Text Given either a 8x26 or a 7x26 matrix representing the first syzygy matrix $d_1$ or its partial matrix $d_1'$, the procedure computes the $a$-matrix of this matrix. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); aMat = getAMatrix(d1') /// doc /// Key getEMatrix (getEMatrix,Matrix) Headline compute the e-matrix of a given matrix Usage getEMatrix(A) Inputs A: Matrix Outputs eMat: Matrix the $e$-matrix of A Description Text Given either a 8x26 or a 7x26 matrix representing the first syzygy matrix $d_1$ or its partial matrix $d_1'$, the procedure computes the $e$-matrix of this matrix. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); eMat = getEMatrix(d1'); /// doc /// Key jacobianQ (jacobianQ,Matrix) Headline compute the Jacobian matrix of the quadratic relations Usage jacobianQ(relPfaf) Inputs relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs jacQ: Matrix Description Text We consider the quadratic relations only over the polynomial ring with the $a$-variables and compute the Jacobian Matrix. /// doc /// Key lowerRankLociA (lowerRankLociA,Matrix,Matrix) (lowerRankLociA,Matrix,Matrix,Ring) Headline compute the loci at which the rank of the a-matrix drops Usage lowerRankLociA(d1',relPfaf) lowerRankLociA(d1',relPfaf,Sa) Inputs d1': Matrix the first syzygy matrix in normal form without the first row relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Sa: Ring the ring associated to the P^n of a-variables Outputs lociAMat: List Description Text The quadratic (Pfaffian) relations define a complete intersection variety $Q$ in a $\mathbb{P}^n$ of $a$-variables. In this procedure, we compute the loci of points in $Q$ at which the rank of $a$-matrix drops, that is, the minimal primes of the maximal minors of the $a$-matrix (within the variety $Q$). These loci play an important role for the construction of numerical Godeaux surfaces with hyperelliptic fibers. /// doc /// Key lowerRankLociE (lowerRankLociE,Matrix,Matrix) Headline compute the loci at which the rank of the e-matrix drops Usage lowerRankLociE(d1',relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form without the first row relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs lociEMat: List Description Text The quadratic (Pfaffian) relations define a complete intersection variety $Q$ in a $\mathbb{P}^n$ of $a$-variables. In this procedure, we compute the loci of points in $Q$ at which the rank of $e$-matrix drops, that is, the minimal primes of the maximal minors of the $e$-matrix (within the variety $Q$). These loci play an important role for the construction of surfaces with torsion groups $\mathbb{Z}/n\mathbb{Z}$ for $n \geq 3$. /// doc /// Key solutionMatrix (solutionMatrix,Matrix) Headline display the relations linear in the c- and o-variables as a matrix Usage (solutionMat,restVars) = solutionMatrix(relLin) Inputs relLin: Matrix row matrix containing all relations which are linear in the c- and o-variables Outputs solutionMat: Matrix a matrix representing these linear relation restVars: Matrix a row matrix containing the unknown c- and o-variables Description Text Differentiating the linear relations with respect to the $c$- and $o$-variables, we obtain a matrix whose coefficients depend only on the $a$-variables and are either linear or quadratic. All in all, the matrix is of the form $$ \begin{pmatrix} 0 & l_1 \\ l_2 & q \end{pmatrix} $$ where the entries of $l_1$, $l_2$ are linear in the $a$-variables and the entries of $q$ are quadratic. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (solutionMat,restVars) = solutionMatrix(relLin); (betti solutionMat,betti restVars) /// doc /// Key singleSolutionMatricesOverP11 (singleSolutionMatricesOverP11,Matrix) Headline display the single solution matrices over the P^n of a-variables Usage (ma,l1,l2) = singleSolutionMatricesOverP11(relLin) Inputs relLin: Matrix a row matrix containing all relations which are linear in the c- and o-variables Outputs ma: Matrix the solution matrix from the procedure solutionMatrix considered over the P^n of a-variables l1: Matrix the first submatrix of ma whose entries are linear in the a-variables l2: Matrix the second submatrix of ma whose entries are linear in the a-variables Description Text The procedure lifts the solution matrix from the function solutionMatrix and its two linear submatrices $l_1$ and $l_2$ to homogeneous matrices over the $\mathbb{P}^{n}$ of $a$-variables. In the cases "1111", "22" and "211" we get a $\mathbb{P}^{11}$, hence the name. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (ma,l1,l2) = singleSolutionMatricesOverP11(relLin); (betti ma,betti l1, betti l2) SeeAlso solutionMatrix /// doc /// Key getChainComplexes (getChainComplexes,Matrix,Matrix) Headline resolve the two linear submatrices of the solution matrices over the coordinate ring of the Pfaffians Usage (C1,C2) = getChainComplexes(relLin,relPfaf) Inputs relLin: Matrix row matrix containing all relations which are linear in the c- and o-variables relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs C1: ChainComplex a chain complex resolving the linear solution matrix l1 in both directions over the coordinate ring of the quadratic (Pfaffian) relations C2: ChainComplex a chain complex resolving the linear solution matrix l2 in both directions over the coordinate ring of the quadratic (Pfaffian) relations Description Text In this procedure we work over the coordinate ring $S_Q$ where $Q \subset \ \mathbb{P}^{11}$ is the complete intersection of the four quadratic relations. For $i=1,2$, we resolve the matrices $l_i$ and $l_i^{tr}$ in both directions and put this together to a chain complex $C_i$. Very surprisingly, in the case "1111" the resolution of $l_1$ and $l_2$ over the non-regular ring S_Q is finite in both directions. So far, we have studied these chain complexes mainly for the case "1111". The resulting complexes $C_1$ and $C_2$ are exact outside a codimension 3 respectively 2 subscheme of $Q$. These loci are determined in the procedure homologyLocus. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (C1,C2) = getChainComplexes(relLin,relPfaf); betti C1, betti C2 prune HH C1 apply(4,i-> (pH = prune HH_i(C1); (dim pH,degree pH))) dim ring C1 apply(4,i-> (pH = prune HH_i(C2); (dim pH,degree pH))) SeeAlso solutionMatrix singleSolutionMatricesOverP11 homologyLocus /// doc /// Key homologyLocus (homologyLocus,Matrix,Matrix) Headline compute the homology of the two chain complexes C1 and C2 Usage homologyLocus(relLin,relPfaf) Inputs relLin: Matrix row matrix containing all relations which are linear in the c-and o-variables relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs homLoci: List Description Text The procedure computes a list containing the prime ideals in the support of the homology of the two relevant chain complexes C1 and C2 from the procedure getChainComplexes. SeeAlso getChainComplexes /// doc /// Key singularLocusQ (singularLocusQ,Matrix) Headline compute the minimal primes of the singular locus of the Pfaffian relations Usage singularLocusQ(relPfaf) Inputs relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs singLocus: List Description Text The procedure computes the minimal associated primes of the singular locus of the ideal $Q$ generated by the quadratic (Pfaffian) relations. /// doc /// Key allLoci (allLoci,Matrix,Matrix,Matrix) Headline compute all exceptional loci at which the dimension of the solution space may rise Usage loci = allLoci(d1',relLin,relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form without the first row relLin: Matrix a row matrix containing all relations which are linear in the c- and o-variables relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs loci: List a list of all exceptional loci Description Text Our construction method for numerical Godeaux surfaces relies mainly on two big steps: initially, the choice of a line in the complete quadratic intersection $Q$ (defined by the entries of the matrix relPfaf) and, secondly, the choice of a solution of linear relations (defined by the entries of the matrix relLin). For a general line in $Q$, the solution space is a 4-dimensional linear space. However, if the the chosen line intersects special loci in $Q$, the dimension of the solution space may rise. All these possible exceptional loci are determined in this procedure. SeeAlso lowerRankLociA lowerRankLociE homologyLocus singularLocusQ /// doc /// Key allLociTors0 (allLociTors0,Matrix,List) Headline compute all exceptional loci for torsion-free numerical Godeaux surfaces Usage loci = allLoci(d1',loci) Inputs d1': Matrix the first syzygy matrix in normal form without the first row loci: List the list of all exceptional loci from the procedure allLoci Outputs lociTors0: List a list of all exceptional loci for torsion-free Godeaux surfaces SeeAlso allLoci /// doc /// Key getP11 (getP11,Matrix) Headline the polynomial ring which depends only on the a-variables Usage Sa = getP11(relPfaf) Inputs relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs Sa: Ring Description Text For the configuration of base points "1111","22", "211", the quadratic (Pfaffian) relations depend only on 12 $a$-variables. This procedure gives the polynomial ring depending on these variables. So far, the case "4", where there are 16 $a$-variables left, has not been studied in detail. Example kk = QQ; s = "211"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf) vars Sa /// doc /// Key modelInP3xP3xP3xP3 (modelInP3xP3xP3xP3,Ring) Headline compute the model of the Fano variety F(Q) in P3xP3xP3xP3 Usage I=modelInP3xP3xP3xP3(kk) Inputs kk: Ring the ground field, either QQ or a finite field Outputs I: Ideal the ideal of the model in P3xP3xP3xP3 Description Text The function computes the model of $F(Q)$ in $\mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3$ from the four skew-symmetric matrices whose maximal Pfaffians define the complete intersection variety $Q$. For a general line in $F(Q)$ the restriction of the skew-symmetric matrices have constant syzygies $b_i$. Conversely, given $4\times 1$ matrices $b_0,\ldots, b_3$, the ideal $I$ describes the condition that these four vectors come from a line in $Q$. Example kk = QQ I=precomputedModelInP3xP3xP3xP3(kk); isHomogeneous I B=QQ[support I] fI = res sub(I,B) -- 5.27437 seconds elapsed betti fI Text The computation of the model takes a some time. For that reason we call the precomputed model. SeeAlso precomputedModelInP3xP3xP3xP3 /// doc /// Key precomputedModelInP3xP3xP3xP3 (precomputedModelInP3xP3xP3xP3,Ring) Headline load the precomputed ideal of the model of F(Q) in P3xP3xP3xP3 Usage I=precomputedModelInP3xP3xP3xP3(kk) Inputs kk: Ring the ground field, either QQ or a finite field Outputs I: Ideal the ideal of the model in P3xP3xP3xP3 Description Text The function computes the model in $\mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3$ from the procedure modelInP3xP3xP3xP3. Example kk = QQ I=precomputedModelInP3xP3xP3xP3(kk); isHomogeneous I tally degrees ring I numgens I SeeAlso modelInP3xP3xP3xP3 /// doc /// Key collapsingOneCStar (collapsingOneCStar,Ideal) Headline compute the hypersurface of bidegree (4,6) in P3xP5 Usage H=collapsingOneCStar(I) Inputs I: Ideal of the model of F(Q) in P3xP3xP3xP3 Outputs H: Matrix the equation of a hypersurface of bidegree (4,6) in P3xP5 Description Text The function computes a hypersurface $H_{4,6}$ of bidegree $(4,6)$ in $\mathbb{P}^3 \times \mathbb{P}^5$ which is the image of the model of $F(Q)$ in $\mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3$ under a rational map. The fibers of the map are $G_m$-orbits. Example kk = QQ I1=precomputedModelInP3xP3xP3xP3(kk); isHomogeneous I1 "--H=collapsingOneCStar I1;" Text Since the function takes about 150 secends we use the precomputed equations. Example H = precomputedModelInP3xP5(QQ); degrees ring H degrees source H sum degrees ring H betti H tH=terms H_(0,0); #tH lcmTH=lcm tH factor sub((coefficients lcmTH)_1_(0,0),ZZ) SeeAlso precomputedModelInP3xP5 /// doc /// Key precomputedModelInP3xP5 (precomputedModelInP3xP5,Ring) Headline load the precomputed model Usage H=precomputedModelInP3xP5(kk) Inputs kk: Ring ground field QQ or a finite prime field Outputs H: Matrix the equation of a hypersurface of bidegree (4,6) in P3xP5 Description Text The function loads the equation of the image of a rational map $$F(Q) \cdots \rightarrow \mathbb{P}^3 \times \mathbb{P}^5$$ whose fibers are $G_m$-orbits. Example H = precomputedModelInP3xP5(QQ); degrees ring H sum degrees ring H == flatten degrees source H betti H tH=terms H_(0,0); #tH lcmTH=lcm tH factor sub((coefficients lcmTH)_1_(0,0),ZZ) SeeAlso collapsingOneCStar /// doc /// Key furtherCollapsing (furtherCollapsing,Ring) Headline computes the 5-dimensional anti-canonical hypersurface in the cox ring of a toric variety Usage G= furtherCollapsing(kk) Inputs kk: Ring ground field QQ or a finite prime field Outputs G: Ideal of the equation of a hypersurface Description Text Collapsing the remaining $G_m^2$ action, the result is a 5-dimensional anti-canonical hypersurface in a toric variety which is birational with $F(Q)//G_m^3$. Example "--elapsedTime G = furtherCollapsing(QQ);" Text Since the computation of the model takes some time, we use the pre-computed model. The toric variety is a P3-bundle over a P2-bundle over P1. Example G= precomputedCoxModel(QQ); coxRing = ring G 5==dim G-3 degrees coxRing degrees source gens G sum degrees coxRing tG=terms G_0; #tG lcmTG=lcm tG factor sub((coefficients lcmTG)_1_(0,0),ZZ) SeeAlso precomputedCoxModel /// doc /// Key modelInP1BundleOverP2xP5 (modelInP1BundleOverP2xP5,Matrix) Headline compute the projection from a double point of H_{4,6} Usage G= modelInP1BundleOverP2xP5(H) Inputs H: Matrix defining the hypersurface in P3xP5 Outputs G: Matrix of the equation of a hypersurface Description Text The hypersurface $H_{4,6} \subset \mathbb{P}^3 \times \mathbb{P}^5$ is singular along $(0,0,0,1) \times \mathbb{P}^5$. The function describes $H_{4,6}$ via the projection from this point. Example H = precomputedModelInP3xP5(QQ); G = ideal modelInP1BundleOverP2xP5(H); 7==dim G-3 sum degrees ring G degrees source gens G SeeAlso findPointInP3xP5 /// doc /// Key precomputedCoxModel (precomputedCoxModel,Ring) Headline load the equation of the 5-dimensional hypersurface in a Cox ring of a toric variety Usage G= precomputedCoxModel(kk) Inputs kk: Ring the ground field QQ or a finite field Outputs G: Ideal of the equation of a anti-canonical hypersurface Description Text $G$ is the ideal of a birational model of the 5-dimensional quotient $F(Q)//(G_m)^3$ as an anti-canonical hypersurface in a toric variety. The toric variety is a $\mathbb{P}^3$-bundle over a $\mathbb{P}^2$-bundle over $\mathbb{P}^1$. The fibers over the $\mathbb{P}^2$-bundle over $\mathbb{P}^1$ are K3-surfaces Example G= precomputedCoxModel(QQ) coxRing = ring G 5==dim G-3 vars coxRing degrees coxRing degrees source gens G sum degrees coxRing SeeAlso modelInP1BundleOverP2xP5 /// doc /// Key findPointInP3xP5 (findPointInP3xP5,Ring) Headline find a point on the model in P3xP5 Usage pt= findPointInP3xP5(kk) Inputs kk: Ring a finite ground field Outputs pt: Matrix coordinates of a point in the model in P3xP5 Description Text Substituting random values for all but one of the the coordinates we get a quadratic equation for the last coordinate, which in about 50 % of the cases has a kk-rational root. Example kk=ZZ/(nextPrime 10^3) H = precomputedModelInP3xP5(kk); pt=findPointInP3xP5(kk) substitute(H,pt) SeeAlso pointOnARationalCodim1Hypersurface /// doc /// Key pointOnARationalCodim1Hypersurface (pointOnARationalCodim1Hypersurface,ZZ) Headline choose a QQ-rational point on a codimension 1 rational subvariety of the model in P3xP5 Usage pt= pointOnARationalCodim1Hypersurface(ht) Inputs ht: ZZ the height of the random choices of coefficients in ZZ Outputs pt: Matrix coordinates of a point in P3xP5 Description Text The equation $H$ of the model in P3xP5 depend on the variables P3xP5_3 only quadratically. The constant term of this quadric depends linearly on P3xP5_4. Thus choosing random integer coordinates of the remaining coordinates allows to compute a point. The input ht specifies the height of the randomly choosen integers Example H = precomputedModelInP3xP5(QQ); ht=19 pt=pointOnARationalCodim1Hypersurface(ht) substitute(H,pt) pt2=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) line=fromPointInP3xP3xP3xP3ToLine(pt2) SeeAlso findPointInP3xP5 /// doc /// Key fromPointInP3xP5ToPointInP3xP3xP3xP3 (fromPointInP3xP5ToPointInP3xP3xP3xP3,Matrix) Headline compute a point in the model in P3xP3xP3xP3 Usage pt1= fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) Inputs pt: Matrix coordinates of a point in P3xP5 Outputs pt1: Matrix coordinates of a point in the model in P3xP3xP3xP3 Description Text Since the map from the model in P3xP3xP3xP3 $\mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3$ to the model in $\mathbb{P}^3 \times \mathbb{P}^5$ has 1-dimensional rational fibers it is possible to compute a preimage point. Example kk=ZZ/(nextPrime 10^3) H = precomputedModelInP3xP5(kk); pt=findPointInP3xP5(kk) substitute(H,pt) pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) I=precomputedModelInP3xP3xP3xP3(kk); sub(I,pt1) Text Using pointOnARationalCodim1Hypersurface it is also possible to find points over $\mathbb{Q}$. Example kk=QQ H = precomputedModelInP3xP5(QQ); pt=pointOnARationalCodim1Hypersurface(100) substitute(H,pt) pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) I=precomputedModelInP3xP3xP3xP3(kk); sub(I,pt1) SeeAlso fromPointInP3xP3xP3xP3ToLine /// doc /// Key fromPointInP3xP3xP3xP3ToLine (fromPointInP3xP3xP3xP3ToLine,Matrix) Headline compute a line in Q from a point in the model in P3xP3xP3xP3 Usage line = fromPointInP3xP3xP3xP3ToLine(pt) Inputs pt: Matrix coordinates of a point in P3xP3xP3xP3 Outputs line: Matrix line spanned by 2 points in Q Description Text Given a kk-rational point $(b_0,b_1,b_2,b_3)$ in the model in $\mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3 \times \mathbb{P}^3$ we find the corresponding line in $Q$ by solving the system of equations $b_0\cdot M_0=0, \ldots, b_3\cdot M_3=0$ where the $M_i$ are the four skew-symmetric matrices whose Pfaffians define $Q$. Example kk=ZZ/(nextPrime 10^3) H = precomputedModelInP3xP5(kk); pt=findPointInP3xP5(kk) sub(H,pt) pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) I=precomputedModelInP3xP3xP3xP3(kk); trim sub(I,pt1) line =fromPointInP3xP3xP3xP3ToLine(pt1) Text Using pointOnARationalCodim1Hypersurface it is also possible to find lines over QQ. Example kk=QQ H = precomputedModelInP3xP5(kk); pt=pointOnARationalCodim1Hypersurface(101) sub(H,pt) pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) I=precomputedModelInP3xP3xP3xP3(kk); sub(I,pt1) line =fromPointInP3xP3xP3xP3ToLine(pt1) /// doc /// Key fromLineToStandardResolution (fromLineToStandardResolution,Matrix) Headline compute a standard resolution F of an S-module R from a given line Usage fromLineToStandardResolution(line); Inputs pt: Matrix a 2x12 - matrix defining a line in Q Outputs F: ChainComplex a standard resolution of an S-module R Description Text Starting with a line in Q computed from the procedure fromPointInP3xP3xP3xP3ToLine, the function computes an $S$-module $R$ together with a standard resolution $F$. Note that because of size of the coefficients, the computations over the rational numbers are very time consuming. Example kk=ZZ/101 H = precomputedModelInP3xP5(kk); pt=findPointInP3xP5(kk) pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) line =fromPointInP3xP3xP3xP3ToLine(pt1) F = fromLineToStandardResolution(line); betti F SeeAlso randomStandardResolution /// doc /// Key fromLineToGodeauxSurface (fromLineToGodeauxSurface,Matrix) Headline compute a birational model of a numerical Godeaux surface from a given line Usage fromLineToGodeauxSurface(line); Inputs pt: Matrix a 2x12 - matrix defining a line in Q Outputs I: Ideal defining a birational model of a Godeaux surface in a weighted projective space P(2,2,3,3,3,3) Description Text Starting with a line in Q computed from the procedure fromPointInP3xP3xP3xP3ToLine, the function computes a surface $Y$ in $\mathbb{P}(2^2,3^4)$ which is a birational model of a numerical Godeaux surface. Note that because of size of the coefficients, the computations over the rational numbers are very time consuming. Example kk=ZZ/101 H = precomputedModelInP3xP5(kk); pt=findPointInP3xP5(kk) pt1=fromPointInP3xP5ToPointInP3xP3xP3xP3(pt) line =fromPointInP3xP3xP3xP3ToLine(pt1) I = fromLineToGodeauxSurface(line); S=ring I J=eliminate(I,{S_0,S_1}); P3=kk[support J] betti(J'=sub(J,P3)) SeeAlso randomGodeauxSurface /// doc /// Key randomPoint (randomPoint,Ideal) (randomPoint,Ideal,Ring) (randomPoint,Ideal,List) Headline compute a rational point in a variety Usage randomPoint(I) randomPoint(I,Sa) randomPoint(I,Ms) Inputs I: Ideal Sa: PolynomialRing Ms: List list of skew-symmetric matrices Outputs point: Ideal defining a point in the given variety Description Text Given an ideal in a polynomial ring over a finite field, this procedure computes, if possible, a rational point in the corresponding variety. We proceed by intersecting with random hyperplanes down to a set of points and repeat this until we find a rational point (if existing). If an additional polynomial ring is indicated, then we compute a point in this ring, if possible. If the ideal $I$ is just the complete intersection of the Pfaffian relations from our construction, then we can use the corresponding skew-symmetric matrices from the list Ms to cut down to some linear subspaces which may speed up the computation. If the ideal $I$ defines an empty vanishing locus, an error message is printed. Example kk = ZZ/37; R = kk[x_0..x_5] m = genericSkewMatrix(R,4) i = pfaffians(4,m) p = randomPoint i s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); p = randomPoint(ideal relPfaf,Ms) /// doc /// Key randomLine (randomLine,Ideal,Ideal,Matrix,Ring) (randomLine,Ideal,Matrix,Ring) Headline compute a line through a given point which is completely contained in the Pfaffian variety Usage (randLine,subsLine) = randomLine(point,J,relPfaf,Sa) (randLine,subsLine) = randomLine(point,relPfaf,Sa) Inputs point: Ideal defines a point in the Pfaffian variety Q J: Ideal relPfaf: Matrix row matrix containing the Pfaffian relations Sa: PolynomialRing Outputs randLine: Matrix a 12x2-matrix spanning a line in Proj(Sa) subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line Description Text The procedure computes a line in the $\mathbb{P}^{11}$ given by the polynomial ring $S_a$. This lines contains the given point and is completely contained in the variety of the 4 quadratic relations in $\mathbb{P}^{11}$. If an second ideal $J$ is given as an argument, the line will intersect the vanishing locus $V(J)$, if possible. The line is represented by a $12\times 2$ matrix whose first column parametrize the given first point and whose second column represents either a general point on the line or a point in the variety $V(J)$. The row matrix "subsLine" contains all variables of the construction with the $a$-variables replaced by the assignment obtained from the chosen line. /// doc /// Key precomputedTorsZ3Line (precomputedTorsZ3Line,Ring) Headline compute a line leading generically to a Z/3-Godeaux surface using a unirational parametrization Usage (phi1,phi2) = precomputedTorsZ3Line(Sa) Inputs Sa: PolynomialRing the polynomial rings of the $a$-variables Outputs phi1: RingMap parametrizing a first general point on a $\mathbb{Z}/3$-line phi2: RingMap parametrizing a second general point on a $\mathbb{Z}/3$-line Description Text The locus of lines in $Q$ leading generically to marked numerical Godeaux surfaces with torsion group $\mathbb{Z}/3$ is birational to a $\mathbb{P}^1$-bundle $Z$ over $\mathbb{P}^3 \ \times \ \mathbb{P}^1$. The procedures gives two parametrization homomorphisms from $S_a$ to the coordinate ring of $Z$, where the image of each map gives a point in $Q$ whose connecting line is completely contained in $Q$ and leads generically to a $\mathbb{Z}/3$-Godeaux surface. /// doc /// Key associatedLineInP11 (associatedLineInP11,Matrix,Matrix) Headline compute the associated line in the P11 of a-variables Usage lineInP11 = r associatedLineInP11(subsLine,relPfaf) Inputs subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs lineInP11: Ideal Description Text Given the row matrix subsLine where the $a$-variables have been replaced by linear combinations of $x_0,x_1$ parametrizing a line in $\mathbb{P}^{11}$, the procedure computes the corresponding line as a variety of $\mathbb{P}^{11}$. /// doc /// Key normalBundleLineInQ (normalBundleLineInQ,Matrix,Matrix) Headline compute the normal bundle of a line in Q Usage normalBundleLineInQ(subsLine,relPfaf) Inputs subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line relPfaf: Matrix row matrix containing the quadratic (Pfaffian) relations Outputs normalBundle: CoherentSheaf Description Text If the chosen line $l$ does not intersect the singular locus of the complete intersection $Q$, the the normal sheaf ${\cal N}_{l|Q}$ is locally free, hence isomorphic to a line bundle on $\mathbb{P}^1$. Note that if $h^1({\cal N}_{l|Q}) = 0$, then the Fano scheme of lines in $Q$ is smooth at the corresponding point. Example kk = ZZ/nextPrime(32001); s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf); normalBundle = normalBundleLineInQ(subsLine,relPfaf) HH^1(normalBundle) Caveat We do not check whether the line intersects the singular locus or not. /// doc /// Key precomputedTorsZ5Line (precomputedTorsZ5Line,Ring) Headline compute a line leading generically to a Z/5-Godeaux surface using a unirational parametrization Usage (phi1,phi2) = precomputedTorsZ5Line(Sa) Inputs Sa: Ring the polynomial ring containing the $a$-variables Outputs phi1: RingMap parametrizing a first point on a general Z/5-line phi2: RingMap parametrizing a second point on a general Z/5-line Description Text The locus of lines in $Q$ leading generically to marked numerical Godeaux surfaces with torsion group $\mathbb{Z}/5$ is birational to a union of two copies of $\mathbb{P}^1$. The procedures gives two parametrization homomorphisms from $S_a$ to the coordinate ring of a $\mathbb{P}^1 \ \times \ \mathbb{P}^1$, where the image of each map gives a point in $Q$ whose connecting line is completely contained in $Q$ and leads generically to a $\mathbb{Z}/5$-Godeaux surface. /// doc /// Key precomputedTorsZ4Line (precomputedTorsZ4Line,Ring) Headline compute a line leading generically to a Z/4-Godeaux surface using a unirational parametrization Usage (phi1,phi2) = precomputedTorsZ4Line(Sa) Inputs Sa: Ring the polynomial ring containing the $a$-variables Outputs phi1: RingMap parametrizing a first point on a general Z/4-line phi2: RingMap parametrizing a second point on a general Z/4-line Description Text The locus of lines in $Q$ leading generically to $\mathbb{Z}/4$-numerical Godeaux surfaces (with two fixed double base points of the bicanonical system) is birational to a union $\mathbb{P}^3 \ times \ \mathbb{P}^1$. The procedures gives two parametrization homomorphisms from $S_a$ to the coordinate ring of a $\mathbb{P}^3 \ \times \ \mathbb{P}^1$, where the image of each map gives a point in $Q$ whose connecting line is completely contained in $Q$ and leads generically to a $\mathbb{Z}/4$-Godeaux surface. /// doc /// Key precomputedTorsZ2Line (precomputedTorsZ2Line,Ring) Headline compute a line leading generically to a Z/2-Godeaux surface using a unirational parametrization Usage (phi1,phi2) = precomputedTorsZ2Line(Sa) Inputs Sa: Ring the polynomial ring containing the $a$-variables Outputs phi1: RingMap parametrizing a first point on a general Z/2-line phi2: RingMap parametrizing a second point on a general Z/2-line Description Text The locus of lines in $Q$ leading generically to $\mathbb{Z}/2$-numerical Godeaux surfaces (with two fixed double base points of the bicanonical system) is birational to a bundle $Z$ over $\mathbb{P}^3$. The procedures gives two parametrization homomorphisms from $S_a$ to the coordinate ring of $Z$, where the image of each map gives a point in $Q$ whose connecting line is completely contained in $Q$ and leads generically to a $\mathbb{Z}/2$-Godeaux surface. /// doc /// Key precomputedHyperellipticLocus (precomputedHyperellipticLocus,Ring) Headline get the ideal of the hyperelliptic locus Usage J = precomputedHyperellipticLocus(Sa) Inputs Sa: Ring the polynomial ring containing the $a$-variables Outputs J: Ideal the ideal of the hyperelliptic locus Description Text Creates the ideal of the hyperelliptic locus from a precomputation. Example kk = QQ; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf); J = precomputedHyperellipticLocus(Sa) /// doc /// Key precomputedHyperellipticPoint (precomputedHyperellipticPoint,Ring) Headline compute a point in the hyperelliptic locus using the unirational parametrization Usage phi = precomputedHyperellipticPoint(Sa) Inputs Sa: Ring the polynomial ring containing the $a$-variables Outputs phi: RingMap from the ring Sa to the Cox ring of the parametrization space Description Text The hyperelliptic locus $V_{hyp}$ in $Q \subset \mathbb{P}^{11}$ is is birational to a product of a Hirzebruch surface $F$ with 3 copies of $\mathbb{P}^{1}$. The procedure returns a ring map corresponding to the rational map $$ \phi: F \ \times \ \mathbb{P}^1 \ \times \ \mathbb{P}^1 \ \times \ \mathbb{P}^1 \ \rightarrow \ V_{hyp} \ \subset \ \mathbb{P}^{11}.$$ /// doc /// Key verifyThmHypLocus (verifyThmHypLocus,Ring) Headline print commands which verify the assertions on the hyperelliptic locus Usage (Jhyp,paraHyp) = verifyThmHypLocus(kk) Inputs kk: Ring the ground field, mainly QQ Outputs Jhyp: Ideal defining the hyperelliptic locus paraHyp: RingMap defininig the precomputed parametrization of the hyperelliptic loci Description Text The hyperelliptic locus $V_{hyp}$ in $Q \subset \mathbb{P}^{11}$ is is birational to a product of a Hirzebruch surface $F$ with 3 copies of $\mathbb{P}^{1}$. The procedure returns a ring map corresponding to the rational map $$ \phi: F \ \times \ \mathbb{P}^1 \ \times \ \mathbb{P}^1 \ \times \ \mathbb{P}^1 \ \rightarrow \ V_{hyp} \ \subset \ \mathbb{P}^{11}.$$ This function prints the commands which check that the assertion of Thm 2.9 in [F.-O. Schreyer and I. Stenger, {\em Marked Godeaux surfaces with special bicanonical fibers}. https://arxiv.org/pdf/2201.12065.pdf] are true. Example (Jhyp,paraHyp) = verifyThmHypLocus(QQ); /// doc /// Key computeParametrizationOfHypLocus (computeParametrizationOfHypLocus,Ring) Headline print commands which compute the parametrization Usage Jhyp = computeParametrizationOfHypLocus(kk) Inputs kk: Ring the ground field, mainly QQ Outputs Jhyp: Ideal defining the hyperelliptic locus Description Text The hyperelliptic locus $V_{hyp}$ in $Q \subset \mathbb{P}^{11}$ is is birational to a product of a Hirzebruch surface $F$ with 3 copies of $\mathbb{P}^{1}$. This function prints the commands which compute the parametrization following the recipy outlined in Section 2.1 of [F.-O. Schreyer and I. Stenger, {\em Marked Godeaux surfaces with special bicanonical fibers}. https://arxiv.org/pdf/2201.12065.pdf]. Example Jhyp = computeParametrizationOfHypLocus(QQ); /// doc /// Key randomLineTorsZ3 (randomLineTorsZ3,Matrix,Matrix) Headline compute a line for a numerical Godeaux surface with a cyclic torsion group of order 3 Usage (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs randLine: Matrix a 12x2-matrix spanning a line P11 leading to a Z/3Z-Godeaux surface subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/3$ has a special reducible bicanonical curve of the form $D_1+D_2$, where $D_i \in |K_x + t_i|$ with a torsion element $t_i$ of order $i$. To construct a surface with such a curve, the associated line $l$ must intersect a particular loci in $Q$ in exactly one point. /// doc /// Key lineConditionsTorsZ5 (lineConditionsTorsZ5,Ideal,Ideal,Matrix,Matrix) Headline compute a list of possible loci for Z/5Z-Godeaux surfaces Usage lineConditionsTorsZ5(comp0,comp1,d1',relPfaf) Inputs comp0: Ideal an ideal defining a P3 in the P11 of a-variables at which the rank of the e-matrix drops comp1: Ideal a second (different) ideal defining a P3 in the P11 of a-variables at which the rank of the e-matrix drops d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs finalComps: List a list of pairs of ideals Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/5$ has two special reducible bicanonical curves of the form $D_i+D_{5-i}$, where $D_i \in |K_x + t_i|$ with a torsion element $t_i$ of order $i =1,\ldots,4$. The rank of the $e$-matrix drops from three to two at the corresponding two (different) points in $\mathbb{P}^1$. Thus, the associated line in $Q$ must intersect the loci given by the 3x3-minors of the $e$-matrix in two different points. We choose two different $\mathbb{P}^3s$ in this loci and evaluate the condition that a line through two general points is completely contained in the variety $Q$. The resulting zero loci decomposes in a union of several surfaces of type $\mathbb{P}^{1} \times \ \mathbb{P}^{1} \subset \ \mathbb{P}^{3} \times \ \mathbb{P}^{3}$ and $\mathbb{P}^{2} \times \ \mathbb{P}^{0} \ \subset \ \mathbb{P}^{3} \times \ \mathbb{P}^{3}$ or $\mathbb{P}^{0} \times \ \mathbb{P}^{2} \ \subset \ \mathbb{P}^{3} \times \ \mathbb{P}^{3}$. The last two types do not lead to numerical Godeaux surfaces. Picking a point in one of the $\mathbb{P}^{1} \times \mathbb{P}^{1}$- components gives a line which generically leads to a Godeaux surface with torsion group $\mathbb{Z}/5$. /// doc /// Key lineConditionsTorsZ4 (lineConditionsTorsZ4,Ideal,Ideal,Matrix,Matrix) Headline compute a list of possible loci for Z/4Z-Godeaux surfaces Usage lineConditionsTorsZ4(comp0,comp1,d1',relPfaf) Inputs comp0: Ideal an ideal defining a P3 in the P11 of a-variables at which the rank of the e-matrix drops comp1: Ideal an ideal defining a P5 in the P11 necessary to get a double fiber in |2K| d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs finalComps: List a list of pairs of ideals Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/4$ has two special bicanonical curves: one reducible curve of the form $D_1+D_3$, where $D_i \in |K_X + t_i|$ with a torsion element $t_i$, and a double curve $2D_2$, where $D_2 \in |K_X + t_2|$. To construct surfaces with such curves, the chosen line in $Q$ must intersect two different loci in $Q$. We choose two different components of these loci and evaluate the condition that a line through two general points is completely contained in the variety $Q$. The result is a list of pairs of ideals such that each line through two general points is completely contained in $Q$ and intersect the corresponding loci in a point. /// doc /// Key lineConditionsTorsZ2 (lineConditionsTorsZ2,Matrix,Matrix) Headline compute a list of possible loci for Z/2Z-Godeaux surfaces Usage lineConditionsTorsZ2(d1',relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs compDoubFib: Ideal defining the loci for Z/2Z-Godeaux surfaces Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/2$ has a double bicanonical curve $2D_2$, where $D_2 \in |K_X + t_2|$ with a torsion element $t_2$ of order 2. To construct surfaces with such a curve, the chosen line in $Q$ must intersect a particular loci in $Q$ which is determined in this procedure. /// doc /// Key randomSection (randomSection,Matrix,Matrix,Matrix) Headline choose a point in the solution space defined by the linear relations Usage (randPoint,subsPoint) =randomSection(solutionMat,restVars,subsLine) Inputs solutionMat: Matrix the (solution) matrix representing the linear relations from procedure solutionMatrix restVars: Matrix a row matrix containing the unknown c- and o-variables subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the procedure randomLine Outputs randPoint: Matrix a random point in a kk^n isomorphic to the solution space subsPoint: Matrix row matrix containing the variables of the normalized set-up with all unknown variables replaced by a possible assignment Description Text After choosing a line in the Pfaffian variety $Q \subset \mathbb{P}^{11}$ and substituting the $a$-variables by the corresponding assignments, we obtain a solution matrix over a $\mathbb{P}^{1}$. Computing (a basis) of all syzygies in the designated degree, we obtain the solution space for the $c$- and $o$-variables. The solution space is a finite dimensional $k$-vector space, and hence isomorphic to a $k^n$. The procedure chooses then a random point in this $k^n$, computes afterwards the corresponding solution for the $c$- and $o$-variables and updates finally the row matrix subsLine with the chosen solutions. After this step, all unknown $a$-, $c$- and $o$-variables have been replaced by a possible assignment and depend only on the variables $x_0,x_1$ and $y_0,\ldots,y_3$. For the configuration "1111", we obtain in the general case (i.e. torsion-free, no hyperelliptic fibers) a 4-dimensional solution space. Example kk = ZZ/29; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf); point1 = randomPoint(ideal relPfaf,Sa); (randLine,subsLine) = randomLine(point1,relPfaf,Sa); (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); randPoint SeeAlso randomLine solutionMatrix /// doc /// Key singleSolutionMatricesLine (singleSolutionMatricesLine,Matrix,Matrix) Headline evaluate the single solution matrices at a line Usage (solMatLine,l1Line,l2Line) = singleSolutionMatricesLine(relLin,subsLine) Inputs relLine: Matrix row matrix containing all relations which are linear in the c- and o-variables subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line Outputs solMatLine: Matrix l1Line: Matrix l2Line: Matrix Description Text The procedure computes first the solution matrix and its linear submatrices and substitutes then the $a$-variables with the assignments from the chosen line. The resulting matrices are then defined over a $\mathbb{P}^1$. Example kk = ZZ/197; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf); (maLine,l1Line,l2Line) = singleSolutionMatricesLine(relLin,subsLine); (betti maLine,betti l1Line,betti l2Line) SeeAlso solutionMatrix singleSolutionMatricesOverP11 /// doc /// Key standardResolution (standardResolution,Matrix,Matrix,Matrix,String) Headline compute a standard resolution of an S-module R obtained from the given input Usage F = standardResolution(d1',d2,subsPoint,s) Inputs d1': Matrix the first syzygy matrix without the first row in normal form d2: Matrix the second syzygy matrix in normal form subsPoint: Matrix row matrix containing the variables of the normalized set-up with all unknown a-, c- and o-variables being assigned s: String the configuration string of the 4 base points Outputs F: ChainComplex a standard resolution of the S-module R obtained from the given input Description Text We first substitute the unknown entries of the matrices $d_1'$ and $d_2$ by the corresponding entries of the matrix subsPoint. These matrices are defined over the polynomial ring $S = k[x_0,x_1,y_0,\ldots,y_3]$. From $d_2$ we compute the missing first row of the first matrix, and hence the complete syzygy matrix $d_1$. The $S$-module $R := coker d_1$ has then the prescribed Betti numbers. As a final step, we check that the syzygy matrices are modulo $x_0,x_1$ of the form fixed in the procedure complexModuloRegularSequence and that the second syzygy matrix is skew-symmetric. Such a minimal free resolution is called a standard resolution. Example kk = ZZ/23; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); Sa = getP11(relPfaf); point1 = randomPoint(ideal relPfaf,Sa); (randLine,subsLine) = randomLine(point1,relPfaf,Sa); (solutionMat,restVars) = solutionMatrix(relLin); (randPoint,subsPoint) = randomSection(solutionMat,restVars,subsLine); F = standardResolution(d1',d2,subsPoint,s); betti F F.dd_2 + transpose F.dd_2 == 0 F.dd_1 - transpose F.dd_3 == 0 SeeAlso randomSection complexModuloRegularSequence /// doc /// Key randomStandardResolution (randomStandardResolution,Ring) (randomStandardResolution,Ring,String) (randomStandardResolution,Ring,String,ZZ) (randomStandardResolution,Ring,String,ZZ,ZZ) Headline compute a random standard resolution of an S-module R Usage F = randomStandardResolution(kk) F = randomStandardResolution(kk,s) F = randomStandardResolution(kk,s,n) F = randomStandardResolution(kk,s,n,h) Inputs kk: Ring the base field over which the computations are performed s: String the configuration string of the 4 base points which is either "1111", "211", "22" or "4" n: ZZ an integer between 1 and 5 describing the order of the torsion group of the surface determined by the standard resolution h: ZZ an integer between 0 and 2 describing the number of hyperelliptic fibers of the bicanonical fibration for torsion-free surfaces Outputs F: ChainComplex a standard resolution of an S-module R obtained from the given input Description Text Using our construction method, this procedure computes a standard resolution of an $S = k[x_0,x_1,y_0,\ldots,y_3]$-module $R$ $$ 0 \leftarrow R \leftarrow F_0 \leftarrow F_1 \leftarrow F_1^*(-17) \leftarrow F_0^*(-17) \leftarrow 0 $$ with a skew-symmetric map $d_2: F_1^*(-17) \rightarrow F_1 $. The main steps of the construction are the choice of a (random) line in complete intersection $Q \subset \mathbb{P}^{11}$ and a (random) point in a linear solution space (depending on the chosen line). The procedure computes only modules $R$ which satisfy the ring condition. Such an module $R$ leads to a numerical Godeaux surface if the surface $Proj(R)$ has only canonical singularities. However, this condition is not checked. If an additional string $s$ is given, the procedure computes standard resolutions which lead to surfaces with the desired configuration of base points of the bicanonical system. If no string $s$ is indicated, the procedure uses the default setting "1111". Moreover, an additional number $n$ indicates the order of the torsion group of the resulting surface. Thus, $n$ must be an integer between 1 and 5. Note that any numerical Godeaux surface with a torsion group of an odd order cannot have double points. Hence, if the configuration of base points and the order of the torsion group are not compatible, an error message is printed. Example kk = ZZ/101; s = "1111"; F = randomStandardResolution(kk,s,5); betti F Caveat This procedure works mainly over finite fields. Over the rational numbers the procedure may not terminate. SeeAlso standardResolution randomGodeauxSurface /// doc /// Key randomGodeauxSurface (randomGodeauxSurface,Ring) (randomGodeauxSurface,Ring,String) (randomGodeauxSurface,Ring,String,ZZ) (randomGodeauxSurface,Ring,String,ZZ,ZZ) Headline compute a birational model of a numerical Godeaux surface Usage randomGodeauxSurface(kk) randomGodeauxSurface(kk,s) randomGodeauxSurface(kk,s,n) randomGodeauxSurface(kk,s,n,h) Inputs kk: Ring the base field over which the computations are performed s: String the configuration string of the 4 base points which is either "1111", "211", "22" or "4" n: ZZ an integer between 1 and 5 describing the order of the torsion group of the surface determined by the standard resolution h: ZZ an integer between 0 and 2 indicating the number of hyperelliptic fibers for torsion-free surface (n=0) Outputs I: Ideal defining a birational model of a Godeaux surface in a weighted projective space P(2,2,3,3,3,3) Description Text Using the procedure randomStandardResolution we compute first a (standard resolution of an) $S$-module $R$ satisfying the ring condition. Such an module $R$ leads to a numerical Godeaux surface if the surface $Proj(R)$ has only canonical singularities. Verifying this is computationally involved and thus this condition is not checked. A sufficient and easier criterion to check is whether the obtained surface $Y$ in $\mathbb{P}(2^2,3^4)$ is has only canonical singularities or is smooth. If an additional string $s$ is given, the procedure computes a surface with the desired configuration of base points of the bicanonical system. If no string $s$ is indicated, the procedure uses the default setting "1111". Moreover, an additional number $n$ indicates the order of the torsion group of the resulting surface. Thus, $n$ must be an integer between 1 and 5. Note that any numerical Godeaux surface with a torsion group of an odd order cannot have double points. Hence, if the configuration of base points and the order of the torsion group are not compatible, an error message is printed. For the integers $n=2,\ldots,5$ we have a unirational parametrization of the space of all possible lines. If the option preComputedParametrization is true, we use this parametrization to choose a line instead of computing one randomly. The default value option is preComputedParametrization => true. In case of Certify=>true we check whether the surface $Y$ is smooth ( and hence $Proj(R)$). The message "singular surface" means that we have to repeat the construction to get a smooth surface. We do this at most k times if Attempts=>k. If we fail every time we return null. The default values of the options are Certify=>false and Attempts=>1. As an example we consider first a torsion-free Godeaux surface: Example kk = ZZ/101; s = "1111"; I = randomGodeauxSurface(kk,s,1); S = ring I; base2K = trim(I+ideal(S_0,S_1)); netList (listOfBasePoints = decompose base2K) Text The birational model in $\mathbb{P}^3$ is a hypersurface of degree 9: Example H9 = tricanonicalModelInP3(I); betti H9 Text The following is an example of a Godeaux surface with torsion group $\mathbb{Z}/4$ over the rational numbers. Example t = "22" I = randomGodeauxSurface(QQ,t,4); S = ring I; base2K = trim(I+ideal(S_0,S_1)); netList (listOfBasePoints = decompose base2K) Text The birational model in $\mathbb{P}^3$ is a hypersurface of degree 8: Example H8 = tricanonicalModelInP3(I); betti H8 Caveat In the cases $n=2,\ldots,5$, this procedure works over any finite field (of characteristic $\geq 5$) and over the rational numbers, as we have a unirational description of the space of possible lines in these cases. For torsion-free numerical Godeaux surfaces, such a unirational parametrization is so far not known to us and the procedure works only over finite fields. SeeAlso standardResolution randomStandardResolution /// doc /// Key Certify [randomGodeauxSurface, Certify] Headline optional argument in randomGodeauxSurface Usage Y=randomGodeauxSurface(kk,Certify=>false) Y=randomGodeauxSurface(kk,s,Certify=>false) Y=randomGodeauxSurface(kk,s,n,Certify=>false) Description Text If the option {\tt Certify} is set to {\tt true}, then we check whether $Y$ is the ideal of a smooth surface. The default value for all functions is {\tt false}. /// doc /// Key [randomGodeauxSurface, Height] [randomLineTorsZ2, Height] [randomLineTorsZ3, Height] [randomLineTorsZ4, Height] [randomLineTorsZ5, Height] [randomStandardResolution, Height] Headline optional argument for the random computations Usage Y=randomGodeauxSurface(kk,Height=>19) (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf,Height=>19) (randLine,subsLine) = randomLineTorsZ3(d1',relPfaf,Height=>19) (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf,Height=>19) (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf,Height=>19) F = randomStandardResolution(kk,s,Height=>19) Description Text The option determines the height of the coefficients of the randomly chosen points. /// doc /// Key Attempts [randomGodeauxSurface, Attempts] Headline optional argument in randomGodeauxSurface Usage Y=randomGodeauxSurface(kk,Attempts=>k) Y=randomGodeauxSurface(kk,s,Attempts=>k) Y=randomGodeauxSurface(kk,s,n,Attempts=>k) Description Text If Attempts => k, then we try k times to get a smooth surface. The default value is Attempts=>1. /// doc /// Key PrecomputedParametrization [randomGodeauxSurface, PrecomputedParametrization] [randomStandardResolution, PrecomputedParametrization] [randomLineTorsZ2, PrecomputedParametrization] [randomLineTorsZ3, PrecomputedParametrization] [randomLineTorsZ4, PrecomputedParametrization] [randomLineTorsZ5, PrecomputedParametrization] Headline optional argument for using a precomputed unirational parametrization Description Text If $n \neq 1$, then we can compute the line contained in the complete intersection of quadrics either with our random construction method or using a precomputed unirational parametrization. The default value for all cases except for the torsion-free surfaces is {\tt true}. /// doc /// Key bihomogeneousModel (bihomogeneousModel,Ideal) Headline compute a birational model of a numerical Godeaux surface in P1xP3 Usage bihomogeneousModel(I) Inputs I: Ideal defining a numerical Godeaux surface Y in a weighted projective space P(2,2,3,3,3,3) Outputs J: Ideal defining a bihomogeneous surface in P1xP3 birational to Y Description Text Given a numerical Godeaux surface $X$, the bi- and tricanonical map induce a birational map to a $\mathbb{P}^1 \times \mathbb{P}^3$. The procedure computes the birational image of the surface $Y \subset \mathbb{P}(2^2,3^4)$ (and hence of the surface $X$) under this map. The image of the tricanonical map in $\mathbb{P}^3$ is a hypersurface of degree $(3K_X)^2 -$ number of base points of $3K_X$. Hence, for a surface with a torsion group of order 5, the ideal $J$ must contain an element of bidegree $(0,7)$, for order 3 and 4 an element of bidegree $(0,8)$ and for order 1 and 2 an element of bidegree $(0,9)$. Example kk = ZZ/nextPrime(32001); s = "1111"; I = randomGodeauxSurface(kk,s,5); J = bihomogeneousModel(I); tally degrees J kk = ZZ/nextPrime(32001); t = "22"; I = randomGodeauxSurface(kk,t,4); J = bihomogeneousModel(I); tally degrees J SeeAlso randomGodeauxSurface tricanonicalModelInP3 /// doc /// Key tricanonicalModelInP3 (tricanonicalModelInP3,Ideal) Headline computes the tricanonical model of a numerical Godeaux surface in P3 Usage tricanonicalModelInP3(I) Inputs I: Ideal defining a num. Godeaux surface Y in a weighted projective space P(2,2,3,3,3,3) Outputs J: Ideal defining the image of the tricanonical map to a P3 Description Text Given a numerical Godeaux surface $X$, the tricanonical map induces a birational map to a $\mathbb{P}^3$. The procedure computes the birational image of the surface $Y \subset \mathbb{P}(2^2,3^4)$ (and hence of the surface $X$) under this map. The image of the tricanonical map in $\mathbb{P}^3$ is a hypersurface of degree $(3K_X)^2 -$ number of base points of $3K_X$. Hence, for a surface with a torsion group of order 5 the hypersurface has degree 7, for order 3 and 4 the degree is 8 and for order 1 and 2 the degree is 9. Example kk = ZZ/nextPrime(32001); s = "1111"; I = randomGodeauxSurface(kk,s,1,1); J = tricanonicalModelInP3(I); tally degrees J I = randomGodeauxSurface(kk,s,5); J = tricanonicalModelInP3(I); tally degrees J t = "22"; I = randomGodeauxSurface(kk,t,4); J = tricanonicalModelInP3(I); tally degrees J SeeAlso randomGodeauxSurface /// doc /// Key canonicalRing (canonicalRing,Matrix) Headline computes the canonical ring of a numerical Godeaux surface Usage canonicalRing(d1) Inputs d1: Matrix the first syzygy matrix of an $S$-module R satisfying the ring condition Outputs IX: Ideal in a graded polynomial ring Sbig such that Sbig/IX is the canonical ring of a surface X Description Text We use the ring structure of $R$ to compute the remaining relations of $R$ as an $k$-algebra. This is done using the techniques introduced in [I. Stenger, {\em A structure result for Gorenstein algebras of odd codimension.} J. Algebra, 589:173–187, 2022]. The ideal $I_X$ defines the canonical model of a numerical Godeaux surface $X$ embedded in the weighted projective space $\mathbb{P}(2^2,3^4,4^4,5^3)$. The ring $R = S_{big}/I_X$ is the canonical ring of $X$. Caveat Up to now, this procedure involves several smaller Hom-computations which are very time consuming. /// doc /// Key randomLineTorsZ5 (randomLineTorsZ5,Matrix,Matrix) Headline compute a line for a numerical Godeaux surface with a cyclic torsion group of order 5 Usage randomLineTorsZ5(d1',relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs randLine: Matrix a 12x2-matrix spanning a line in P11 for a Z/5Z-Godeaux surface subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/5$ has two special reducible curves in the bicanonical system. These curves are for the form $D_1+D_4$ and $D_2+D_3$, where $D_i \in |K_X + t_i|$ for a torsion element $t_i$ of order $i$. To construct a surface with such curves, the associated line $l$ must intersect each of two different loci in $Q$ in exactly one point. These loci are computed in the procedure lineConditionsTorsZ5. Example kk = QQ; s = "1111"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ5(d1',relPfaf); transpose randLine SeeAlso lineConditionsTorsZ5 /// doc /// Key randomLineTorsZ4 (randomLineTorsZ4,Matrix,Matrix) Headline compute a line for a numerical Godeaux surface with a cyclic torsion group of order 4 Usage randomLineTorsZ4(d1',relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs randLine: Matrix a 12x2-matrix spanning a line in P11 for a Z/4Z-Godeaux surface subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/4$ has two special bicanonical curves: one reducible curve of the form $D_1+D_3$, where $D_i \in |K_X + t_i|$ with a torsion element $t_i$, and a double curve $2D_2$, where $D_2 \in |K_X + t_2|$. To construct a surface with such curves, the associated line $l$ must intersect each of two different loci in $Q$ in exactly one point. These loci are computed in the procedure lineConditionsTorsZ4. Example kk = QQ; s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ4(d1',relPfaf); transpose randLine SeeAlso lineConditionsTorsZ4 /// doc /// Key randomLineTorsZ2 (randomLineTorsZ2,Matrix,Matrix) Headline compute a line for a numerical Godeaux surface with a cyclic torsion group of order 2 Usage randomLineTorsZ2(d1',relPfaf) Inputs d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Outputs randLine: Matrix a 12x2-matrix spanning a line in P11 for a Z/2Z-Godeaux surface subsLine: Matrix row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assignments from the chosen line Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in $\mathbb{P}^{11}$. A numerical Godeaux surface $X$ with torsion group $\mathbb{Z}/2$ has a special bicanonical curve of the form $2D_2$, where $D_2 \in |K_X + t_2|$ with a torsion element $t_2$ of order 2. To construct a surface with such a curve, the associated line $l$ must intersect a particular loci in $Q$ in exactly one point. Example kk = QQ; s = "22"; (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); (randLine,subsLine) = randomLineTorsZ2(d1',relPfaf); transpose randLine /// doc /// Key randomLineTors0 (randomLineTors0,Matrix,Matrix) (randomLineTors0,Matrix,Matrix,List,ZZ) Headline compute a line for a torsion-free numerical Godeaux surface Usage randomLineTors0(d1',relPfaf) randomLineTors0(d1',relPfaf,Ms,h); Inputs d1': Matrix the first syzygy matrix in normal form with the first row omitted relPfaf: Matrix a row matrix containing the quadratic (Pfaffian) relations Ms: List containing the four skew-symmetric matrices describing the Pfaffian relations h: ZZ the number of hyperelliptic fibers in the bicanonical fibration Outputs randLine: Matrix a 12x2-matrix spanning a line in P11 for a torsion-free Godeaux surface subsLine: Matrix a row matrix containing the variables of the normalized set-up with the a-variables being replaced by the assginments from the chosen line Description Text The order of the torsion group does only depend on the choice of the line in the complete intersection of the quadratic relations $Q$ in the $\mathbb{P}^{11}$ of $a$-variables. The associated line to a numerical Godeaux surface with a trivial torsion group and no hyperelliptic bicanonical fibers does not intersect any of the special loci in $Q$. We call such a line a general line in $Q$. To obtain surfaces with one respectively two hyperelliptic fibers, the corresponding line must intersect the hyperelliptic locus in $Q$ in one respectively two points. The number of hyperelliptic fibers must be between 0 and 2. /// doc /// Key verifyAssertions (verifyAssertions,Matrix) Headline verify the ring condition Usage verifyAssertions(d1) Inputs d1: Matrix the first syzygy matrix Outputs : Boolean whether the module R = coker d1 satisfies the ring condition or not Description Text Checks whether the $S$-module $R = coker d_1$ satisfies the ring condition and other technical conditions which are necessary for $R$ defining the canonical ring of a numerical Godeaux surface. Example kk = ZZ/nextPrime(32001); s = "1111"; F = randomStandardResolution(kk,s,5); d1 = F.dd_1; verifyAssertions(d1) SeeAlso randomStandardResolution standardResolution /// doc /// Key isSmoothModelInP5 (isSmoothModelInP5,Ideal) Headline check whether the model in the weighted P5 is smooth or not Usage isSmoothModelInP5(I) Inputs I: Ideal defining a variety in the weighted projective space P(2,2,3,3,3,3) Outputs : Boolean whether the variety is smooth or not Description Text The procedure computes first the quasi-singular locus of the variety in weighted projective space. Afterwards the image of the variety under the 6-uple embedding of $\mathbb{P}(2,2,3,3,3,3)$ into $\mathbb{P}^{13}$ is determined and the points in the quasi-smooth locus are checked for smoothness. Usually, the ideal $I$ defines a surface in the weighted projective obtained by our construction method. Caveat The computation of the quasi-smooth locus of the surfaces obtained by our construction is usually very time consuming. SeeAlso randomGodeauxSurface modelInP13 /// doc /// Key isSmoothBihomModel (isSmoothBihomModel,Ideal) Headline check whether the model in P1xP3 is smooth or not Usage isSmoothBihomModel(J) Inputs J: Ideal defining a variety in the product of projective spaces P1xP3 Outputs : Boolean whether the variety is smooth or not Description Text The procedure checks whether the variety in $\mathbb{P}^{1} \times \mathbb{P}^3$ is smooth or not. Usually, the ideal $J$ defines the image of a Godeaux surface under the product of the bi- and tricanonical map. SeeAlso bihomogeneousModel /// doc /// Key modelInP13 (modelInP13,Ideal) Headline compute the image of a variety in P(2,2,3,3,3,3) under a embedding to P13 Usage (I6,phi6) = modelInP13(I) Inputs I: Ideal in the polynomial ring S of P(2,2,3,3,3,3) Outputs I6: Ideal defining the image of V(I) under a embedding of P(2,2,3,3,3,3) into P13 phi6: RingMap from the polynomial ring of P13 to the coordinate ring of I Description Text The weighted projective space $\mathbb{P} = \mathbb{P}(2,2,3,3,3,3)$ can be embedded into a $\mathbb{P}^{13}$ using the very ample line bundle ${\cal O}_{\mathbb{P}}(6)$. This procedure computes the image of a projective variety in $\mathbb{P}(2,2,3,3,3,3)$ under this embedding and the corresponding map on coordinate rings. We can examine the image variety in a standard projective space to decide whether the original variety is smooth or not. /// doc /// Key surfaceInWeightedP5 (surfaceInWeightedP5,ChainComplex) (surfaceInWeightedP5,Matrix) Headline compute the surface in P(2,2,3,3,3,3) Usage I = surfaceInWeightedP5(F) Inputs F: ChainComplex a standard resolution of an S-module R d1: Matrix the first syzygy matrix of the chain complex F Outputs I: Ideal defining the support of R as an S-module Description Text Given a standard resolution $F$ of an $S$-module $R$ or its first syzygy matrix $d_1$, the procedure computes the annihilator of $R = coker d_1$ as an $S$-module which is a surface in the weighted projective space $\mathbb{P}(2,2,3,3,3,3)$. If $R$ is the canonical ring of a numerical Godeaux surface $X$, then $I$ defines the image of canonical model under the projection to this weighted projective space. Example kk = QQ; s = "1111"; F = randomStandardResolution(kk,s,5); I = surfaceInWeightedP5(F); SeeAlso randomStandardResolution standardResolution /// doc /// Key tangentSpacePoint (tangentSpacePoint,Ideal,Ideal,Matrix) (tangentSpacePoint,Ideal,Matrix) Headline compute the complete intersection of quadrics in the tangent space at a given point Usage (Z,phi) = tangentSpacePoint(point1,J,relPfaf) Inputs point1: Ideal defining a point in the complete intersection of the four quadrics Q J: Ideal relPfaf: Matrix a row matrix containing the four quadratic (Pfaffian) relations Outputs Z: Ideal in the tangent space of Q at the given point phi: RingMap from the coordinate ring of the P^11 to the coordinate ring of the tangent space Description Text The tangent space of the complete intersection $Q$ at a point $p$ is a linear space isomorphic to a $\mathbb{P}^k$. We compute the projection of the complete intersection $Q$ into this space and the polynomial map on coordinate rings corresponding to this projection. If a second ideal $J$ is given, we compute the intersection of $Q$ with the corresponding variety in $T_p(Q)$. /// doc /// Key calculationOfTheUnirationalParametrizationOfTorsZ5Lines (calculationOfTheUnirationalParametrizationOfTorsZ5Lines,String) Headline describe the unirational parametrization of the locus of Z/5-lines Usage calculationOfTheUnirationalParametrizationOfTorsZ5Lines(bf) Inputs bf: String representing the base field Outputs t: String Description Text Given the rational numbers or any finite field represented as a string, the procedure displays a string of M2-operations which calculate a unirational parametrization of the locus of lines in $Q$ leading generically to numerical Godeaux surfaces with torsion group $\mathbb{Z}/5$. Example calculationOfTheUnirationalParametrizationOfTorsZ5Lines("QQ") /// end restart uninstallPackage "NumericalGodeaux" installPackage "NumericalGodeaux" viewHelp "NumericalGodeaux"