diff --git a/src/manual-checks/polynomial_after_8_rounds.py b/src/manual-checks/polynomial_after_8_rounds.py new file mode 100644 index 0000000..c118ce0 --- /dev/null +++ b/src/manual-checks/polynomial_after_8_rounds.py @@ -0,0 +1,43 @@ +from sage.all import GF, PolynomialRing + +R = PolynomialRing(GF(2), names=[ + 'x00', 'x03', 'x04', 'x05', 'x06', 'x07', 'x10', 'x16', 'x17', 'x21', 'x22', 'g' +]) +(x00, x03, x04, x05, x06, x07, x10, x16, x17, x21, x22, g) = R.gens() + +p = (1 + x00*x04*x05*x10 + x00*x04*x05 + x00*x04*x10 + x00*x04 + x00*x05*x10 + x00*x05 + x00*x07*x10 + x00*x07 + x00*x10*x17 + x00*x17 + x03*x04*x06*x07 + x03*x04*x06*x17 + x03*x04 + x04*x05*x06*x16 + x04*x06*x16 + x05*x06*x16 + x06*x07*x16 + x06*x16*x17 + x06*x16 + x07 + x10 + x16 + x21 + x22 + x00*x04*x05*x06*g + x00*x04*x05*g + x00*x04*x06*g + x00*x04*g + x00*x05*x06*x07*g + x00*x05*x06*x17*g + x00*x05*x06*g + x00*x05*g + x00*x06*x07*g + x00*x06*x17*g + x00*x06*g + x00*x07*g + x00*x10*g + x00*x17*g + x03*x04*x05*x06*g + x03*x05*x06*g + x03*x06*x07*g + x03*x06*x17*g + x03*g + x04*x05*x06*g + x04*x06*g + x06*x16*g + x06*x17*g + g) + +def count_monomials(poly): + return len(poly.monomials()) + +p0 = p.subs({x00: 0}) +p1 = p.subs({x00: 1}) + +p2 = p.subs({x06: 0}) + +p3 = p0.subs({x06: 0}) + +print("original polynomial:") +print("Monomial count:", count_monomials(p)) +print("Polynomial:") +print(p) + +print("\nx00 = 0") +print("Monomial count:", count_monomials(p0)) +print("Polynomial:") +print(p0) + +print("\nx00 = 1") +print("Monomial count:", count_monomials(p1)) +print("Polynomial:") +print(p1) + +print("\nx06 = 0") +print("Monomial count:", count_monomials(p2)) +print("Polynomial:") +print(p2) + +print("\nx00 = 0 and x06 = 0") +print("Monomial count:", count_monomials(p3)) +print("Polynomial:") +print(p3)