-- Define a ring of polynomials in 9 variables. R = ZZ/2[x1,x2,x3,x4,x5,x6,x7,x8,x9]; -- Define a quotient ring, where each x_i^2 = x_i. I = ideal(x1^2-x1, x2^2-x2, x3^2-x3, x4^2-x4, x5^2-x5, x6^2-x6, x7^2-x7, x8^2-x8, x9^2-x9); Q = R / I; -- Shortcut for AND and OR functions. RingElement | RingElement :=(x,y)->x+y+x*y; RingElement & RingElement :=(x,y)->x*y; -- Set the parameters (constants). Ge = 0_Q Le = 1_Q -- This is the 9-variable lac operon model. f1 = (1+x5) & x4; f2 = x1; f3 = x1; f4 = 1+Ge; f5 = (1+x6) & (1+x7); f6 = x8 & x3; f7 = x6 | x8 | x9; f8 = (1+Ge) & x2 & Le; f9 = (1+Ge) & (x8 | Le); -- Compute the ideal to find the fixed point(s). I = ideal(f1+x1, f2+x2, f3+x3, f4+x4, f5+x5, f6+x6, f7+x7, f8+x8, f9+x9) -- Compute a Groebner basis. G = gens gb I