Problem
Base changing a plane curve to a relative number field raises an error. The same error should appear if we define a curve over such a field.
sage: from curves import ProjectivePlaneCurve
sage: R.<x,y,z> = QQ[]
sage: F = x^2*z+ y^3+x*y*z
sage: X = ProjectivePlaneCurve(F)
sage: S.<t> = QQ[]
sage: K.<a> = NumberField(t^2+2)
sage: L.<b> = K.extension(t^2+t+1)
sage: X.base_change(L)
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
...
NotImplementedError: Provably correct factorization not implemented. Disable this error by wrapping your code in a `with proof.WithProof('polynomial', False):` block.
The error is caused because the curve constructor from Sage calls the factor method for a multivariate polynomial ring. This is not implemented for polynomials over relative number fields. This is a problem for us because probably we can't avoid working over relative number fields.
Possible solutions
-
Disable polynomial proofs locally: wrap the curve construction in with proof.WithProof('polynomial', False): to allow non-certified factorization.
-
Disable polynomial proofs globally (session-wide): call proof.polynomial(False) once, then use Curve(F) normally.
-
Use a lower-level constructor: build the curve via AffinePlaneCurve_field to bypass irreducible/reduced checks entirely.
-
Manual lightweight checks (optional): test reducedness via gcd with partial derivatives; skip full irreducibility tests.
Problem
Base changing a plane curve to a relative number field raises an error. The same error should appear if we define a curve over such a field.
The error is caused because the curve constructor from Sage calls the factor method for a multivariate polynomial ring. This is not implemented for polynomials over relative number fields. This is a problem for us because probably we can't avoid working over relative number fields.
Possible solutions
Disable polynomial proofs locally: wrap the curve construction in with proof.WithProof('polynomial', False): to allow non-certified factorization.
Disable polynomial proofs globally (session-wide): call proof.polynomial(False) once, then use Curve(F) normally.
Use a lower-level constructor: build the curve via AffinePlaneCurve_field to bypass irreducible/reduced checks entirely.
Manual lightweight checks (optional): test reducedness via gcd with partial derivatives; skip full irreducibility tests.