Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

h.lift(I) should do the job. See documentation for details.

h.lift(I) should do the job. See documentation for details.

Since lift is not implemented for BooleanPolynomialRing, we can workaround by considering the ideal generated by $f,g$ and $x_i^2+x_i$ in $GF(2)[x_1,\dots,x_n]$. Here is a sample code:

B.<x,y> = BooleanPolynomialRing()
I = ideal(x+1,y+1)
pol = x+y
#print( pol.lift(I) )      # this is not implemented

#workaround:
nvars = len(B.gens())
F = PolynomialRing(GF(2),nvars,'z')
I2 = [F(g) for g in I.gens()] + [g^2+g for g in F.gens()]
print( F(pol).lift(I2)[:len(I.gens())] )

h.lift(I) should do the job. See documentation for details.

Since lift is not implemented for BooleanPolynomialRing, we can workaround by considering the ideal generated by $f,g$ and $x_i^2+x_i$ in $GF(2)[x_1,\dots,x_n]$. Here is a sample code:

B.<x,y> = BooleanPolynomialRing()
I = ideal(x+1,y+1)
pol = x+y
#print( pol.lift(I) )      # this is not implemented

#workaround:
nvars = len(B.gens())
F = PolynomialRing(GF(2),nvars,'z')
I2 = ideal( [F(g) for g in I.gens()] + [g^2+g for g in F.gens()]
F.gens()] )
print( F(pol).lift(I2)[:len(I.gens())] )

h.lift(I) should do the job. See documentation for details.

Since lift is not implemented for BooleanPolynomialRing, we can workaround by considering the ideal generated by $f,g$ and $x_i^2+x_i$ in $GF(2)[x_1,\dots,x_n]$. Here is a sample code:

B.<x,y> = BooleanPolynomialRing()
I = ideal(x+1,y+1)
pol = x+y
#print( pol.lift(I) )      # this is not implemented

#workaround:
nvars = len(B.gens())
F = PolynomialRing(GF(2),nvars,'z')
I2 = ideal( [F(g) for g in I.gens()] + [g^2+g for g in F.gens()] )
coefs = [c.substitute(dict(zip(F.gens(),B.gens()))) for c in F(pol).lift(I2)[:len(I.gens())]]    
print( F(pol).lift(I2)[:len(I.gens())] coefs )

h.lift(I) should do the job. See documentation for details.

Since lift is not implemented for BooleanPolynomialRing, we can workaround by considering the ideal generated by $f,g$ and $x_i^2+x_i$ in $GF(2)[x_1,\dots,x_n]$. Here is a sample code:

B.<x,y> = BooleanPolynomialRing()
I = ideal(x+1,y+1)
pol = x+y
x*y + 1
#print( pol.lift(I) )      # this is not implemented

#workaround:
nvars = len(B.gens())
F = PolynomialRing(GF(2),nvars,'z')
I2 = ideal( [F(g) for g in I.gens()] + [g^2+g for g in F.gens()] )
coefs = [c.substitute(dict(zip(F.gens(),B.gens()))) for c in F(pol).lift(I2)[:len(I.gens())]]    
print( coefs )

h.lift(I) should do the job. See documentation for details.

Since lift is not implemented for BooleanPolynomialRing, we can workaround by considering the ideal generated by $f,g$ and $x_i^2+x_i$ in $GF(2)[x_1,\dots,x_n]$. Here is a sample code:

B.<x,y> = BooleanPolynomialRing()
I = ideal(x+1,y+1)
pol = x*y + 1
#print( pol.lift(I) )      # this is not implemented

#workaround:
nvars = len(B.gens())
F = PolynomialRing(GF(2),nvars,'z')
GF(2)[B.gens()]
I2 = ideal( [F(g) for g in I.gens()] + [g^2+g for g in F.gens()] )
coefs = [c.substitute(dict(zip(F.gens(),B.gens()))) [B(c) for c in F(pol).lift(I2)[:len(I.gens())]]    
F(pol).lift(I2)[:len(I.gens())]]
print( coefs )