I believe all that David was saying was that our LatticeQuotients should probably inherit from a new FreeModule_ZZ_quotient class instead of from AbelianGroups, since the latter are not fully developed sage objects yet...
On Apr 28, 11:29 am, "John Cremona" <[EMAIL PROTECTED]> wrote: > David, I don't think you understood my suggestion. We are talking > about groups A which are finitely-generated and torsion-free, so > abstractly isomorphic to Z^n, together with a suitable blinear > function on AxA taking values in Z or Q, and I wish to include R > -valued forms. > > John > > 2008/4/28 David Joyner <[EMAIL PROTECTED]>: > > > > > On Mon, Apr 28, 2008 at 2:02 PM, Robert Miller <[EMAIL PROTECTED]> wrote: > > > > SEP > > > > Implement Lattices over ZZ, with pairings into QQ or ZZ > > > > 0. (Maybe) Implement a FreeModule_ZZ_quotient class. This would also > > > allow for constructing abelian groups in the sort of canonical way > > > (something people have been asking for...) > > > > 1. Implement a LatticeModule class, which will inherit from > > > FreeModule_generic_pid: instances of LatticeModule will inherit an > > > underlying free ZZ module and make use of the optional > > > inner_product_matrix property. > > > > This shouldn't just be a free ZZ module with inner product matrix, > > > since we want specific functions for computing the dual lattice, etc. > > > which are more appropriate in a Lattice class. > > > a. Attributes will include > > > - is_euclidean (whether the inner product matrix is symmetric, > > > rather than skew-symmetric) > > > - is_integral (whether the image of the pairing is in ZZ or QQ) > > > - discriminant (the determinant of the matrix [<a_i,a_j>], where > > > {a_i} is a basis for the module). A lattice is nondegenerate if its > > > discriminant is nonvanishing. > > > b. Euclidean lattices also have the attributes: > > > - signature > > > - even/odd (whether <a,a> \in 2 ZZ for all a) > > > c. Use L.<a,b> for the pairing induced on module elements by the > > > inner product matrix. > > > > 2. Implement a SubLatticeModule class, which will inherit from > > > FreeModule_submodule_with_basis_pid and from Lattice, but override > > > L.<a,b> for the inner product. > > > a. Function is_primitive (a sublattice M of a lattice L is > > > primitive if L/M is a free ZZ-module) > > > b. Functions to get parent lattice and sublattice as LatticeModule > > > objects. > > > > 3. Implement a LatticeQuotient class (for now, just full sublattices, > > > i.e., finite quotients). > > > -- Inherit from FreeModule_ZZ_quotient? > > > -- Inherit from AbelianGroup? > > > -1 is my vote on this. Infinite AbelianGroup instances are not > > completely implemented. > > > > -- Inherit from nothing? > > > ( The question here is what the underlying structure for a > > > LatticeQuotient should actually be. The important thing is how will > > > someone want to access elements of a LatticeQuotient? ) > > > a. Attributes will include a quadratic_form_matrix with entries > > > defined over QQ/ZZ or QQ/2ZZ > > > > 4. Create a dual_lattice function for integral euclidean lattices, > > > with optional "embedding" argument > > > > 5. Implement a dual_quotient function for integral euclidean lattices > > > which returns a LatticeQuotient. > > > > 6. Implement isomorphism tests for indefinite integral euclidean > > > lattices. > > > > -- Robert Miller, Andrey Novoseltsev, Ursula Whitcher --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---