Genera for hermitian lattices
Local genus symbols
Definition 8.3.1 ([Kir16]) Let $L$ be a hermitian lattice over $E/K$ and let $\mathfrak p$ be a prime ideal of $\mathcal O_K$. Let $\mathfrak P$ be the largest ideal of $\mathcal O_E$ over $\mathfrak p$ being invariant under the involution of $E$. We suppose that we are given a Jordan decomposition
\[ L_{\mathfrak p} = \perp_{i=1}^tL_i\]
where the Jordan block $L_i$ is $\mathfrak P^{s_i}$-modular for $1 \leq i \leq t$, for a strictly increasing sequence of integers $s_1 < \ldots < s_t$. In particular, $\mathfrak s(L_i) = \mathfrak P^{s_i}$. Then, the local genus symbol $g(L, \mathfrak p)$ of $L_{\mathfrak p}$ is defined to be:
- if $\mathfrak p$ is good, i.e. non ramified and non dyadic,
\[ g(L, \mathfrak p) := [(s_1, r_1, d_1), \ldots, (s_t, r_t, d_t)]\]
where $d_i = 1$ if the determinant (resp. discriminant) of $L_i$ is a norm in $K_{\mathfrak p}^{\times}$, and $d_i = -1$ otherwise, and $r_i := \text{rank}(L_i)$ for all i;
- if $\mathfrak p$ is bad,
\[ g(L, \mathfrak p) := [(s_1, r_1, d_1, n_1), \ldots, (s_t, r_t, d_t, n_t)]\]
where for all i, $n_i := \text{ord}_{\mathfrak p}(\mathfrak n(L_i))$
Note that we define the scale and the norm of the lattice $L_i$ ($1 \leq i \leq n$) defined over the extension of local fields $E_{\mathfrak P}/K_{\mathfrak p}$ similarly to the ones of $L$, by extending by continuity the sesquilinear form of the ambient space of $L$ to the completion. Regarding the determinant (resp. discriminant), it is defined as the determinant of the Gram matrix associated to a basis of $L_i$ relatively to the extension of the sesquilinear form (resp. $(-1)^{(m(m-1)/2}$ times the determinant, where $m$ is the rank of $L_i$).
We call any tuple in $g := g(L, \mathfrak p) = [g_1, \ldots, g_t]$ a Jordan block of $g$ since it corresponds to invariants of a Jordan block of the completion of the lattice $L$ at $\mathfrak p$. For any such block $g_i$, we call respectively $s_i, r_i, d_i, n_i$ the scale, the rank, the determinant class (resp. discriminant class) and the norm of $g_i$. Note that the norm is necessary only when the prime ideal is bad.
We say that two hermitian lattices $L$ and $L'$ over $E/K$ are in the same local genus at $\mathfrak p$ if $g(L, \mathfrak p) = g(L', \mathfrak p)$.
Creation of local genus symbols
There are two ways of creating a local genus symbol for hermitian lattices:
- either abstractly, by choosing the extension $E/K$, the prime ideal $\mathfrak p$ of $\mathcal O_K$, the Jordan blocks
dataand the type of the $d_i$'s (either determinant class:detor discriminant class:disc);
genus(HermLat, E::NumField, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, data::Vector; type::Symbol = :det,
check::Bool = false)
-> HermLocalGenus- or by constructing the local genus symbol of the completion of a hermitian lattice $L$ over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$.
genus(L::HermLat, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> HermLocalGenusExamples
We will construct two examples for the rest of this section. Note that the prime chosen here is bad.
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det)
Local genus symbol for hermitian lattices
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
Prime ideal: <2, a>
Jordan blocks (scale, rank, det, norm):
(0, 1, +, 0)
(2, 2, -, 1)
julia> D = matrix(E, 3, 3, [5//2*a - 4, 0, 0, 0, a, a, 0, a, -4*a + 8]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), map(E, [b, 0, 0]), map(E, [a*b, 0, 0]), map(E, [0, 1, 0]), map(E, [0, a, 0]), map(E, [0, b, 0]), map(E, [0, a*b, 0]), map(E, [0, 0, 1]), map(E, [0, 0, a]), map(E, [0, 0, b]), map(E, [0, 0, a*b])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> g2 = genus(L, p)
Local genus symbol for hermitian lattices
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
Prime ideal: <2, a>
Jordan blocks (scale, rank, det, norm):
(-2, 1, +, -1)
(2, 2, +, 1)Attributes
base_field — Method
base_field(g::HermLocalGenus) -> NumFieldGiven a local genus symbol g for hermitian lattices over $E/K$, return E.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> length(g1)
2
julia> base_field(g1)
Relative number field with defining polynomial t^2 - a
over number field with defining polynomial x^2 - 2
over rational field
julia> prime(g1)
Ideal of maximal order of number field of degree 2 over QQ
of norm 2
of minimum 2
with 2-normal generators [2, a]Invariants
scale — Method
scale(g::HermLocalGenus, i::Int) -> IntGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime $\mathfrak p$ of $\mathcal O_K$, return the $\mathfrak P$-valuation of the scale of the ith Jordan block of g, where $\mathfrak P$ is a prime ideal of $\mathcal O_E$ lying over $\mathfrak p$.
scale — Method
scale(g::HermLocalGenus) -> AbsSimpleNumFieldOrderFractionalIdealGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime $\mathfrak p$ of $\mathcal O_K$, return the scale of the Jordan block of minimum $\mathfrak P$-valuation, where $\mathfrak{P}$ is a prime ideal of $\mathcal O_E$ lying over $\mathfrak p$.
scales — Method
scales(g::HermLocalGenus) -> Vector{Int}Given a local genus symbol g for hermitian lattices over $E/K$ at a prime $\mathfrak p$ of $\mathcal O_K$, return the $\mathfrak P$-valuation of the scales of the Jordan blocks of g, where $\mathfrak P$ is a prime ideal of $\mathcal O_E$ lying over $\mathfrak p$.
det — Method
det(g::HermLocalGenus) -> IntGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return the determinant of a hermitian lattice whose $\mathfrak p$-adic completion has local genus symbol g.
The returned value is $1$ or $-1$ depending on whether the determinant is a local norm in K.
discriminant — Method
discriminant(g::HermLocalGenus, i::Int) -> IntGiven a local genus symbol g for hermitian lattices over $E/K$, return the discriminant of the ith Jordan block of g.
The returned value is $1$ or $-1$ depending on whether the discriminant is a local norm in K.
discriminant — Method
discriminant(g::HermLocalGenus) -> IntGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return the discriminant of a hermitian lattice whose $\mathfrak p$-adic completion has local genus symbol g.
The returned value is $1$ or $-1$ depending on whether the discriminant is a local norm in K.
norm — Method
norm(g::HermLocalGenus) -> AbsSimpleNumFieldOrderFractionalIdealReturn the norm of g, i.e. the norm of any of its representatives.
Given a local genus symbol g of hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, it norm is computed as the norm of the Jordan block of minimum $\mathfrak p$-valuation.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> D = matrix(E, 3, 3, [5//2*a - 4, 0, 0, 0, a, a, 0, a, -4*a + 8]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), map(E, [b, 0, 0]), map(E, [a*b, 0, 0]), map(E, [0, 1, 0]), map(E, [0, a, 0]), map(E, [0, b, 0]), map(E, [0, a*b, 0]), map(E, [0, 0, 1]), map(E, [0, 0, a]), map(E, [0, 0, b]), map(E, [0, 0, a*b])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> g2 = genus(L, p);
julia> scales(g2)
2-element Vector{Int64}:
-2
2
julia> ranks(g2)
2-element Vector{Int64}:
1
2
julia> dets(g2)
2-element Vector{Int64}:
1
1
julia> norms(g2)
2-element Vector{Int64}:
-1
1
julia> rank(g2), det(g2), discriminant(g2)
(3, 1, -1)Predicates
is_ramified — Method
is_ramified(g::HermLocalGenus) -> BoolGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return whether $\mathfrak p$ is ramified in $\mathcal O_E$.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> is_ramified(g1), is_split(g1), is_inert(g1), is_dyadic(g1)
(true, false, false, true)Local uniformizer
uniformizer — Method
uniformizer(g::HermLocalGenus) -> NumFieldElemGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return a generator for the largest ideal of $\mathcal O_E$ containing $\mathfrak p$ and invariant under the action of the non-trivial involution of E.
Example
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> uniformizer(g1)
-aDeterminant representatives
Let $g$ be a local genus symbol for hermitian lattices. Its determinant class, or the determinant class of its Jordan blocks, are given by $\pm 1$, depending on whether the determinants are local norms or not. It is possible to get a representative of this determinant class in terms of powers of the uniformizer of $g$.
det_representative — Method
det_representative(g::HermLocalGenus, i::Int) -> NumFieldElemGiven a local genus symbol g for hermitian lattices over $E/K$, return a representative of the norm class of the determinant of the ith Jordan block of g in $K^{\times}$.
det_representative — Method
det_representative(g::HermLocalGenus) -> NumFieldElemGiven a local genus symbol g for hermitian lattices over $E/K$, return a representative of the norm class of the determinant of g in $K^{\times}$.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> det_representative(g1)
-8*a - 6
julia> det_representative(g1,2)
-8*a - 6Gram matrices
gram_matrix — Method
gram_matrix(g::HermLocalGenus, i::Int) -> MatElemGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return a Gram matrix M of the ith Jordan block of g, with coefficients in E. M is such that any hermitian lattice over $E/K$ with Gram matrix M satisfies that the local genus symbol of its completion at $\mathfrak p$ is equal to the ith Jordan block of g.
gram_matrix — Method
gram_matrix(g::HermLocalGenus) -> MatElemGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return a Gram matrix M of g, with coefficients in E.M is such that any hermitian lattice over $E/K$ with Gram matrix M satisfies that the local genus symbol of its completion at $\mathfrak p$ is g.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> D = matrix(E, 3, 3, [5//2*a - 4, 0, 0, 0, a, a, 0, a, -4*a + 8]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), map(E, [b, 0, 0]), map(E, [a*b, 0, 0]), map(E, [0, 1, 0]), map(E, [0, a, 0]), map(E, [0, b, 0]), map(E, [0, a*b, 0]), map(E, [0, 0, 1]), map(E, [0, 0, a]), map(E, [0, 0, b]), map(E, [0, 0, a*b])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> g2 = genus(L, p);
julia> gram_matrix(g2)
[-3//2*a 0 0]
[ 0 a a]
[ 0 a 4*a]
julia> gram_matrix(g2,1)
[-3//2*a]Global genus symbols
Let $L$ be a hermitian lattice over $E/K$. Let $P(L)$ be the set of all prime ideals of $\mathcal O_K$ which are bad (ramified or dyadic), which are dividing the scale of $L$ or which are dividing the volume of $L$. Let $S(E/K)$ be the set of real infinite places of $K$ which split into complex places in $E$. We define the global genus symbol $G(L)$ of $L$ to be the datum consisting of the local genus symbols of $L$ at each prime of $P(L)$ and the signatures (i.e. the negative index of inertia) of the Gram matrix of the rational span of $L$ at each place in $S(E/K)$.
Note that prime ideals in $P(L)$ which don't ramify correspond to those for which the corresponding completions of $L$ are not unimodular.
We say that two lattice $L$ and $L'$ over $E/K$ are in the same genus, if $G(L) = G(L')$.
Creation of global genus symbols
Similarly, there are two ways of constructing a global genus symbol for hermitian lattices:
- either abstractly, by choosing the extension $E/K$, the set of local genus symbols
Sand the signaturessignaturesat the places in $S(E/K)$. Note that this requires the given invariants to satisfy the product formula for Hilbert symbols.
genus(S::Vector{HermLocalGenus}, signatures) -> HermGenusHere signatures can be a dictionary with keys the infinite places and values the corresponding signatures, or a collection of tuples of the type (::InfPlc, ::Int);
- or by constructing the global genus symbol of a given hermitian lattice $L$.
genus(L::HermLat) -> HermGenusExamples
As before, we will construct two different global genus symbols for hermitian lattices, which we will use for the rest of this section.
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> infp = infinite_places(E);
julia> SEK = unique([r for r in infp if isreal(restrict(r, K)) && !isreal(r)])
1-element Vector{InfPlc{Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}, RelSimpleNumFieldEmbedding{AbsSimpleNumFieldEmbedding, Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}}}}:
Infinite place corresponding to (Complex embedding corresponding to root 0.00 + 1.19 * i of relative number field)
julia> length(SEK)
1
julia> G1 = genus([g1], [(SEK[1], 1)])
Genus symbol for hermitian lattices
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
Signature:
infinite place corresponding to (Complex embedding of relative number field) => 1
Local symbol:
<2, a> => (0, 1, +, 0)(2, 2, -, 1)
julia> D = matrix(E, 3, 3, [5//2*a - 4, 0, 0, 0, a, a, 0, a, -4*a + 8]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), map(E, [b, 0, 0]), map(E, [a*b, 0, 0]), map(E, [0, 1, 0]), map(E, [0, a, 0]), map(E, [0, b, 0]), map(E, [0, a*b, 0]), map(E, [0, 0, 1]), map(E, [0, 0, a]), map(E, [0, 0, b]), map(E, [0, 0, a*b])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> G2 = genus(L)
Genus symbol for hermitian lattices
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
Signature:
infinite place corresponding to (Complex embedding of number field) => 2
Local symbols:
<2, a> => (-2, 1, +, -1)(2, 2, +, 1)
<7, a + 4> => (0, 1, +)(1, 2, +)Attributes
base_field — Method
base_field(G::HermGenus) -> NumFieldGiven a global genus symbol G for hermitian lattices over $E/K$, return E.
signatures — Method
signatures(G::HermGenus) -> Dict{InfPlc, Int}Given a global genus symbol G for hermitian lattices over $E/K$, return the signatures at the infinite places of K. For each real place, it is given by the negative index of inertia of the Gram matrix of the rational span of a hermitian lattice whose global genus symbol is G.
The output is given as a dictionary with keys the infinite places of K and value the corresponding signatures.
is_integral — Method
is_integral(G::HermGenus) -> BoolReturn whether G defines a genus of integral hermitian lattices.
local_symbols — Method
local_symbols(G::HermGenus) -> Vector{HermLocalGenus}Given a global genus symbol of hermitian lattices, return its associated local genus symbols.
sourceExamples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> D = matrix(E, 3, 3, [5//2*a - 4, 0, 0, 0, a, a, 0, a, -4*a + 8]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), map(E, [b, 0, 0]), map(E, [a*b, 0, 0]), map(E, [0, 1, 0]), map(E, [0, a, 0]), map(E, [0, b, 0]), map(E, [0, a*b, 0]), map(E, [0, 0, 1]), map(E, [0, 0, a]), map(E, [0, 0, b]), map(E, [0, 0, a*b])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> G2 = genus(L);
julia> base_field(G2)
Relative number field with defining polynomial t^2 - a
over number field with defining polynomial x^2 - 2
over rational field
julia> primes(G2)
2-element Vector{AbsSimpleNumFieldOrderIdeal}:
<2, a>
<7, a + 4>
julia> signatures(G2)
Dict{InfPlc{AbsSimpleNumField, AbsSimpleNumFieldEmbedding}, Int64} with 1 entry:
Infinite place corresponding to (Complex embedding corresponding to -1.4… => 2
julia> rank(G2)
3Mass
Definition 4.2.1 [Kir16] Let $L$ be a hermitian lattice over $E/K$, and suppose that $L$ is definite. In particular, the automorphism group of $L$ is finite. Let $L_1, \ldots, L_n$ be a set of representatives of isometry classes in the genus of $L$. This means that if $L'$ is a lattice over $E/K$ in the genus of $L$ (i.e. they are in the same genus), then $L'$ is isometric to one of the $L_i$'s, and these representatives are pairwise non-isometric. Then we define the mass of the genus $G(L)$ of $L$ to be
\[ \text{mass}(G(L)) := \sum_{i=1}^n\frac{1}{\#\text{Aut}(L_i)}.\]
Note that since $L$ is definite, any lattice in the genus of $L$ is also definite, and the definition makes sense.
Example
julia> Qx, x = polynomial_ring(QQ, "x");
julia> f = x^2 - 2;
julia> K, a = number_field(f, "a", cached = false);
julia> Kt, t = polynomial_ring(K, "t");
julia> g = t^2 + 1;
julia> E, b = number_field(g, :b, cached = false);
julia> D = matrix(E, 3, 3, [1, 0, 0, 0, 1, 0, 0, 0, 1]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [(-3*a + 7)*b + 3*a, (5//2*a - 1)*b - 3//2*a + 4, 0]), map(E, [(3004*a - 4197)*b - 3088*a + 4348, (-1047//2*a + 765)*b + 5313//2*a - 3780, (-a - 1)*b + 3*a - 1]), map(E, [(728381*a - 998259)*b + 3345554*a - 4653462, (-1507194*a + 2168244)*b - 1507194*a + 2168244, (-5917//2*a - 915)*b - 4331//2*a - 488])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> mass(L)
1//1024Representatives of a genus
representative — Method
representative(g::HermLocalGenus) -> HermLatGiven a local genus symbol g for hermitian lattices over $E/K$ at a prime ideal $\mathfrak p$ of $\mathcal O_K$, return a hermitian lattice over $E/K$ whose completion at $\mathfrak p$ admits g as local genus symbol.
representative — Method
representative(G::HermGenus) -> HermLatGiven a global genus symbol G for hermitian lattices over $E/K$, return a hermitian lattice over $E/K$ which admits G as global genus symbol.
representatives — Method
representatives(G::HermGenus) -> Vector{HermLat}Given a global genus symbol G for hermitian lattices, return representatives for the isometry classes of hermitian lattices in G.
genus_representatives — Method
genus_representatives(L::HermLat) -> Vector{HermLat}Return representatives for the isometry classes in the genus of the hermitian lattice L. At most max representatives are returned.
If L is definite, the use of the automorphism group of L and of the mass formula are enabled by default. For more flexibility on these two points, one may call the function enumerate_definite_genus instead.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> SEK = unique([restrict(r, K) for r in infinite_places(E) if isreal(restrict(r, K)) && !isreal(r)]);
julia> G1 = genus([g1], [(SEK[1], 1)]);
julia> L1 = representative(g1)
Hermitian lattice of rank 3 and degree 3
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
julia> L1 in g1
true
julia> L2 = representative(G1)
Hermitian lattice of rank 3 and degree 3
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
julia> L2 in G1, L2 in g1
(true, true)
julia> length(genus_representatives(L1))
1
julia> length(representatives(G1))
1Sum of genera
direct_sum — Method
direct_sum(g1::HermLocalGenus, g2::HermLocalGenus) -> HermLocalGenusGiven two local genus symbols g1 and g2 for hermitian lattices over $E/K$ at the same prime ideal $\mathfrak p$ of $\mathcal O_K$, return their direct sum. It corresponds to the local genus symbol of the $\mathfrak p$-adic completion of the direct sum of respective representatives of g1 and g2.
direct_sum — Method
direct_sum(G1::HermGenus, G2::HermGenus) -> HermGenusGiven two global genus symbols G1 and G2 for hermitian lattices over $E/K$, return their direct sum. It corresponds to the global genus symbol of the direct sum of respective representatives of G1 and G2.
Examples
julia> Qx, x = QQ[:x];
julia> K, a = number_field(x^2 - 2, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a, :b);
julia> OK = maximal_order(K);
julia> p = prime_decomposition(OK, 2)[1][1];
julia> g1 = genus(HermLat, E, p, [(0, 1, 1, 0), (2, 2, -1, 1)], type = :det);
julia> SEK = unique([restrict(r, K) for r in infinite_places(E) if isreal(restrict(r, K)) && !isreal(r)]);
julia> G1 = genus([g1], [(SEK[1], 1)]);
julia> D = matrix(E, 3, 3, [5//2*a - 4, 0, 0, 0, a, a, 0, a, -4*a + 8]);
julia> gens = Vector{Hecke.RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), map(E, [b, 0, 0]), map(E, [a*b, 0, 0]), map(E, [0, 1, 0]), map(E, [0, a, 0]), map(E, [0, b, 0]), map(E, [0, a*b, 0]), map(E, [0, 0, 1]), map(E, [0, 0, a]), map(E, [0, 0, b]), map(E, [0, 0, a*b])];
julia> L = hermitian_lattice(E, gens, gram = D);
julia> g2 = genus(L, p);
julia> G2 = genus(L);
julia> direct_sum(g1, g2)
Local genus symbol for hermitian lattices
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
Prime ideal: <2, a>
Jordan blocks (scale, rank, det, norm):
(-2, 1, +, -1)
(0, 1, +, 0)
(2, 4, -, 1)
julia> direct_sum(G1, G2)
Genus symbol for hermitian lattices
over maximal order
of relative number field with defining polynomial t^2 - a
over number field of degree 2 over QQ
with pseudo-basis
(1, <1>//1)
(b, <1>//1)
Signature:
infinite place corresponding to (Complex embedding of number field) => 3
Local symbols:
<2, a> => (-2, 1, +, -1)(0, 1, +, 0)(2, 4, -, 1)
<7, a + 4> => (0, 4, +)(1, 2, +)Enumeration of genera
hermitian_local_genera — Method
hermitian_local_genera(
E::NumField,
p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem},
rank::Int,
det_val::Union{Int,Nothing},
min_scale::Int,
max_scale::Int
) -> Vector{HermLocalGenus}Return all local genus symbols for hermitian lattices over the algebra E, with base field $K$, at the prime idealp of $\mathcal O_K$. Each of them has rank equal to rank, scale $\mathfrak P$-valuations bounded between min_scale and max_scale and determinant p-valuations equal to det_val (if not nothing), where $\mathfrak P$ is a prime ideal of $\mathcal O_E$ lying above p.
hermitian_genera — Method
hermitian_genera(
E::NumField,
rank::Int,
signatures::Dict{InfPlc, Int},
determinant::Union{RelNumFieldOrderIdeal, RelNumFieldOrderFractionalIdeal,Nothing}=nothing;
min_scale::Union{RelNumFieldOrderIdeal, RelNumFieldOrderFractionalIdeal}=inv(denominator(determinant)*order(determinant)),
max_scale::Union{RelNumFieldOrderIdeal, RelNumFieldOrderFractionalIdeal}=numerator(determinant),
) -> Vector{HermGenus}Return all global genus symbols for hermitian lattices over the algebra E with rank rank, signatures given by signatures, scale bounded by min_scale and max_scale and determinant class equal to determinant.
Examples
julia> K, a = cyclotomic_real_subfield(8, :a);
julia> Kt, t = K[:t];
julia> E, b = number_field(t^2 - a * t + 1);
julia> p = prime_decomposition(maximal_order(K), 2)[1][1];
julia> length(hermitian_local_genera(E, p, 4, 2, 0, 4))
15
julia> SEK = unique([restrict(r, K) for r in infinite_places(E) if isreal(restrict(r, K)) && !isreal(r)]);
julia> hermitian_genera(E, 3, Dict(SEK[1] => 1, SEK[2] => 1), 30 * maximal_order(E))
6-element Vector{HermGenus{Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}, AbsSimpleNumFieldOrderIdeal, HermLocalGenus{Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}, AbsSimpleNumFieldOrderIdeal}, Dict{InfPlc{AbsSimpleNumField, AbsSimpleNumFieldEmbedding}, Int64}}}:
Genus symbol for hermitian lattices of rank 3 over maximal order of relative number field
Genus symbol for hermitian lattices of rank 3 over maximal order of relative number field
Genus symbol for hermitian lattices of rank 3 over maximal order of relative number field
Genus symbol for hermitian lattices of rank 3 over maximal order of relative number field
Genus symbol for hermitian lattices of rank 3 over maximal order of relative number field
Genus symbol for hermitian lattices of rank 3 over maximal order of relative number fieldRescaling
rescale — Method
rescale(g::HermLocalGenus, a::Union{FieldElem, RationalUnion})
-> HermLocalGenusGiven a local genus symbol G of hermitian lattices and an element a lying in the base field E of g, return the local genus symbol at the prime ideal p associated to g of any representative of g rescaled by a.