id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
23331 Allow exact defining polynomials for p-adic extensions David Roe "Currently, the defining polynomial of a p-adic extension always has coefficients over the base ring:
{{{
sage: R. = ZZ[]
sage: W. = Zp(5).extension(x^2 - 5)
sage: W.defining_polynomial().base_ring()
5-adic Ring with capped relative precision 20
}}}
This is fine, one would expect the defining polynomial to have coefficients in the base ring but we would also like to have access to the exact polynomial. To make this consistent, we should always keep two polynomials: a defining polynomial and an exact polynomial.
The defining polynomial has coefficients over the base ring. It is not part of the key used in the factory as it can be recovered from the exact polynomial.
The exact polynomial has coefficients in a number field: For extension of !Zp/Qp, the coefficients are in QQ. For two step extensions, the coefficients are in the absolute number field defined by the exact polynomial of the base ring. For more general extensions, the coefficients are in the tower of number fields, defined by the exact polynomials.
The exact polynomial is part of the key used in the factory. Two fields with different exact polynomial but same defining polynomial are different. This makes sense because they behave differently with respect to `change()` when changing the precision.
For extensions constructed from a modulus with inexact coefficients (in the base ring) we just set the exact polynomial to an approximation of the modulus." enhancement closed major sage-8.0 padics fixed sd87 Julian Rüth David Roe Julian Rüth N/A 561f5ac333b00f5e4a2ee70b82e2b5e4965876b3 561f5ac333b00f5e4a2ee70b82e2b5e4965876b3 #20073