# Revision history [back]

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 )