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

Reply via email to