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