-- S. A. Papadakis and V. Petrotou, Macaulay2 code related to the paper [APP], July 2024 REFERENCES: [APP] Adiprasito, Papadakis and Petrotou, The volume intrinsic to a commutative graded algebra, arXiv_v1 INDEX: Subpart 1, keycode: 1901, Related to [APP, p. 6, Example 2.14] Subpart 2, keycode: 2689, Related to [APP, p. 6, Example 2.15] Subpart 3, keycode: 3572, Related to [APP, p. 6, Example 2.16] Subpart 4, keycode: 4026, Related to [APP, p. 6, Example 2.17] -- Subpart 1, keycode: 1901, Related to [APP, p. 6, Example 2.14] -- REMARK: Example with Iup not Cohen-Macaulay and having embedded primes -- REMARK: The code was tested on Macaulay2 Version 1.24 on the online platform with link -- https://www.unimelb-macaulay2.cloud.edu.au restart R = QQ [x_1,x_2] I = ideal (x_1^5, x_1*x_2) saturate I -- answer: ideal (x_1 ) Ilins = ideal apply (1.. dim (R^1/I), i -> random(1,R)) ; apply (0..10, i -> hilbertFunction (i, R^1/ (I+Ilins)) ) -- answer: (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) dim (R^1/I) -- answer: 1 list102 = flatten toList apply (1..1, i-> toList apply (1..2, j -> (i,j) )) -- answer: {(1, 1), (1, 2)} Rup = QQ [x_1..x_2, apply (list102, p -> a_p ) ] Iup = sub(I, Rup) + ideal apply (1..1, i -> sum toList apply (1..2, j -> a_(i,j)*x_j )) -- answer: ideal( x_1^5, x_1*x_2, x_1*a_(1,1)+x_2*a_(1,2) ) dim (Rup^1/Iup) == dim (Rup^1) - dim (R^1) -- answer: true Hence dim (Rup^1/Iup) is equal to the number of a_{i,j} which is 2 dim (Rup^1/Iup) == 2 -- answer: true ( isHomogeneous Iup, codim Iup , betti res Iup ) -- REMARK: From the answer we get that Iup is not Cohen-Macaulay Nup = Iup : ideal (x_1..x_2) ; mingens Nup -- answer: matrix {{ x_2*a_(1,2), x_1*a_(1,1), x_1*x_2, x_1^4}} toString mingens (Nup/Iup) -- answer: matrix {{ -x_2*a_(1,2), x_1^4 }} ideal mingens ideal ( gens (Nup) % gens (Iup) ) -- answer: ideal( x_2*a_(1,2), x_1^4 ) ass Iup -- answer: {ideal(a_(1,2),x_1), ideal(x_2,x_1), ideal(a_(1,1),x_2,x_1)} -- -- REMARK: Hence Iup has embedded primes ass (Nup) -- answer: {ideal(a_(1,2),x_1), ideal(x_2,x_1), ideal(a_(1,1),x_2,x_1)} -- -- REMARK: Hence Nup has embedded primes toString ass (Nup/Iup) -- answer: { ideal(x_2,x_1), ideal( a_(1,1), x_2, x_1 ) } -- -- REMARK: Hence Nup/Iup has embedded primes subRup = QQ [x_1..x_2 ] randomSubForaij = toList apply ( list102, p -> a_p => random(0, Rup)) apply (0..10, i -> hilbertFunction ( i, subRup / sub ( sub ( Iup , randomSubForaij), subRup))) -- answer: (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply (0..10, i -> hilbertFunction ( i, sub ( sub ( Nup , randomSubForaij ), subRup) / sub ( sub ( Iup , randomSubForaij), subRup))) -- answer: (0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) erF = frac ( QQ [ apply (list102, p -> a_p ) ] ) Rdown = erF [ x_1..x_2 ] Idown = sub(Iup, Rdown) dim (Rdown^1 / Idown) == 0 -- answer: true apply ( 0..10, i -> hilbertFunction ( i, (Rdown^1)/Idown )) -- answer (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply ( 0..10, i -> hilbertFunction ( i, (Idown : ideal (x_1,x_2))/Idown )) -- answer (0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply ( 0..10, i -> hilbertFunction ( i, (Rdown^1)/ (Idown + ideal (x_1*a_(1,2)) ))) -- answer (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -- Subpart 2, keycode: 2689, Related to [APP, p. 6, Example 2.15] -- REMARK: Example with Iup not Cohen-Macaulay and having embedded primes -- REMARK: The code was tested on Macaulay2 Version 1.24 on the online platform with link -- https://www.unimelb-macaulay2.cloud.edu.au restart R = QQ [x_1,x_2,x_3] I = ideal (x_1^5,x_1*x_2,x_1*x_3) saturate I -- answer: ideal (x_1 ) Ilins = ideal apply (1.. dim (R^1/I), i -> random(1,R)) ; apply (0..10, i -> hilbertFunction (i, R^1/ (I+Ilins)) ) -- answer: (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) dim (R^1/I) -- answer: 2 list102 = flatten toList apply (1..2, i-> toList apply (1..3, j -> (i,j) )) Rup = QQ [x_1..x_3, apply (list102, p -> a_p ) ] Iup = sub(I, Rup) + ideal apply (1..2, i -> sum toList apply (1..3, j -> a_(i,j)*x_j )) dim (Rup^1/Iup) == dim (Rup^1) - dim (R^1) -- answer: true Hence dim (Rup^1/Iup) is equal to the number of a_{i,j} which is 6 dim (Rup^1/Iup) == 6 -- answer: true ( isHomogeneous Iup, codim Iup , betti res Iup ) -- REMARK: From the answer we get that Iup ius not Cohen-Macaulay Nup = Iup : ideal (x_1..x_3) ; mingens Nup -- answer: matrix { { x_2*a_(2,2)+x_3*a_(2,3), x_1*a_(2,1), x_2*a_(1,2)+x_3*a_(1,3), -- x_1*a_(1,1), x_1*x_3, x_1*x_2, x_1^4} } toString mingens (Nup/Iup) -- answer: matrix {{ -x_2*a_(2,2)-x_3*a_(2,3), -x_2*a_(1,2)-x_3*a_(1,3), x_1^4}} ideal mingens ideal ( gens (Nup) % gens (Iup) ) -- answer: ideal( x_2*a_(2,2)+x_3*a_(2,3), x_2*a_(1,2)+x_3*a_(1,3), x_1^4) vb1= -x_2*a_(1,2)-x_3*a_(1,3) vb2= -x_2*a_(2,2)-x_3*a_(2,3) ass Iup -- answer: { ideal(x_1,a_(1,3)*a_(2,2)-a_(1,2)*a_(2,3),x_2*a_(2,2)+x_3*a_(2,3),x_2*a_(1,2)+x_3*a_(1,3)), -- ideal(x_3,x_2,x_1), ideal(a_(2,1),a_(1,1),x_3,x_2,x_1)} -- -- REMARK: Hence Iup has embedded primes toString ass (Rup^1/Iup) -- answer: {ideal(x_3,x_2,x_1), ideal(x_1,a_(1,3)*a_(2,2)-a_(1,2)*a_(2,3), -- x_2*a_(2,2)+x_3*a_(2,3),x_2*a_(1,2)+x_3*a_(1,3)), ideal(a_(2,1),a_(1,1),x_3,x_2,x_1)} ass (Nup) -- answer: {ideal(x_1,a_(1,3)*a_(2,2)-a_(1,2)*a_(2,3),x_2*a_(2,2)+x_3*a_(2,3),x_2*a_(1,2)+x_3*a_(1,3)), -- ideal(x_3,x_2,x_1), ideal(a_(2,1),a_(1,1),x_3,x_2,x_1)} -- -- REMARK: Hence Nup has embedded primes toString ass (Rup^1/Nup) -- answer: {ideal(x_3,x_2,x_1), ideal(x_1,a_(1,3)*a_(2,2)-a_(1,2)*a_(2,3), -- x_2*a_(2,2)+x_3*a_(2,3),x_2*a_(1,2)+x_3*a_(1,3)), ideal(a_(2,1),a_(1,1),x_3,x_2,x_1)} toString ass (Nup/Iup) -- answer: { ideal(x_3,x_2,x_1), ideal(a_(2,1),a_(1,1),x_3,x_2,x_1)} -- -- REMARK: Hence Nup/Iup has embedded primes Iup : ideal ( -x_2*a_(2,2)-x_3*a_(2,3) ) -- answer: ideal(x_3,x_2,x_1) Iup : ideal ( -x_2*a_(1,2)-x_3*a_(1,3) ) -- answer: ideal(x_3,x_2,x_1) mingens ( (Iup : ideal (a_(1,1))) / Iup ) -- answer: x_1^2 mingens ( (Iup : ideal (a_(2,1))) / Iup ) -- answer: x_1^2 mingens ( (Iup : ideal (a_(1,2))) / Iup ) -- answer: 0 tg1 = a_(1,3)*a_(2,1)*a_(2,2)-a_(1,2)*a_(2,1)*a_(2,3) tg2 = a_(1,1)*a_(1,3)*a_(2,2)-a_(1,1)*a_(1,2)*a_(2,3) isSubset ( ideal ( tg1*vb1 - tg2*vb2), Iup ) -- answer: true isSubset ( ideal (a_(2,1)*vb1 - a_(1,1)*vb2), Iup ) -- answer: true subRup = QQ [x_1..x_3 ] randomSubForaij = toList apply ( list102, p -> a_p => random(0, Rup)) apply (0..10, i -> hilbertFunction ( i, subRup / sub ( sub ( Iup , randomSubForaij), subRup))) -- answer: (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply (0..10, i -> hilbertFunction ( i, sub ( sub ( Nup , randomSubForaij ), subRup) / sub ( sub ( Iup , randomSubForaij), subRup))) -- answer: (0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) erF = frac ( QQ [ apply (list102, p -> a_p ) ] ) Rdown = erF [ x_1..x_3 ] Idown = sub(Iup, Rdown) dim (Rdown^1 / Idown) == 0 -- true apply ( 0..10, i -> hilbertFunction ( i, (Rdown^1)/Idown )) -- answer (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply ( 0..10, i -> hilbertFunction ( i, (Idown : ideal (x_1,x_2))/Idown )) -- answer (0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply ( 0..10, i -> hilbertFunction ( i, (Rdown^1)/ (Idown + ideal ( x_2*a_(2,2)+x_3*a_(2,3)) ))) -- answer (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) apply ( 0..10, i -> hilbertFunction ( i, (Rdown^1)/ (Idown + ideal ( x_2*a_(1,2)+x_3*a_(1,3)) ))) -- answer (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -- Subpart 3, keycode: 3572, Related to [APP, p. 6, Example 2.16] -- REMARK: Example related to a simplicial complex D triangulating the torus S^1 \times S^1 -- REMARK: The code was tested on Macaulay2 Version 1.4 restart -- REMARK: D is the triangulation of the torus T = S^1 \times S^1 with 10 vertices -- contained in [Schenck, Computational Algebraic Geometry, p. 70, Exerc. 5.1.8] D = { {1,2,6}, {1,4,6}, {2,3,6}, {3,6,7}, {1,3,7}, {1,4,7}, {4,5,6}, {5,6,9}, {4,5,6}, {6,7,8}, {6,8,9}, {8,9,10}, {7,8,10}, {4,7,10}, {4,5,10}, {1,5,9}, {1,2,9}, {2,9,10}, {2,3,10}, {1,3,10}, {1,5,10}} list1 = {} for i from 1 to 3 do for j from 1 to 10 do list1 = list1 | {{i,j}} R = QQ [x_1..x_10 ] -- REMARK: ID is the Stanley-Reisner ideal of D ID = ideal ( x_6*x_10,x_7*x_9,x_4*x_9,x_3*x_9,x_5*x_8,x_4*x_8,x_3*x_8,x_2*x_8,x_1*x_8,x_5*x_7,x_2*x_7, x_3*x_5,x_2*x_5,x_3*x_4,x_2*x_4,x_5*x_9*x_10,x_1*x_9*x_10,x_3*x_7*x_10,x_1*x_7*x_10,x_1*x_4*x_10, x_1*x_2*x_10,x_2*x_6*x_9,x_1*x_6*x_9,x_4*x_6*x_7,x_1*x_6*x_7,x_1*x_5*x_6,x_1*x_3*x_6,x_1*x_4*x_5,x_1*x_2*x_3) for i from 1 to 3 do f_i = random (1,R) apply (0..10, i -> (i,hilbertFunction(i, R^1 / (ID + ideal (f_1,f_2,f_3))))) -- answer: ((0, 1), (1, 7), (2, 13), (3, 1), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (10, 0)) Rup = QQ [x_1..x_10, apply ( list1, p -> a_p) , Degrees => {10:{1,0}, (# list1): {0,1}}] I = sub (ID, Rup) for i from 1 to 3 do f_i = sum toList apply (1..10, j -> a_{i,j} * x_j ) Iup = I + ideal ( f_1,f_2,f_3) time Nup = Iup : ideal (x_1..x_10) -- used 408.831 seconds ( approximately 7 minutes ) time vap = ideal mingens ideal ( gens Nup % gens Iup ) rank source gens vap -- answer: 7 toString vap_0 -- answer: -- x_4*x_5*a_{2, 5}*a_{3, 4}+x_4*x_10*a_{2, 10}*a_{3, 4}-x_4*x_5*a_{2, 4}*a_{3, 5}-x_5*x_6*a_{2, 6}*a_{3, 5}+ ( -- x_5*x_6*a_{2, 5}*a_{3, 6}+x_6*x_9*a_{2, 9}*a_{3, 6}+x_7*x_10*a_{2, 10}*a_{3,7}+x_8*x_9*a_{2, 9}*a_{3, 8}+ -- x_8*x_10*a_{2, 10}*a_{3, 8}-x_6*x_9*a_{2, 6}*a_{3, 9}-x_8*x_9*a_{2, 8}*a_{3, 9}-x_4*x_10*a_{2, 4}*a_{3, 10}- -- x_7*x_10*a_{2, 7}*a_{3, 10}-x_8*x_10*a_{2,8}*a_{3, 10} ) toString vap_1 -- answer: -- x_4*x_5*a_{1, 5}*a_{3, 4}+x_4*x_10*a_{1, 10}*a_{3, 4}-x_4*x_5*a_{1, 4}*a_{3, 5}-x_5*x_6*a_{1, 6}*a_{3, 5}+( -- x_5*x_6*a_{1, 5}*a_{3, 6}+x_6*x_9*a_{1, 9}*a_{3, 6}+x_7*x_10*a_{1, 10}*a_{3,7}+x_8*x_9*a_{1, 9}*a_{3, 8}+ -- x_8*x_10*a_{1, 10}*a_{3, 8}-x_6*x_9*a_{1, 6}*a_{3, 9}-x_8*x_9*a_{1, 8}*a_{3, 9}-x_4*x_10*a_{1, 4}*a_{3, 10}- -- x_7*x_10*a_{1, 7}*a_{3, 10}-x_8*x_10*a_{1,8}*a_{3, 10} ) toString vap_2 -- answer: -- x_2*x_3*a_{2, 3}*a_{3, 2}+x_2*x_10*a_{2, 10}*a_{3, 2}-x_2*x_3*a_{2, 2}*a_{3, 3}-x_3*x_6*a_{2, 6}*a_{3, 3}+ ( -- x_3*x_6*a_{2, 3}*a_{3, 6}+x_6*x_7*a_{2, 7}*a_{3, 6}-x_6*x_7*a_{2, 6}*a_{3,7}-x_7*x_8*a_{2, 8}*a_{3, 7}+ -- x_7*x_8*a_{2, 7}*a_{3, 8}+x_8*x_10*a_{2, 10}*a_{3, 8}+x_9*x_10*a_{2, 10}*a_{3, 9}-x_2*x_10*a_{2, 2}*a_{3, 10}- -- x_8*x_10*a_{2, 8}*a_{3, 10}-x_9*x_10*a_{2,9}*a_{3, 10} ) toString vap_3 -- answer: -- x_2*x_3*a_{1, 3}*a_{3, 2}+x_2*x_10*a_{1, 10}*a_{3, 2}-x_2*x_3*a_{1, 2}*a_{3, 3}-x_3*x_6*a_{1, 6}*a_{3, 3}+ ( -- x_3*x_6*a_{1, 3}*a_{3, 6}+x_6*x_7*a_{1, 7}*a_{3, 6}-x_6*x_7*a_{1, 6}*a_{3,7}-x_7*x_8*a_{1, 8}*a_{3, 7}+ -- x_7*x_8*a_{1, 7}*a_{3, 8}+x_8*x_10*a_{1, 10}*a_{3, 8}+x_9*x_10*a_{1, 10}*a_{3, 9}-x_2*x_10*a_{1, 2}*a_{3, 10}- -- x_8*x_10*a_{1, 8}*a_{3, 10}-x_9*x_10*a_{1,9}*a_{3, 10} ) toString vap_4 -- answer: -- x_4*x_5*a_{1, 5}*a_{2, 4}+x_4*x_10*a_{1, 10}*a_{2, 4}-x_4*x_5*a_{1, 4}*a_{2, 5}-x_5*x_6*a_{1, 6}*a_{2, 5}+ ( -- x_5*x_6*a_{1, 5}*a_{2, 6}+x_6*x_9*a_{1, 9}*a_{2, 6}+x_7*x_10*a_{1, 10}*a_{2,7}+x_8*x_9*a_{1, 9}*a_{2, 8}+ -- x_8*x_10*a_{1, 10}*a_{2, 8}-x_6*x_9*a_{1, 6}*a_{2, 9}-x_8*x_9*a_{1, 8}*a_{2, 9}-x_4*x_10*a_{1, 4}*a_{2, 10}- -- x_7*x_10*a_{1, 7}*a_{2, 10}-x_8*x_10*a_{1,8}*a_{2, 10} ) toString vap_5 -- answer: -- x_2*x_3*a_{1, 3}*a_{2, 2}+x_2*x_10*a_{1, 10}*a_{2, 2}-x_2*x_3*a_{1, 2}*a_{2, 3}-x_3*x_6*a_{1, 6}*a_{2, 3}+ ( -- x_3*x_6*a_{1, 3}*a_{2, 6}+x_6*x_7*a_{1, 7}*a_{2, 6}-x_6*x_7*a_{1, 6}*a_{2, 7}-x_7*x_8*a_{1, 8}*a_{2, 7}+ -- x_7*x_8*a_{1, 7}*a_{2, 8}+x_8*x_10*a_{1, 10}*a_{2, 8}+x_9*x_10*a_{1, 10}*a_{2, 9}-x_2*x_10*a_{1, 2}*a_{2, 10}- -- x_8*x_10*a_{1, 8}*a_{2, 10}-x_9*x_10*a_{1,9}*a_{2, 10} ) toString vap_6 -- answer: -- x_8*x_9*x_10*a_{1, 10}*a_{2, 9}*a_{3, 8}-x_8*x_9*x_10*a_{1, 9}*a_{2, 10}*a_{3, 8}- ( -- x_8*x_9*x_10*a_{1, 10}*a_{2, 8}*a_{3, 9}+x_8*x_9*x_10*a_{1, 8}*a_{2, 10}*a_{3, 9}+ -- x_8*x_9*x_10*a_{1,9}*a_{2, 8}*a_{3, 10}-x_8*x_9*x_10*a_{1, 8}*a_{2, 9}*a_{3, 10} ) -- REMARK: vap_6 is (up to sign) equal to [8,9,10] * x_8*x_9*x_10 -- Subpart 4, keycode: 4026, Related to [APP, p. 6, Example 2.17] -- REMARK: Volume normalization for the generic hypersurface of degree 2 in 2 variables -- -- In other words, the hypersurface polynomial is -- -- g_{1, 1}*x_1^2 +g_{1, 2}*x_1*x_2+g_{2, 2}*x_2^2 -- REMARK: The code was tested on Macaulay2 Version 1.24 on the online platform with link -- https://www.unimelb-macaulay2.cloud.edu.au restart list32 = {} for i from 1 to 2 do list32 = list32 | { {1,i} } list32 list73 = {} for i1 from 1 to 2 do for i2 from i1 to 2 do list73 = list73 | { {i1,i2}} list73 -- kk = QQ kk = ZZ/2 R = kk [ x_1..x_2, apply ( list32, p -> vara_p) , apply ( list73, p -> g_p) ] polynomialg = sum toList apply ( list73, p -> g_p * (x_(p_0)) * (x_(p_1)) ) -- answer: x_1^2*g_{1, 1}+x_1*x_2*g_{1, 2}+x_2^2*g_{2, 2} Ilins = ideal apply (1..1, i -> sum toList apply (1..2, j -> vara_{1,j} * x_j )) Iup = ideal (polynomialg) + Ilins --------------------------------------------------------------------------------------------------- -- -- First choice of writing polynomialg in the form p_1x_1 + p_2x_2 -- -------------------------------------------------------------------------------------------------- p1 = x_1*g_{1, 1}+ x_2*g_{1, 2} p2 = x_2*g_{2, 2} polynomialg == p1*x_1+p2*x_2 -- answer: true firstu = -p1*vara_{1,2} + p2*vara_{1,1} -- answer: (when working with kk = QQ ) -- -x_1*vara_{1, 2}*g_{1, 1}-x_2*vara_{1, 2}*g_{1, 2}+x_2*vara_{1, 1}*g_{2, 2} ( Iup: ideal (x_1,x_2)) == Iup + ideal ( firstu ) -- answer: true --------------------------------------------------------------------------------------------------- -- -- Second choice of writing polynomialg in the form p_1x_1 + p_2x_2 -- -------------------------------------------------------------------------------------------------- p1 = x_1*g_{1, 1} p2 = x_1*g_{1, 2}+x_2*g_{2, 2} polynomialg == p1*x_1+p2*x_2 -- answer: true secondu = -p1*vara_{1,2} + p2*vara_{1,1} ( Iup: ideal (x_1,x_2)) == Iup + ideal ( secondu ) -- answer: true ---------------------------------------------- -- -- Comparing firstu and secondu -- ---------------------------------------------- isSubset ( ideal(firstu - secondu), Iup ) -- answer: true -- REMARK: Hence, we have -- -- Iup = ( x_1^2*g_{1, 1}+x_1*x_2*g_{1, 2}+x_2^2*g_{2, 2}, f_1), -- -- we set -- -- firstu = -x_1*vara_{1, 2}*g_{1, 1}-x_2*vara_{1, 2}*g_{1, 2}+x_2*vara_{1, 1}*g_{2, 2} -- and -- -- secondu = -x_1*vara_{1, 2}*g_{1, 1}+x_1*vara_{1, 1}*g_{1, 2}+x_2*vara_{1, 1}*g_{2, 2} -- -- -- Then we have firstu + I_{up} = secondu + I_{up} , (hence also firstu + I_{down} = secondu + I_{down} ) -- -- the top degree of A is 1, and the degree normalization linear isomorphism A_1 \to E is given by -- -- firstu + I_{down} mapsto 1. substitutetof = (f) -> sub ( f, { x_1 => vara_{1,2}, x_2 => - vara_{1,1} }) Cg = substitutetof polynomialg Cx1 = substitutetof x_1 Cx2 = substitutetof x_2 isSubset ( ideal ( Cg*x_1 - (-substitutetof (x_1)*firstu)), Iup ) -- answer: true isSubset ( ideal ( Cg*x_2 - (-substitutetof (x_2)*firstu) ), Iup ) -- answer: true substitutetof (firstu) - (- Cg) == 0 -- answer: true substitutetof (secondu) - (- Cg) == 0 -- answer: true egbU = frac ( kk [apply ( list32, p -> vara_p), apply ( list73, p -> g_p) ]) newR= egbU [ x_1..x_2 ] computeVolume = (h) -> - sub ( substitutetof (h), egbU ) / (sub(Cg,egbU)) computeVolume sub ( firstu , newR) == 1 -- answer: true volx1= computeVolume x_1 -- answer: (when working with kk = QQ ) -- (-vara_{1, 2})/(vara_{1, 2}^2*g_{1, 1}-vara_{1, 1}*vara_{1, 2}*g_{1, 2}+vara_{1, 1}^2*g_{2, 2}) volx2 = computeVolume x_2 -- answer: (when working with kk = QQ ) -- (vara_{1, 1})/(vara_{1, 2}^2*g_{1, 1}-vara_{1, 1}*vara_{1, 2}*g_{1, 2}+vara_{1, 1}^2*g_{2, 2}) ------------------------------------------------------------------------------------------------------------------- -- -- In the following we assume that the field kk is the field of two elements ZZ/2 -- -- and we verify the Parseval Equations (1) and (2) contained in [APP, p. 7] -- ------------------------------------------------------------------------------------------------------------------- volx1- ( g_{1,1} * vara_{1,2} * (volx1)^2 + g_{1,2}* vara_{1,1} * (volx1)^2 + g_{2,2} * vara_{1,2} * (volx2)^2 ) == 0 -- answer: true volx2- ( g_{1,1} * vara_{1,1} * (volx1)^2 + g_{1,2} * vara_{1,2} * (volx2)^2 + g_{2,2} * vara_{1,1} * (volx2)^2 ) == 0 -- answer: true