-
-
Notifications
You must be signed in to change notification settings - Fork 554
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
p-adic completions/Henselizations backed by exact rings #22956
Labels
Comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Changed keywords from none to sd86.5 |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Changed keywords from sd86.5 to sd86.5, sd87 |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Branch: u/saraedum/henselization |
This comment has been minimized.
This comment has been minimized.
Last 10 new commits:
|
Commit: |
This comment has been minimized.
This comment has been minimized.
Changed commit from |
Changed branch from u/saraedum/henselization to none |
Branch: u/saraedum/22956 |
Last 10 new commits:
|
Changed keywords from sd86.5, sd87 to sd86.5, sd87, padicIMA |
Commit: |
This was referenced Jun 13, 2017
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
All p-adic rings currently available in Sage are backed by elements that consist of an approximation and a precision. It can sometimes be tedious to work with such elements since error propagation needs to be analyzed and many algorithms in Sage don't play nice with such inexact elements.
This ticket implements an exact alternative where p-adic rings are backed by absolute number fields. The idea is to use exact elements in number fields where possible and describe algebraic elements as limits of Mac Lane valuations (see #21869). Since computations in number fields (and in particular in relative extensions) are slow in Sage, extensions are always rewritten as isomorphic rings defined by an absolute number field with defining (Eisenstein) polynomials with small coefficients.
A prototype of this exists as a standalone project https://github.com/saraedum/completion. The idea of this ticket is not necessarily to get this prototype into Sage but to track the few things that need to change in Sage for it to work (fast).
One can of course not expect arithmetic to be as fast as in the inexact p-adic rings but the approach seems to have its merits. With a few tweaks in Sage, this implementation can compute the degree 384 splitting field (unramified of degree 2) of a degree 12 polynomial over Q2 in less than three minutes.
Required changes to Sage (
that can not be monkey-patched;the ones in parentheses are for better performance):The attached branch contains all these changes.
__nonzero__
for printing. (Do not require coefficient's __nonzero__ to be implemented for polynomial printing #23020)PolynomialQuotientRing
should be a unique parent. (polynomial quotient rings are unique parents #22983)is_irreducible
should be cached) (cache Polynomial.is_irreducible() #23164)is_squarefree
should be cached) (Cache is_squarefree() for polynomials #23182)is_irreducible
should be able to call_is_irreducible_univariate_polynomial
on the base ring.) (is_irreducible can be implemented on the parent as _is_irreducible_univariate_polynomial #23168)is_squarefree
should be able to call_is_squarefree_univariate_polynomial
on the base ring.) (is_squarefree can be implemented on the base as _is_squarefree_univariate_polynomial #23169)gcd(a,a) is a
should be true for polynomials over number fields.) (Stability for gcd(x,x) #23171)Element._cache_key
that someone forgot to delete when taking outElement.__hash__
.) (Remove Element._cache_key() #23173)Depends on #21869
Depends on #22983
Depends on #23020
Depends on #23164
Depends on #23168
Depends on #23169
Depends on #23170
Depends on #23171
Depends on #23173
Depends on #23182
Depends on #24934
Depends on #24655
Depends on #25226
Depends on #25227
Depends on #25228
CC: @roed314 @xcaruso
Component: padics
Keywords: sd86.5, sd87, padicIMA
Author: Julian Rüth
Branch/Commit: u/saraedum/22956 @
7520220
Issue created by migration from https://trac.sagemath.org/ticket/22956
The text was updated successfully, but these errors were encountered: