Genera of Integer Lattices
Two
The genus of a
The class ZZGenus supports genera of
ZZGenusA collection of local genus symbols (at primes) and a signature pair. Together they represent the genus of a non-degenerate integer_lattice.
Creation of Genera
From an integral Lattice
From a gram matrix
genus(A::MatElem) -> ZZGenusReturn the genus of a A.
Enumeration of genus symbols
integer_genera(sig_pair::Vector{Int}, determinant::RationalUnion;
min_scale::RationalUnion = min(one(QQ), QQ(abs(determinant))),
max_scale::RationalUnion = max(one(QQ), QQ(abs(determinant))),
even=false) -> Vector{ZZGenus}Return a list of all genera with the given conditions. Genera of non-integral
Arguments
sig_pair: a pair of non-negative integers giving the signaturedeterminant: a rational number; the sign is ignoredmin_scale: a rational number; return only genera whose scale is an integer multiple ofmin_scale(default:min(one(QQ), QQ(abs(determinant))))max_scale: a rational number; return only genera such thatmax_scaleis an integer multiple of the scale (default:max(one(QQ), QQ(abs(determinant))))even: boolean; if set to true, return only the even genera (default:false)
From other genus symbols
direct_sum(G1::ZZGenus, G2::ZZGenus) -> ZZGenusReturn the genus of the direct sum of G1 and G2.
The direct sum is defined via representatives.
Attributes of the genus
signature(G::ZZGenus) -> IntReturn the signature of this genus.
The signature is p - n where p is the number of positive eigenvalues and n the number of negative eigenvalues.
level(G::ZZGenus) -> QQFieldElemReturn the level of this genus.
This is the denominator of the inverse gram matrix of a representative.
scale(G::ZZGenus) -> QQFieldElemReturn the scale of this genus.
Let L be a lattice with bilinear form b. The scale of (L,b) is defined as the ideal b(L,L).
norm(G::ZZGenus) -> QQFieldElemReturn the norm of this genus.
Let L be a lattice with bilinear form b. The norm of (L,b) is defined as the ideal generated by
primes(G::ZZGenus) -> Vector{ZZRingElem}Return the list of primes of the local symbols of G.
Note that 2 is always in the output since the 2-adic symbol of a ZZGenus is, by convention, always defined.
is_integral(G::ZZGenus) -> BoolReturn whether G is a genus of integral
Discriminant group
Primary genera
is_primary_with_prime(G::ZZGenus) -> Bool, ZZRingElemGiven a genus of G, return whether it is primary, that is whether the bilinear form is integral and the associated discriminant form (see discriminant_group) is a p-group for some prime number p. In case it is, p is also returned as second output.
Note that for unimodular genera, this function returns (true, 1). If the genus is not primary, the second return value is -1 by default.
is_primary(G::ZZGenus, p::Union{Integer, ZZRingElem}) -> BoolGiven a genus of integral G and a prime number p, return whether G is p-primary, that is whether the associated discriminant form (see discriminant_group) is a p-group.
is_elementary_with_prime(G::ZZGenus) -> Bool, ZZRingElemGiven a genus of G, return whether it is elementary, that is whether the bilinear form is inegtral and the associated discriminant form (see discriminant_group) is an elementary p-group for some prime number p. In case it is, p is also returned as second output.
Note that for unimodular genera, this function returns (true, 1). If the genus is not elementary, the second return value is -1 by default.
is_elementary(G::ZZGenus, p::Union{Integer, ZZRingElem}) -> BoolGiven a genus of integral G and a prime number p, return whether G is p-elementary, that is whether its associated discriminant form (see discriminant_group) is an elementary p-group.
local Symbol
local_symbol(G::ZZGenus, p) -> ZZLocalGenusReturn the local symbol at p.
Representative(s)
quadratic_space(G::ZZGenus) -> QuadSpace{QQField, QQMatrix}Return the quadratic space defined by this genus.
rational_representative(G::ZZGenus) -> QuadSpace{QQField, QQMatrix}Return the quadratic space defined by this genus.
representative(G::ZZGenus) -> ZZLatCompute a representative of this genus && cache it.
representatives(G::ZZGenus) -> Vector{ZZLat}Return a list of representatives of the isometry classes in this genus.
mass(G::ZZGenus) -> QQFieldElemReturn the mass of this genus.
The genus must be definite. Let L_1, ... L_n be a complete list of representatives of the isometry classes in this genus. Its mass is defined as
rescale(G::ZZGenus, a::RationalUnion) -> ZZGenusGiven a genus symbol G of G rescaled by a.
Embeddings and Representations
represents(G1::ZZGenus, G2::ZZGenus) -> BoolReturn if G1 represents G2. That is if some element in the genus of G1 represents some element in the genus of G2.
Local genus Symbols
ZZLocalGenusLocal genus symbol over a p-adic ring.
The genus symbol of a component p^m A for odd prime = p is of the form (m,n,d), where
m= valuation of the componentn= rank of Ad = det(A) \in \{1,u\}for a normalized quadratic non-residueu.
The genus symbol of a component 2^m A is of the form (m, n, s, d, o), where
m= valuation of the componentn= rank ofAd=det(A)in{1,3,5,7}s= 0 (or 1) if even (or odd)o= oddity ofA(= 0 if s = 0) inZ/8Z= the trace of the diagonalization ofA
The genus symbol is a list of such symbols (ordered by m) for each of the Jordan blocks A_1,...,A_t.
Reference: [5] Chapter 15, Section 7.
Arguments
prime: a prime numbersymbol: the list of invariants for Jordan blocksA_t,...,A_tgiven as a list of lists of integers
Creation
genus(L::ZZLat, p::IntegerUnion) -> ZZLocalGenusReturn the local genus symbol of L at the prime p.
genus(A::QQMatrix, p::IntegerUnion) -> ZZLocalGenusReturn the local genus symbol of a Z-lattice with gram matrix A at the prime p.
Attributes
iseven(S::ZZLocalGenus) -> BoolReturn if the underlying p-adic lattice is even.
If p is odd, every lattice is even.
symbol(S::ZZLocalGenus, scale::Int) -> Vector{Int}Return the underlying lists of integers for the Jordan block of the given scale
hasse_invariant(S::ZZLocalGenus) -> IntReturn the Hasse invariant of a representative. If the representative is diagonal (a_1, ... , a_n) Then the Hasse invariant is
.
det(S::ZZLocalGenus) -> QQFieldElemReturn an rational representing the determinant of this genus.
excess(S::ZZLocalGenus) -> zzModRingElemReturn the p-excess of the quadratic form whose Hessian matrix is the symmetric matrix A.
When p = 2 the p-excess is called the oddity. The p-excess is always even && is divisible by 4 if p is congruent 1 mod 4.
Reference
[5] pp 370-371.
signature(S::ZZLocalGenus) -> zzModRingElemReturn the
oddity(S::ZZLocalGenus) -> zzModRingElemReturn the oddity of this even form. The oddity is also called the
scale(S::ZZLocalGenus) -> QQFieldElemReturn the scale of this local genus.
Let L be a lattice with bilinear form b. The scale of (L,b) is defined as the ideal b(L,L).
norm(S::ZZLocalGenus) -> QQFieldElemReturn the norm of this local genus.
Let L be a lattice with bilinear form b. The norm of (L,b) is defined as the ideal generated by
level(S::ZZLocalGenus) -> QQFieldElemReturn the maximal scale of a jordan component.
Representative
representative(S::ZZLocalGenus) -> ZZLatReturn an integer lattice which represents this local genus.
gram_matrix(S::ZZLocalGenus) -> MatElemReturn a gram matrix of some representative of this local genus.
rescale(G::ZZLocalGenus, a::RationalUnion) -> ZZLocalGenusGiven a local genus symbol G of G rescaled by a.
Direct sums
direct_sum(S1::ZZLocalGenus, S2::ZZLocalGenus) -> ZZLocalGenusReturn the local genus of the direct sum of two representatives.
Embeddings/Representations
represents(g1::ZZLocalGenus, g2::ZZLocalGenus) -> BoolReturn whether g1 represents g2.
Based on O'Meara Integral Representations of Quadratic Forms Over Local Fields Note that for p == 2 there is a typo in O'Meara Theorem 3 (V). The correct statement is (V)