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 -~----------~----~----~----~------~----~------~--~---