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.