There are different objects all called lattices in different contexts.
 Let's start by acknowledging that we are not talking about some kind
of poset -- though there will be others for whom that is what the word
"lattice" means.

Following Lenstra (see his article on Lattices in the Buhler &
Stevenhagen MSRI book on Algorithmic Number Theory)  a lattice is a
discrete subgroup of a euclidean vector space.  That could be either
R^n or C^n: both really do arise (for example the period lattice of an
elliptic curve is a lattice in C).   Given this definition one would
expect a lattice L of rank r in an ambiant vector space V of dimension
n to be given by r independent elements of V (if V is complex they
only have to be R-linearly independent) so by a d x r matrix A (if we
identify V with R^d or C^d) whose columns span L.

Or one could give the Gram matrix G (A^t * A (in the real case), which
is real and positive definite.  You definitely need to be able to
define a lattice just by its Gram matrix;  theoretically one can go
from such a G via a factorization G=A^t * A to a basis representation
(not unique).

But since a lattice is a free abelian group of rank r and hence
isomorphic (as a group) to Z^r it is also common to take the
underlying set as just Z^r and then give it the required lattice
structore by defining a (positive definite) quadratic form on Z^r.
This need not be integer-valued, of course, and if we call its Gram
matrix G we can get back to a basis definition of the lattice as
before.

All this is given in detail in Lenstra's article (see especially
section 4, on Represeting Lattices).

I would hope that our Lattice class could allow for all of these.
Different algorithms (e.g. different forms of LLL) require integers
bases, or not, or work on Gram matrices, and I would like it if our
class converted between these as needed.

that's enough for now: of course, number theorists would also use
"lattice" for a generalization of the above, e.g. if R is an integral
domain contained in a field  K then an R-submodule of K^d would be
called an R-lattice in the vector space V=K^d if it satisfied some
easy conditions.  In the previous case we had (R,K) = (Z,R) but
(Z_p,Q_p) is also used a lot theoretically.

I hope that Martin does not already regret asking thew question!  I
recommend airing this in sage-algebra and sage-nt so have copied them
in.

John

PS Martin, in your patch you show your age by the lines

+# Sage: System for Algebra and Geometry Experimentation
+#
+# Copyright (C) 2014 Martin Albrecht <martinralbe...@googlemailc.om>
## NB typo here!


On 3 April 2014 14:58, Martin Albrecht <martinralbre...@googlemail.com> wrote:
> Hi all,
>
> I have a "what colour should the bike shed be" question. At
>
>    http://trac.sagemath.org/ticket/15976
>
> a few new classes are introduced for lattices as discrete subgroups of some
> vectors spaces. The only one somewhat function is the one over the integers,
> aptly called IntegerLattice. However, while we're at it, we might as well
> introduce a base class for other such lattices as well (and a general
> constructor). How should it be called?
>
> Suggestions so far:
>
> Lattice -> to general?
> RealLattice -> but people might want complex lattices as well
> VectorSpaceLattice -> what do people think?
>
> Suggest away!
>
> Cheers,
> Martin
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sage-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to sage-devel@googlegroups.com.
> Visit this group at http://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to