#14746: Clean up S-class group, S-unit and Selmer group code
--------------------------------------------------------+-------------------
       Reporter:  pbruin                                |         Owner:  
davidloeffler
           Type:  enhancement                           |        Status:  
needs_review 
       Priority:  major                                 |     Milestone:  
sage-5.11    
      Component:  number fields                         |    Resolution:        
       
       Keywords:  S-class group, S-units, Selmer group  |   Work issues:        
       
Report Upstream:  N/A                                   |     Reviewers:        
       
        Authors:  Peter Bruin                           |     Merged in:        
       
   Dependencies:  #14489                                |      Stopgaps:        
       
--------------------------------------------------------+-------------------
Description changed by pbruin:

Old description:

> 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, gen^order^ 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.

New description:

 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, gen^order^ 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.

 Apply: trac_14746_selmer_group_cleanup.patch

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14746#comment:2>
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.


Reply via email to