Opened 3 years ago
Last modified 3 years ago
#27413 new enhancement
Implement picard group and unit group for nonmaximal orders
Reported by:  klui  Owned by:  

Priority:  major  Milestone:  sagewishlist 
Component:  number fields  Keywords:  class group, unit group, nonmaximal order, picard group 
Cc:  Merged in:  
Authors:  Reviewers:  
Report Upstream:  N/A  Work issues:  
Branch:  u/klui/implement_picard_group_and_unit_group_for_non_maximal_orders (Commits, GitHub, GitLab)  Commit:  3df71d581a10a14a5399b79f666560e1fd2dfc6b 
Dependencies:  Stopgaps: 
Description (last modified by )
The goal of this ticket is to compute the unit group (as a subgroup of the unit group of the maximal order) and to compute the picard group (these are useful for isomorphismtesting and isogenyenumerating of modabvars.) So the goal is to implement the algorithms here: https://math.unipaderborn.de/fileadmin/mathematik/AGComputeralgebra/Publicationsklueners/picard.pdf . These have already been implemented in Magma (by the authors of the paper, I believe) so we should doublecheck with the results there.
Nonmaximal orders are not wellsupported in Sage (Sage uses PARI for maximal orders but PARI does not have nonmaximal orders, except for quadratic number fields). For example,
sage: K.<a> = NumberField(x^25) sage: O = K.order(a); O.is_maximal() False sage: O.ideal(2)  NotImplementedError Traceback (most recent call last) <ipythoninput108da0cc5ea6ab> in <module>() > 1 O.ideal(Integer(2)) /home/klui/sage/local/lib/python2.7/sitepackages/sage/rings/number_field/order.pyc in ideal(self, *args, **kwds) 232 """ 233 if not self.is_maximal(): > 234 raise NotImplementedError("ideals of nonmaximal orders not yet supported.") 235 I = self.number_field().ideal(*args, **kwds) 236 if not I.is_integral(): NotImplementedError: ideals of nonmaximal orders not yet supported.
So this might be hard.
Progress
This current branch can:
 return the underlying free module of a fractional ideal of an order given the generators.
 compute the conductor of a nonmaximal order as both an ideal of the maximal order and the nonmaximal order.
 intersect fractional ideals of nonmaximal orders with nonmaximal orders.
 return the prime factors of an integral ideal of a nonmaximal order.
Github
I've been using Github for version control. See https://github.com/kevinywlui/sage/tree/order for the lastest development. But I'll push to this ticket every now and then.
Change History (8)
comment:1 Changed 3 years ago by
 Component changed from modular forms to number fields
comment:2 Changed 3 years ago by
 Branch set to u/klui/implement_picard_group_and_unit_group_for_non_maximal_orders
comment:3 Changed 3 years ago by
 Commit set to 9d09ebf443058d35ad6f0a9178514b8f44b277fb
comment:4 Changed 3 years ago by
 Description modified (diff)
comment:5 Changed 3 years ago by
 Commit changed from 9d09ebf443058d35ad6f0a9178514b8f44b277fb to c58a523ebe49defce004c17b2128982854ac8c82
Branch pushed to git repo; I updated commit sha1. New commits:
c58a523  Implement intersection of orders with ideals

comment:6 Changed 3 years ago by
 Description modified (diff)
comment:7 Changed 3 years ago by
 Commit changed from c58a523ebe49defce004c17b2128982854ac8c82 to 3df71d581a10a14a5399b79f666560e1fd2dfc6b
Branch pushed to git repo; I updated commit sha1. This was a forced push. Last 10 new commits:
e487c7e  Rename from order_ideal to order_fractional_ideal

a061edc  Fix a typo

ca83717  Allow conductor to be returned as ideal of self

8e9337e  Update README to remind to ask sagent

b95b503  Implement richcmp for ideals

1adfd9d  Implement intersection of orders with ideals

16b453f  Implement a hash on fractional ideals

eb87920  Fix bug in intersection

c1b9b26  Fix remaining bug from conductor

3df71d5  Implemented prime_factors

comment:8 Changed 3 years ago by
 Description modified (diff)
Branch pushed to git repo; I updated commit sha1. This was a forced push. Last 10 new commits:
Add comments to conductor
Add an OrderIdeal class
Use OrderIdeal as base class of NumberFieldIdeal
Generalize free_module to work for OrderIdeals
Add a README which I will remove at the end
Rename from order_ideal to order_fractional_ideal
Fix a typo
Allow conductor to be returned as ideal of self
Update README to remind to ask sagent
Implement richcmp for ideals