Lattice Euclidean Group Elements

The classes here are used to return particular isomorphisms of PPL lattice polytopes.

class sage.geometry.polyhedron.lattice_euclidean_group_element.LatticeEuclideanGroupElement(A, b)[source]

Bases: SageObject

An element of the lattice Euclidean group.

Note that this is just intended as a container for results from LatticePolytope_PPL. There is no group-theoretic functionality to speak of.

EXAMPLES:

sage: from sage.geometry.polyhedron.ppl_lattice_polytope import LatticePolytope_PPL, C_Polyhedron
sage: from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
sage: M = LatticeEuclideanGroupElement([[1,2],[2,3],[-1,2]], [1,2,3])
sage: M
The map A*x+b with A=
[ 1  2]
[ 2  3]
[-1  2]
b =
(1, 2, 3)
sage: M._A
[ 1  2]
[ 2  3]
[-1  2]
sage: M._b
(1, 2, 3)
sage: M(vector([0,0]))
(1, 2, 3)
sage: M(LatticePolytope_PPL((0,0),(1,0),(0,1)))
A 2-dimensional lattice polytope in ZZ^3 with 3 vertices
sage: _.vertices()
((1, 2, 3), (2, 4, 2), (3, 5, 5))
>>> from sage.all import *
>>> from sage.geometry.polyhedron.ppl_lattice_polytope import LatticePolytope_PPL, C_Polyhedron
>>> from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
>>> M = LatticeEuclideanGroupElement([[Integer(1),Integer(2)],[Integer(2),Integer(3)],[-Integer(1),Integer(2)]], [Integer(1),Integer(2),Integer(3)])
>>> M
The map A*x+b with A=
[ 1  2]
[ 2  3]
[-1  2]
b =
(1, 2, 3)
>>> M._A
[ 1  2]
[ 2  3]
[-1  2]
>>> M._b
(1, 2, 3)
>>> M(vector([Integer(0),Integer(0)]))
(1, 2, 3)
>>> M(LatticePolytope_PPL((Integer(0),Integer(0)),(Integer(1),Integer(0)),(Integer(0),Integer(1))))
A 2-dimensional lattice polytope in ZZ^3 with 3 vertices
>>> _.vertices()
((1, 2, 3), (2, 4, 2), (3, 5, 5))
from sage.geometry.polyhedron.ppl_lattice_polytope import LatticePolytope_PPL, C_Polyhedron
from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
M = LatticeEuclideanGroupElement([[1,2],[2,3],[-1,2]], [1,2,3])
M
M._A
M._b
M(vector([0,0]))
M(LatticePolytope_PPL((0,0),(1,0),(0,1)))
_.vertices()
codomain_dim()[source]

Return the dimension of the codomain lattice.

EXAMPLES:

sage: from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
sage: M = LatticeEuclideanGroupElement([[1,2],[2,3],[-1,2]], [1,2,3])
sage: M
The map A*x+b with A=
[ 1  2]
[ 2  3]
[-1  2]
b =
(1, 2, 3)
sage: M.codomain_dim()
3
>>> from sage.all import *
>>> from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
>>> M = LatticeEuclideanGroupElement([[Integer(1),Integer(2)],[Integer(2),Integer(3)],[-Integer(1),Integer(2)]], [Integer(1),Integer(2),Integer(3)])
>>> M
The map A*x+b with A=
[ 1  2]
[ 2  3]
[-1  2]
b =
(1, 2, 3)
>>> M.codomain_dim()
3
from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
M = LatticeEuclideanGroupElement([[1,2],[2,3],[-1,2]], [1,2,3])
M
M.codomain_dim()

Note that this is not the same as the rank. In fact, the codomain dimension depends only on the matrix shape, and not on the rank of the linear mapping:

sage: zero_map = LatticeEuclideanGroupElement([[0,0],[0,0],[0,0]], [0,0,0])
sage: zero_map.codomain_dim()
3
>>> from sage.all import *
>>> zero_map = LatticeEuclideanGroupElement([[Integer(0),Integer(0)],[Integer(0),Integer(0)],[Integer(0),Integer(0)]], [Integer(0),Integer(0),Integer(0)])
>>> zero_map.codomain_dim()
3
zero_map = LatticeEuclideanGroupElement([[0,0],[0,0],[0,0]], [0,0,0])
zero_map.codomain_dim()
domain_dim()[source]

Return the dimension of the domain lattice.

EXAMPLES:

sage: from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
sage: M = LatticeEuclideanGroupElement([[1,2],[2,3],[-1,2]], [1,2,3])
sage: M
The map A*x+b with A=
[ 1  2]
[ 2  3]
[-1  2]
b =
(1, 2, 3)
sage: M.domain_dim()
2
>>> from sage.all import *
>>> from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
>>> M = LatticeEuclideanGroupElement([[Integer(1),Integer(2)],[Integer(2),Integer(3)],[-Integer(1),Integer(2)]], [Integer(1),Integer(2),Integer(3)])
>>> M
The map A*x+b with A=
[ 1  2]
[ 2  3]
[-1  2]
b =
(1, 2, 3)
>>> M.domain_dim()
2
from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticeEuclideanGroupElement
M = LatticeEuclideanGroupElement([[1,2],[2,3],[-1,2]], [1,2,3])
M
M.domain_dim()
exception sage.geometry.polyhedron.lattice_euclidean_group_element.LatticePolytopeError[source]

Bases: Exception

Base class for errors from lattice polytopes

exception sage.geometry.polyhedron.lattice_euclidean_group_element.LatticePolytopeNoEmbeddingError[source]

Bases: LatticePolytopeError

Raised when no embedding of the desired kind can be found.

exception sage.geometry.polyhedron.lattice_euclidean_group_element.LatticePolytopesNotIsomorphicError[source]

Bases: LatticePolytopeError

Raised when two lattice polytopes are not isomorphic.