ring rr = (2,X),(A,Z,Z_1,a2,a1,a0,z2,z1,z0,t),lp; minpoly = X^3+X+1; proc or_gate(poly a, poly b) /* function of 2-input OR gate */ { return (a+b+a*b); } ideal J = A + a0 + a1*X + a2*X^2, Z + z0 + z1*X + z2*X^2, /* Word definition */ z0 + or_gate(a0, or_gate(a1, a2)), z1 + or_gate(a1*(1+a2), a0*(1+a1)*a2), z2 + or_gate(a1, (1+a0)*a2), /* circuit description */ Z_1 - ((X^2+X+1)*A^7+(X^2+1)*A^6+(X)*A^5+(X+1)*A^4+(X^2+X+1)*A^3+(X^2+1)*A), /* spec polynomial */ t*(Z-Z_1) -1, /* miter */ A^8 - A, Z^8 - Z, Z_1^8 - Z_1, t^8 - t, a0^2 - a0, a1^2 - a1, a2^2 - a2, z0^2 - z0, z1^2 - z1, z2^2 - z2; /* vanishing polynomials */ slimgb(J);