Collections of isometries
In this section, we review methods related to collections of isometries for rational quadratic spaces and integer lattices.
Change of basis representation
Given an integer lattice $L$ and a collection $F$ of isometries of $L$, there are two ways of representing the isometries in $F$ by mean of matrices. The first way is to represent the isometries in $F$ in the standard basis of the ambient quadratic space of $L$. The second way is to represent such isometries in the given fixed basis of $L$.
Given one representation of $F$, by mean of matrices, the following two methods allow to switch to another one.
extend_to_ambient_space
— Functionextend_to_ambient_space(
L::ZZLat,
F::T;
check::Bool=false,
) where T <: Union{QQMatrix, Vector{QQMatrix}, MatrixGroup} -> T
Given $F$ being either:
- a matrix with rational entries;
- a list of matrices with rational entries;
- a matrix group over the rationals,
defining a collection of isometries of $L$, represented in the fixed basis of $L$, return the same collection but represented in the standard basis of the ambient space of $L$.
If $L$ is not of full rank in its ambient quadratic space $V$, each isometry is extended to be the identity on the quadratic space orthogonal to $L\otimes\mathbb{Q}$ inside $V$.
Arguments
- If
check
is set totrue
, the function checks whether $F$ indeed defines a collection of isometries of $L$.
restrict_to_lattice
— Functionrestrict_to_lattice(
L::ZZLat,
F::T;
check::Bool=false,
) where T <: Union{QQMatrix, Vector{QQMatrix}, MatrixGroup} -> T
Given $F$ being either:
- a matrix with rational entries;
- a list of matrices with rational entries;
- a matrix group over the rationals,
defining a collection of isometries of the ambient space $V$ of $L$ preserving $L$, represented in the standard basis of $V$, return the associated collection of isometries of $L$, represented in the fixed basis of $L$, obtained by restricting all the isometries in $F$ to $L$.
Arguments
- If
check
is set totrue
, the function checks whether $F$ indeed defines a collection of isometries of the ambient space of $L$ which preserve $L$.
Note that the second function can actually be used to restrict any collection of isometries of the ambient space of $L$ preserving $L$.
Invariant and coinvariant lattices
We provide the possibility to compute invariant and coinvariant sublattices given an orthogonal representation G
in matrix form of a collection of isometries of a given lattice L
:
coinvariant_lattice
— Methodcoinvariant_lattice(
L::ZZLat,
G::MatrixGroup;
ambient_representation::Bool=true,
check::Bool=true,
) -> ZZLat, MatrixGroup
Given an integer lattice $L$ and a group $G$ of isometries of $L$, return the coinvariant sublattice $L_G$ of $L$, together with the subgroup $H$ of isometries of $L_G$ induced by the action of $G$.
If ambient_representation
is set to true
, the isometries in $G$ and $H$ are considered as matrix representation of their action on the standard basis of the ambient space of $L$. Otherwise, they are considered as matrix representation of their action on the basis matrices of $L$ and $L_G$ respectively.
If check
is set to true
, the functions tests whether the group $G$ consists of isometries of the lattice $L$.
Examples
julia> L = root_lattice(:A, 2);
julia> G = isometry_group(L);
julia> L2, G2 = coinvariant_lattice(L, G)
(Integer lattice of rank 2 and degree 2, Matrix group of degree 2 over QQ)
julia> L == L2
true
julia> G == G2
true
invariant_lattice
— Methodinvariant_lattice(
L::ZZLat,
G::MatrixGroup;
ambient_representation::Bool=true,
check::Bool=true,
) -> ZZLat
Given an integer lattice $L$ and a group $G$ of isometries of $L$ in matrix, return the invariant sublattice $L^G$ of $L$.
If ambient_representation
is set to true
, the isometries in $G$ are considered as matrix representation of their action on the standard basis of the ambient space of $L$. Otherwise, they are considered as matrix representation of their action on the basis matrix of $L$.
If check
is set to true
, the functions tests whether the group $G$ consists of isometries of the lattice $L$.
Examples
julia> L = root_lattice(:A, 2);
julia> G = isometry_group(L);
julia> invariant_lattice(L, G)
Integer lattice of rank 0 and degree 2
with gram matrix
0 by 0 empty matrix
invariant_coinvariant_pair
— Methodinvariant_coinvariant_pair(
L::ZZLat,
F::T;
ambient_representation::Bool=true,
check::Bool=true,
) where T <: Union{QQMatrix, Vector{QQMatrix}, MatrixGroup} -> ZZLat, ZZLat, T
Given $F$ being either:
- a matrix with rational entries;
- a list of matrices with rational entries;
- a matrix group over the rationals,
representing a collection of isometries of the lattice $L$, return the invariant sublattice $L^F$ of $L$ and its coinvariant sublattice $L_F$ together with the collection $F'$ of isometries of $L_F$ induced by $F$.
If ambient_representation
is set to true
, the isometries in $F$ and $F'$ are considered as matrix representation of their action on the standard basis of the ambient space of $L$. Otherwise, they are considered as matrix representation of their action on the basis matrices of $L$ and $L_F$ respectively.
If check
is set to true
, the function tests whether the matrices in $F$ define isometries of the lattice $L$.
Examples
julia> L = root_lattice(:A, 2);
julia> G = isometry_group(L);
julia> F, C, _ = invariant_coinvariant_pair(L, matrix(last(gens(G))))
(Integer lattice of rank 1 and degree 2, Integer lattice of rank 1 and degree 2, [1 0; -1 -1])
julia> F
Integer lattice of rank 1 and degree 2
with gram matrix
[2]
julia> C
Integer lattice of rank 1 and degree 2
with gram matrix
[6]
Special isometries
Given an integer lattice $L$, any isometry $f$ of $L$ has determinant equal to $\pm 1$. We define the specialorthogonalgroup $SO(L)$ of $L$ to be the normal subgroup of $O(L)$ consisting of isometries of determinant $+1$.
special_orthogonal_group
— Methodspecial_orthogonal_group(
L::ZZLat;
kwargs...,
) -> MatrixGroup, GAPGroupHomomorphism
Given an integer lattice $L$ which is definite or of rank 2, return the subgroup $SO(L)$ of the orthogonal group of $L$ consisting of isometries with determinant $1$.
The function first computes the orthogonal group of $L$: the extra keyword arguments in kwargs
are optional arguments in the computations of such a group (see isometry_group(::ZZLat)
).
Examples
julia> D5 = root_lattice(:D, 5);
julia> H, _ = special_orthogonal_group(D5);
julia> order(H)
1920
Similarly, given any finite group $G$ of isometries of $L$, one can compute the special subgroup $G\cap SO(L)$ of $G$.
special_subgroup
— Methodspecial_subgroup(
L::ZZLat,
G::MatrixGroup;
ambient_representation::Bool=true,
check::Bool=true
) -> MatrixGroup, GAPGroupHomomorphism
Given an integer lattice $L$ and a group $G$ of isometries of $L$, return the normal subgroup $S$ of $G$ consisting of isometries with determinant $+1$, together with embedding $S \to G$.
If ambient_representation
is set to true
, then the isometries in $G$ are considered as matrix representation of their action on the standard basis of the ambient space of $L$. Otherwise, they are considered as matrix representation of their action on the basis matrix of $L$.
Examples
julia> A4 = root_lattice(:A, 4);
julia> OA4 = isometry_group(A4);
julia> H, _ = special_subgroup(A4, OA4)
(Matrix group of degree 4 over QQ, Hom: H -> OA4)
julia> index(OA4, H)
2
Stable isometries
Given an integral integer lattice $L$, any isometry $f$ of $L$ acts on the discriminant group $D_L$ of $L$. We define the stableorthogonalgroup $O^\#(L)$ of $L$ to be the normal subgroup of $O(L)$ consisting of isometries acting trivially on $D_L$.
stable_orthogonal_group
— Methodstable_orthogonal_group(
L::ZZLat;
kwargs...,
) -> MatrixGroup, GAPGroupHomomorphism
Given an integer lattice $L$ which is definite or of rank 2, return the subgroup $O^\#(L)$ of the orthogonal group of $L$ consisting of isometries acting trivially on the discriminant group of $L$.
The function first computes the orthogonal group of $L$: the extra keyword arguments in kwargs
are optional arguments in the computations of such a group (see isometry_group(::ZZLat)
).
Examples
julia> A5 = root_lattice(:A, 5);
julia> H, _ = stable_orthogonal_group(A5);
julia> order(H)
720
Similarly, given any finite group $G$ of isometries of $L$, one can compute the stable subgroup $G\cap O^\#(L)$ of $G$.
stable_subgroup
— Methodstable_subgroup(
L::ZZLat,
G::MatrixGroup;
ambient_representation::Bool=true,
check::Bool=true,
) -> MatrixGroup, GAPGroupHomomorphism
Given an integer lattice $L$ and a group $G$ of isometries of $L$, return the kernel $G^\#$ of the orthogonal representation $G\to O(D_L)$ of $G$ on the discriminant group $D_L$ of $L$, together with embedding $G^\# \to G$.
If ambient_representation
is set to true
, then the isometries in $G$ are considered as matrix representation of their action on the standard basis of the ambient space of $L$. Otherwise, they are considered as matrix representation of their action on the basis matrix of $L$.
See discriminant_representation
.
Examples
julia> A4 = root_lattice(:A,4);
julia> OA4 = isometry_group(A4);
julia> H, _ = stable_subgroup(A4, OA4)
(Matrix group of degree 4 over QQ, Hom: H -> OA4)
julia> index(OA4, H)
2
Stabilizers
stabilizer_discriminant_subgroup
— Functionstabilizer_discriminant_subgroup(
L::ZZLat,
G::MatrixGroup,
H::TorQuadModule;
pointwise::Bool=false,
ambient_representation::Bool=true,
check::Bool=true,
) -> MatrixGroup, GAPGroupHomomorphism
Given an integral lattice $L$, a group $G$ of isometries of $L$ and a submodule $H$ of the discriminant group $D_L$ of $L$, return the largest subgroup of $G$ preserving $H$ under its action on $D_L$. This is also the largest subgroup of $G$ acting on the overlattice lattice of $L$ determined by $H$.
Arguments
If
pointwise
is set totrue
, return the largest subgroup of $G$ fixing $H$ pointwise;If
ambient_representation
is set totrue
, the group $G$ is considered as a group of $\mathbb{Q}$-linear automorphisms on the ambient space of $L$.If
check
is set totrue
, the functions tests whether $G$ defines a group of isometries of $L$ and whether $H$ is a submodule of $D_L$.
stabilizer_in_diagonal_action
— Functionstabilizer_in_diagonal_action(
L::ZZLat,
K::ZZLat,
N::ZZLat,
OK::MatrixGroup,
ON::MatrixGroup;
check::Bool=true,
) -> Vector{QQMatrix}
Given a primitive extension $K\oplus N \subseteq L$ of even lattices, and given two groups of isometries $OK$ and $ON$ of $K$ and $N$, respectively, return generators for the setwise stabilizer of $L$ in $OK\times ON$, seen as a group of isometries of the ambient space of $L$.
Arguments
- If
check
is set totrue
, the function tests whether $L$ is even, $K$ and $N$ are orthogonal and both primitive in $L$, and $K\oplus N$ and $L$ are rationally equal.
maximal_extension
— Methodmaximal_extension(
L::ZZLat,
S::ZZLat,
OS::MatrixGroup;
check::Bool=true,
kwargs...,
) -> MatrixGroup
Given a primitive sublattice $S$ of an even lattice $L$ whose orthogonal complement $K$ is definite or of rank 2, and given a group $OS$ of isometries $S$, return the largest group $P$ of isometries of $L$ preserving $S$ and whose restriction to $S$ is contained in $OS$.
By definition, $P$ is the setwise stabilizer of $L$ in $O(K)\times OS$ where $O(K)$ is the full orthogonal group of $K$.
Arguments
If
check
is set totrue
, the function tests whether $L$ is even, $S$ is primitive in $L$ and $K$ is definite or of rank 2.The keyword arguments in
kwargs
are optional arguments for the computation of $O(K)$; seeisometry_group(::ZZLat)
.
stabilizer_in_orthogonal_group
— Functionstabilizer_in_orthogonal_group(
L::ZZLat,
B::QQMatrix;
stable::Bool=false,
special::Bool=false,
check::Bool=true,
kwargs...,
) -> MatrixGroup
Given $B$ a matrix with rational entries whose set of rows represent a finite collection $F$ of vectors in the rational span $L\otimes \mathbb{Q}$ of the even lattice $L$, return the subgroup
\[S_F := \{ f \in O(L) | \forall v\in F : f(v) = v\} \subseteq O(L)\]
defining the joint stabilizers, in the orthogonal group of $L$, of the vectors in $F$.
The implementation requires that the largest saturated submodule $K$ of $L$ orthogonal to $B$ is definite or of rank 2.
Arguments
If
stable
is set totrue
, return the intersection of $S_F$ with the stable orthogonal group $O^\#(L)$ of $L$.If
special
is set totrue
, return the intersection of $S_F$ with the special orthogonal group $SO(L)$ of $L$.If both of the previous are
true
, then return the intersection $S_F\cap O^\#(L)\cap SO(L)$.If
check
is set to true, the function tests whether the lattice $L$ is even, the matrix $B$ defines a set of vectors in $L\otimes \mathbb{Q}$ and whether the lattice $K$ is definite or of rank 2.The function first computes the orthogonal group of $K$: the extra keyword arguments in
kwargs
are optional arguments in the computations of such a group (seeisometry_group(::ZZLat)
).
Examples
julia> A2 = root_lattice(:A, 2)
Integer lattice of rank 2 and degree 2
with gram matrix
[ 2 -1]
[-1 2]
julia> v = QQ[1 1;]
[1 1]
julia> H = stabilizer_in_orthogonal_group(A2, v)
Matrix group of degree 2
over rational field
julia> order(H)
2
pointwise_stabilizer_in_orthogonal_group
— Functionpointwise_stabilizer_in_orthogonal_group(
L::ZZLat,
S::ZZLat;
kwargs...,
) -> MatrixGroup
Given a sublattice $S$ of an even lattice $L$, return the subgroup
\[\{ f \in O(L) | \forall v\in S : f(v) = v\} \subseteq O(L)\]
defining the pointwise stabilizer, in the orthogonal group of $L$, of the sublattice $S$ of $L$.
Arguments
The function requires that the largest saturated submodule $K$ of $L$ orthogonal to $S$ is definite or of rank 2.
For the other keyword arguments, see
stabilizer_in_orthogonal_group(::ZZLat, ::QQMatrix)
.
Examples
julia> A4 = root_lattice(:A, 4)
Integer lattice of rank 4 and degree 4
with gram matrix
[ 2 -1 0 0]
[-1 2 -1 0]
[ 0 -1 2 -1]
[ 0 0 -1 2]
julia> A2 = lattice_in_same_ambient_space(A4, QQ[1 0 0 0; 0 1 0 0])
Integer lattice of rank 2 and degree 4
with gram matrix
[ 2 -1]
[-1 2]
julia> H = pointwise_stabilizer_in_orthogonal_group(A4, A2)
Matrix group of degree 4
over rational field
julia> order(H)
2
setwise_stabilizer_in_orthogonal_group
— Functionsetwise_stabilizer_in_orthogonal_group(
L::ZZLat,
S::Union{QQMatrix, ZZLat};
stable::Bool=false,
special::Bool=false,
check::Bool=true,
kwargs...,
) -> MatrixGroup
Given a sublattice $S$ of an even lattice $L$, or a generating set of vectors given as rows in a matrix with rational entries, return the subgroup
\[\{ f \in O(L) | f(S) \subseteq S\} \subseteq O(L)\]
defining the setwise stabilizer, in the orthogonal group of $L$, of the sublattice $S$.
Arguments
The function requires that $S$ and its orthogonal complement $T$ in $L$ are both definite or of rank 2. However $S$ need not be primitive in $L$.
If
check
is set totrue
, the function tests whether $L$ is even, whether $S$ is a sublattice of $L$, and whether $S$ and $T$ are definite or of rank 2.For the other keyword arguments, see
stabilizer_in_orthogonal_group(::ZZLat, ::QQMatrix)
.
Examples
julia> A2 = root_lattice(:A, 2)
Integer lattice of rank 2 and degree 2
with gram matrix
[ 2 -1]
[-1 2]
julia> L = lattice_in_same_ambient_space(A2, QQ[1 1; 1 -1])
Integer lattice of rank 2 and degree 2
with gram matrix
[2 0]
[0 6]
julia> H1 = setwise_stabilizer_in_orthogonal_group(A2, L)
Matrix group of degree 2
over rational field
julia> describe(H1)
"C2 x C2"
julia> H2 = setwise_stabilizer_in_orthogonal_group(A2, L; stable=true, special=true)
Matrix group of degree 2
over rational field
julia> order(H2)
1
pointwise_stabilizer_orthogonal_complement_in_orthogonal_group
— Functionpointwise_stabilizer_orthogonal_complement_in_orthogonal_group(
L::ZZLat,
S::Union{QQMatrix, ZZLat};
check::Bool=true,
kwargs...,
) -> MatrixGroup
Given a sublattice $S$ of an even lattice $L$, or a generating set of vectors given as rows in a matrix with rational entries, return the pointwise stabilizer, in the orthogonal group of $L$, of the orthogonal complement of $S$ in $L$.
Arguments
The function requires that $S$ is definite or of rank 2. However $S$ need not be primitive in $L$.
If
check
is set totrue
, the function tests whether $L$ is even, whether $S$ is a sublattice of $L$, and whether $S$ is definite or of rank 2.For the other keyword arguments, see
stabilizer_in_orthogonal_group(::ZZLat, ::QQMatrix)
.
Examples
julia> A2 = root_lattice(:A, 2)
Integer lattice of rank 2 and degree 2
with gram matrix
[ 2 -1]
[-1 2]
julia> v = QQ[1 1;]
[1 1]
julia> H1 = pointwise_stabilizer_orthogonal_complement_in_orthogonal_group(A2, v)
Matrix group of degree 2
over rational field
julia> H2 = pointwise_stabilizer_orthogonal_complement_in_orthogonal_group(A2, v; special=true)
Matrix group of degree 2
over rational field
julia> index(H1, H2)
2
Saturation
Given an integer lattice $L$ and two groups of isometries $H \leq G$ of $L$, we define the saturation of $H$ in $G$ to be the kernel of group homomorphism
\[G(L^H) \to O(L^H)\]
where $G(L^H)$ denotes the stabilizer of the invariant sublattice $L^H$ in $G$. In other words, the saturation of $H$ in $G$ is the pointwise stabilizer of $L^H$ in $G$. In the case where the group $G$ is finite, one can actually explictly compute such a group:
saturation
— Methodsaturation(
L::ZZLat,
G::MatrixGroup,
H::MatrixGroup;
ambient_representation::Bool=true,
check::Bool=true,
kwargs...,
) -> MatrixGroup
Given an even lattice $L$ and two finite group of isometries $H \leq G$ of $L$ such that the coinvariant sublattice $S$ of $H$ is definite, return the saturation of $H$ in the group $G$, that is the pointwize stabilizer in $G$ of its invariant sublattice associated to $H$.
See saturation(::ZZLat, ::MatrixGroup)
.
Arguments
If
ambient_representation
is set totrue
, the groups $G$ and $H$ are considered as a group of $\mathbb{Q}$-linear automorphisms on the ambient space of $L$.If
check
is set totrue
, the function tests whether $G$ is a finite group of isometries of $L$, whether $H$ is contained in $G$ and whether the associated coinvariant sublattice $S$ is definite.The keyword arguments in
kwargs
are optional arguments for the computation of isometry group of lattices (seeisometry_group(::ZZLat)
).
In general, if the coinvariant sublattice $L_H$ of the group $H$ is definite or of rank 2, one can compute the saturation of $H$ inside the orthogonal group $O(L)$ of $L$.
saturation
— Methodsaturation(
L::ZZLat,
G::MatrixGroup;
ambient_representation::Bool=true,
check::Bool=true,
special::Bool=false,
stable::Bool=false,
kwargs...,
) -> MatrixGroup
Given an even lattice $L$ and a group of isometries $G$ of $L$ whose associated coinvariant sublattice $S$ is definite or of rank 2, return the saturation of $G$ in the orthogonal group $O(L)$ of $L$, that is the pointwize stabilizer in $O(L)$ of its invariant sublattice.
See pointwise_stabilizer_in_orthogonal_group
.
Arguments
If
ambient_representation
is set totrue
, the group $G$ is considered as a group of $\mathbb{Q}$-linear automorphisms on the ambient space of $L$.If
check
is set totrue
, the function tests whether $G$ defines a group of isometries of the lattice $L$ and whether the associated coinvariant sublattice $S$ is definite or of rank 2.If
special
is set totrue
, the function returns the saturation of $G$ in the special orthogonal group $SO(L)$ of $L$. Note that this requires $G$ to consist also of special isometries. Ifcheck
is set totrue
, the function tests in addition whether all isometries in $G$ have determinantIf
stable
is set totrue
, the function returns the saturation of $G$ in the stable orthogonal group $O^\#(L)$ of $L$. Note that this requires $G$ to consist also of stable isometries. Ifcheck
is set totrue
, the function tests in addition whether all isometries in $G$ act trivially on the discriminant group of $L$.The keyword arguments in
kwargs
are optional arguments for the computation of isometry group of lattices (seeisometry_group(::ZZLat)
).
Finally, whenever the coinvariant lattice $L_H$ of $H$ is definite, it is possible to decide whether $H$ is saturated in the given groups as above.
is_saturated_with_saturation
— Functionis_saturated_with_saturation(
L::ZZLat,
[G::MatrixGroup],
H::MatrixGroup;
kwargs...,
) -> Bool, MatrixGroup
Given a lattice $L$ and a group of isometries $H$ of $L$ with definite coinvariant sublattice$S$ , return whether the group $H$ is saturated in the orthogonal group $O(L)$ of $L$, meaning $H$ is the pointwize stabilizer in $O(L)$ of its invariant sublattice. The second returned output is the saturation of $H$ in $O(L)$.
Alternatively, one can ask whether $H$ is saturated in a given finite group $G$ of isometries of $L$ containing $H$.
Arguments
- See
saturation(::ZZLat, ::MatrixGroup)
andsaturation(::ZZLat, ::MatrixGroup, ::MatrixGroup)
for the optional keyword arguments.
Isometry checks
Given a rational quadratic space or an integer lattice, one can ask whether a collection of matrices with rational entries consists of isometries of the given object. The following six functions are not exported, they can be used for input checks in one's functions.
is_isometry
— Methodis_isometry(
Q::QuadSpace,
f::QQMatrix;
is_special::Bool=false,
) -> Bool
Return whether $f$ defines an isometry of the quadratic space $Q$.
Arguments
- If
is_special
is set totrue
, return whether in addition $f$ has determinant 1.
is_isometry
— Methodis_isometry(
L::ZZLat,
f::QQMatrix,
ambient_representation::Bool = false;
is_special::Bool=false,
is_stable::Bool=false,
) -> Bool
Return whether $f$ defines an isometry of the lattice $L$.
Arguments
If
is_special
is set totrue
, return whether in addition $f$ has determinant 1.If
is_stable
is set totrue
, return whether in addition $f$ acts trivially on the discriminant group of $L$ (note: this requires $L$ being integral).If
ambient_representation
is set totrue
, $f$ is considered as a $\mathbb{Q}$-linear map on the ambient space of $L$.
is_isometry_list
— Methodis_isometry_list(
Q::QuadSpace,
V::Vector{QQMatrix};
is_special::Bool=false,
) -> Bool
Return whether the matrices in $V$ define isometries of the quadratic space $Q$.
Arguments
- If
is_special
is set totrue
, return whether in addition all isometries in $V$ have determinant 1.
is_isometry_list
— Methodis_isometry_list(
L::ZZLat,
V::Vector{QQMatrix},
ambient_representation::Bool = false;
is_special::Bool=false,
is_stable::Bool = false,
) -> Bool
Return whether the matrices in $V$ define isometries of the lattice $L$.
Arguments
- For the optional arguments, see [
is_isometry(::ZZLat, ::QQMatrix)
].
is_isometry_group
— Methodis_isometry_group(
Q::QuadSpace
G::MatrixGroup;
is_special::Bool=false,
) -> Bool
Return whether the matrix $G$ defines a group of isometries of the quadratic space $Q$.
Arguments
- If
is_special
is set totrue
, return whether in addition all isometries in $G$ have determinant 1.
is_isometry_group
— Methodis_isometry_group(
L::ZZLat,
G::MatrixGroup,
ambient_representation::Bool = false;
is_special::Bool=false,
is_stable::Bool=false,
) -> Bool
Return whether the matrix $G$ defines a group of isometries of the lattice $L$.
Arguments
- For the optional arguments, see [
is_isometry(::ZZLat, ::QQMatrix)
].
Given an integer lattice with isometry $(L, f)$, one can also ask whether the isometry $f$ satisfies some properties.
is_stable_isometry
— Methodis_stable_isometry(Lf::ZZLatWithIsom) -> Bool
Given an integral $\mathbb{Z}$-lattice with isometry $(L, f)$, return whether the isometry $f$ acts trivially on the discriminant group of $L$.
Examples
julia> A2 = root_lattice(:A, 2);
julia> f = matrix(QQ, 2, 2, [0 -1; 1 1]);
julia> Lf = integer_lattice_with_isometry(A2, f);
julia> is_stable_isometry(Lf)
false
is_special_isometry
— Methodis_special_isometry(Lf::ZZLatWithIsom) -> Bool
Given a $\mathbb{Z}$-lattice with isometry $(L, f)$, return whether the isometry $f$ has determinant $+1$.
Examples
julia> A2 = root_lattice(:A, 2);
julia> f = matrix(QQ, 2, 2, [0 -1; 1 1]);
julia> Lf = integer_lattice_with_isometry(A2, f);
julia> is_special_isometry(Lf)
true