I agree with David -- I'd like to see separate classes for various lattice-type structures, including:
- Symmetric bilinear lattices - Skew-symmetric bilinear lattices - Quadratic lattices - Hermitian lattices For me the main point of a lattice class would deal with the issue of lattices defined over a domain R which is not a PID by representing it in ZZ basis and imposing extra structure of being closed under the R- action. Each of these classes can be defined individually over a commutative ring (called a ___ lattice), over a PID (called a ___ form), and over a field (called a ___ space). For lattices it seems like each structure should be coded individually, though ___ spaces can inherit from ___ forms with some overloading and flags. I'm not sure if the QuadraticForm class I've been working on will fill many of the needs above, since for most purposes a quadratic form is equivalent to a symmetric bilinear form. It still has some testing and documentation to go, but I'll try to get something out soon. This basically internally represents the coefficients of a quadratic form, but can produce an associated Gram/Hessian matrix if desired, compute basic invariants, and do some local density arithmetic. It also can call the Nebe/Kohel implementation of the genus symbols, some features of Souvigner's fast automorphism code, and have a slow version of the (unproven!) Conway-Sloane mass formula. I'm really excited by this discussion, since it would be great to have a uniform framework to build these additional structures on! Thanks, --Jon =) On Apr 28, 10:52 pm, David Kohel <[EMAIL PROTECTED]> wrote: > I support John's view that real-valued lattice need also to be taken > into account. Minkowski lattices of number fields and Mordell-Weil > groups are prime examples. > > Some people also like to embed lattices in R^n equipped with the > standard Euclidean inner product. As such the coordinates are > non-rational even though the module L is (isomorphic to) Z^n (or > Z^m for m < n). > > These could be handled better than Magma, in which the problem > of recognizing a vector from R^n in L is not handled well. > > There need to be good constructors for elements of L both from > approximations in R^n and in terms of an integer coordinates > relative to the basis of L. > > I think the proposed definition of is_euclidean is not obviously > the natural one. I would expect this to return True iff the inner > product was symmetric and positive definite, i.e. is embeddable > in Euclidean space R^n (with the standard inner product). > The syntax is_symmetric should return True if the inner product > is symmetric. > > I also support the extension (relative to Magma) to (symmetric) > lattices with isotropic elements and arbitrary signature. > > The treatment of skew-symmetric or general non-symmetric inner > products might be handled by a different class. > > The need for a separate LatticeModule class is not completely > obvious. Shouldn't the dual of a free module ever return anything > but the dual with respect to the inner product, embedded in > L \otimes_Z R? Probably the lattice label should apply only > to symmetric inner products, and there should be subclasses > for positive definite lattices. > > Note that even this dual constructor, for non real-valued inner > products, requires that we have Z-modules embedded in an > ambient space with respect to non-rational coordinates. > > There was also the previously raised issue of Hermitian modules, > but these are yet another beast, which need to be defined with > respect to a ring with fixed involution. Again there should be > exact versions (e.g. over the Gaussian or Eisenstein integers, > a cyclotomic ring/field, or a number ring/field) and inexact > versions over the complex numbers. > > For real-valued lattices or non-exact Hermitian lattices, it becomes > clear that the ambient vector space places an important role and > should be a fixed attribute. > > I don't think that there should be a sublattice class. I think there > should be an ambient vector space, and if two lattices lie in the > same ambient space they can be added or intersected to get new > lattices, and tested for inclusion. > > Note that the terminology QuadraticModule (for LatticeModule) > and QuadraticSpace (for the ambient space) are also possible. > These classes should interact well with Jon Hanke's classes > for quadratic forms. > > --David --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---