Genera of Integer Lattices
Two
The genus of a
The class ZZGenus supports genera of
ZZGenus Type
ZZGenusA collection of local genus symbols (at primes) and a signature pair. Together they represent the genus of a non-degenerate integer_lattice.
sourceCreation of Genera
From an integral Lattice
From a gram matrix
genus Method
genus(A::MatElem) -> ZZGenusReturn the genus of a A.
Enumeration of genus symbols
integer_genera Method
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 Method
direct_sum(G1::ZZGenus, G2::ZZGenus) -> ZZGenusReturn the genus of the direct sum of G1 and G2.
The direct sum is defined via representatives.
sourceAttributes of the genus
signature Method
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 Method
level(G::ZZGenus) -> QQFieldElemReturn the level of this genus.
This is the denominator of the inverse gram matrix of a representative.
sourcescale Method
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 Method
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 Method
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 Method
is_integral(G::ZZGenus) -> BoolReturn whether G is a genus of integral
Discriminant group
Primary genera
is_primary_with_prime Method
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 Method
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 Method
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 Method
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 Method
local_symbol(G::ZZGenus, p) -> ZZLocalGenusReturn the local symbol at p.
Representative(s)
quadratic_space Method
quadratic_space(G::ZZGenus) -> QuadSpace{QQField, QQMatrix}Return the quadratic space defined by this genus.
sourcerational_representative Method
rational_representative(G::ZZGenus) -> QuadSpace{QQField, QQMatrix}Return the quadratic space defined by this genus.
sourcerepresentative Method
representative(G::ZZGenus) -> ZZLatCompute a representative of this genus && cache it.
sourcerepresentatives Method
representatives(G::ZZGenus) -> Vector{ZZLat}Return a list of representatives of the isometry classes in this genus.
sourcemass Method
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 Method
rescale(G::ZZGenus, a::RationalUnion) -> ZZGenusGiven a genus symbol G of G rescaled by a.
Embeddings and Representations
represents Method
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
ZZLocalGenus Type
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 Method
genus(L::ZZLat, p::IntegerUnion) -> ZZLocalGenusReturn the local genus symbol of L at the prime p.
genus Method
genus(A::QQMatrix, p::IntegerUnion) -> ZZLocalGenusReturn the local genus symbol of a Z-lattice with gram matrix A at the prime p.
Attributes
iseven Method
iseven(S::ZZLocalGenus) -> BoolReturn if the underlying p-adic lattice is even.
If p is odd, every lattice is even.
symbol Method
symbol(S::ZZLocalGenus, scale::Int) -> Vector{Int}Return the underlying lists of integers for the Jordan block of the given scale
sourcehasse_invariant Method
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
.
sourcedet Method
det(S::ZZLocalGenus) -> QQFieldElemReturn an rational representing the determinant of this genus.
sourceexcess Method
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.
sourcesignature Method
signature(S::ZZLocalGenus) -> zzModRingElemReturn the
oddity Method
oddity(S::ZZLocalGenus) -> zzModRingElemReturn the oddity of this even form. The oddity is also called the
scale Method
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 Method
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 Method
level(S::ZZLocalGenus) -> QQFieldElemReturn the maximal scale of a jordan component.
sourceRepresentative
representative Method
representative(S::ZZLocalGenus) -> ZZLatReturn an integer lattice which represents this local genus.
sourcegram_matrix Method
gram_matrix(S::ZZLocalGenus) -> MatElemReturn a gram matrix of some representative of this local genus.
sourcerescale Method
rescale(G::ZZLocalGenus, a::RationalUnion) -> ZZLocalGenusGiven a local genus symbol G of G rescaled by a.
Direct sums
direct_sum Method
direct_sum(S1::ZZLocalGenus, S2::ZZLocalGenus) -> ZZLocalGenusReturn the local genus of the direct sum of two representatives.
sourceEmbeddings/Representations
represents Method
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)
