#14746: Clean up S-class group, S-unit and Selmer group code
-----------------------------+----------------------------------------------
Reporter: pbruin | Owner: davidloeffler
Type: enhancement | Status: new
Priority: major | Milestone: sage-5.11
Component: number fields | Keywords: S-class group, S-units,
Selmer group
Work issues: | Report Upstream: N/A
Reviewers: | Authors: Peter Bruin
Merged in: | Dependencies: #14489
Stopgaps: |
-----------------------------+----------------------------------------------
The code for S-class groups, S-units and Selmer groups of number fields,
and more generally étale algebras, is not entirely satisfactory in the
following respects:
1. The code for computing Selmer groups is somewhat convoluted.
Conceptually, the computation of the generators for principal ideals of
the form gen^order^ belongs in selmer_group, not _S_class_group_and_units.
It would be more correct to return, as S-class group generators, pairs
(gen, order) instead of triples (gen, order, pr), and leave the
computation of the principal ideal generators to selmer_group.
2. The docstrings are not very clear. The sentences are very long and
contain awkward constructions ("a fractional ideal representative of the
S-class group generator whose order (in the S-class group) is order";
"principal generator").
3. The docstring of NumberField._S_class_group_and_units suggests that to
obtain a principal ideal, genorder can be multiplied by any fractional
ideal J whose class is in the subgroup of the class group generated by
ideals in S. However, the condition is more strict: J must be in the
subgroup of the ideal group generated by ideals in S.
The attached patch does the following things:
1. Move computation of generators of principal ideals from
NumberField._S_class_group_and_units to NumberField.selmer_group.
2. Add a method _S_decomposition to PolynomialQuotientRing_generic, which
computes the decomposition of an étale algebra as a product of number
fields. Use this function in S_class_group, S_units and selmer_group.
3. Delete PolynomialQuotientRing_generic._S_class_group_and_units, and
move its code and doctests to S_class_group, class_group, S_units and
units.
4. Reimplement PolynomialQuotientRing_generic.selmer_group to compute the
Selmer group as the product of the Selmer groups of the distinct
components, instead of imitating the algorithm of
NumberField.selmer_group.
5. Make the documentation more precise.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14746>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.