Genera for hermitian lattices
Local genus symbols
Definition 8.3.1 ([Kir16]) Let
where the Jordan block
- if
is good, i.e. non ramified and non dyadic,
where
- if
is bad,
where for all i,
Note that we define the scale and the norm of the lattice
We call any tuple in
We say that two hermitian lattices
Creation of local genus symbols
There are two ways of creating a local genus symbol for hermitian lattices:
- either abstractly, by choosing the extension
, the prime ideal of , the Jordan blocks data
and the type of the's (either determinant class :det
or 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
over at a prime ideal of .
genus(L::HermLat, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> HermLocalGenus
Examples
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 relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <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 relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <1, 1>)
Prime ideal: <2, a>
Jordan blocks (scale, rank, det, norm):
(-2, 1, +, -1)
(2, 2, +, 1)
Attributes
length Method
length(g::HermLocalGenus) -> Int
Given a local genus symbol g
for hermitian lattices, return the number of Jordan blocks of g
.
base_field Method
base_field(g::HermLocalGenus) -> NumField
Given a local genus symbol g
for hermitian lattices over E
.
prime Method
prime(g::HermLocalGenus) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}
Given a local genus symbol g
for hermitian lattices over
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)
<2, a>
Norm: 2
Minimum: 2
basis_matrix
[2 0; 0 1]
two normal wrt: 2
Invariants
scale Method
scale(g::HermLocalGenus, i::Int) -> Int
Given a local genus symbol g
for hermitian lattices over i
th Jordan block of g
, where
scale Method
scale(g::HermLocalGenus) -> AbsSimpleNumFieldOrderFractionalIdeal
Given a local genus symbol g
for hermitian lattices over
scales Method
scales(g::HermLocalGenus) -> Vector{Int}
Given a local genus symbol g
for hermitian lattices over g
, where
rank Method
rank(g::HermLocalGenus, i::Int) -> Int
Given a local genus symbol g
for hermitian lattices, return the rank of the i
th Jordan block of g
.
rank Method
rank(g::HermLocalGenus) -> Int
Given a local genus symbol g
for hermitian lattices over g
.
ranks Method
ranks(g::HermLocalGenus) -> Vector{Int}
Given a local genus symbol g
for hermitian lattices, return the ranks of the Jordan blocks of g
.
det Method
det(g::HermLocalGenus, i::Int) -> Int
Given a local genus symbol g
for hermitian lattices over i
th Jordan block of g
.
The returned value is K
.
det Method
det(g::HermLocalGenus) -> Int
Given a local genus symbol g
for hermitian lattices over g
.
The returned value is K
.
dets Method
dets(g::HermLocalGenus) -> Vector{Int}
Given a local genus symbol g
for hermitian lattices over g
.
The returned values are K
.
discriminant Method
discriminant(g::HermLocalGenus, i::Int) -> Int
Given a local genus symbol g
for hermitian lattices over i
th Jordan block of g
.
The returned value is K
.
discriminant Method
discriminant(g::HermLocalGenus) -> Int
Given a local genus symbol g
for hermitian lattices over g
.
The returned value is K
.
norm Method
norm(g::HermLocalGenus, i::Int) -> Int
Given a local genus symbol g
for hermitian lattices over i
th Jordan block of g
.
norm Method
norm(g::HermLocalGenus) -> AbsSimpleNumFieldOrderFractionalIdeal
Return the norm of g
, i.e. the norm of any of its representatives.
Given a local genus symbol g
of hermitian lattices over
norms Method
norms(g::HermLocalGenus) -> Vector{Int}
Given a local genus symbol g
for hermitian lattices over 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> 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) -> Bool
Given a local genus symbol g
for hermitian lattices over
is_split Method
is_split(g::HermLocalGenus) -> Bool
Given a local genus symbol g
for hermitian lattices over
is_inert Method
is_inert(g::HermLocalGenus) -> Bool
Given a local genus symbol g
for hermitian lattices over
is_dyadic Method
is_dyadic(g::HermLocalGenus) -> Bool
Given a local genus symbol g
for hermitian lattices over
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) -> NumFieldElem
Given a local genus symbol g
for hermitian lattices over 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)
-a
Determinant representatives
Let
det_representative Method
det_representative(g::HermLocalGenus, i::Int) -> NumFieldElem
Given a local genus symbol g
for hermitian lattices over i
th Jordan block of g
in
det_representative Method
det_representative(g::HermLocalGenus) -> NumFieldElem
Given a local genus symbol g
for hermitian lattices over g
in
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)
10
julia> det_representative(g1,2)
10
Gram matrices
gram_matrix Method
gram_matrix(g::HermLocalGenus, i::Int) -> MatElem
Given a local genus symbol g
for hermitian lattices over M
of the i
th Jordan block of g
, with coefficients in E
. M
is such that any hermitian lattice over M
satisfies that the local genus symbol of its completion at i
th Jordan block of g
.
gram_matrix Method
gram_matrix(g::HermLocalGenus) -> MatElem
Given a local genus symbol g
for hermitian lattices over M
of g
, with coefficients in E
.M
is such that any hermitian lattice over M
satisfies that the local genus symbol of its completion at 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 - 4 0 0]
[ 0 a a]
[ 0 a 4*a + 8]
julia> gram_matrix(g2,1)
[-3//2*a - 4]
Global genus symbols
Let
Note that prime ideals in
We say that two lattice
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
, the set of local genus symbols S
and the signaturessignatures
at the places in. Note that this requires the given invariants to satisfy the product formula for Hilbert symbols.
genus(S::Vector{HermLocalGenus}, signatures) -> HermGenus
Here 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
.
genus(L::HermLat) -> HermGenus
Examples
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)
3-element Vector{InfPlc{Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}, RelSimpleNumFieldEmbedding{AbsSimpleNumFieldEmbedding, Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}}}}:
Infinite place corresponding to (Complex embedding corresponding to root -1.19 of relative number field)
Infinite place corresponding to (Complex embedding corresponding to root 1.19 of relative number field)
Infinite place corresponding to (Complex embedding corresponding to root 0.00 + 1.19 * i of relative number field)
julia> SEK = unique([r.base_field_place for r in infp if isreal(r.base_field_place) && !isreal(r)]);
ERROR: type InfPlc has no field base_field_place
julia> length(SEK)
ERROR: UndefVarError: `SEK` not defined
julia> G1 = genus([g1], [(SEK[1], 1)])
ERROR: UndefVarError: `SEK` not defined
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 relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <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) -> NumField
Given a global genus symbol G
for hermitian lattices over E
.
primes Method
primes(G::HermGenus) -> Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}
Given a global genus symbol G
for hermitian lattices over G
has a local genus symbol.
signatures Method
signatures(G::HermGenus) -> Dict{InfPlc, Int}
Given a global genus symbol G
for hermitian lattices over 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.
rank Method
rank(G::HermGenus) -> Int
Return the rank of any hermitian lattice with global genus symbol G
.
is_integral Method
is_integral(G::HermGenus) -> Bool
Return 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.
scale Method
scale(G::HermGenus) -> AbsSimpleNumFieldOrderFractionalIdeal
Return the scale ideal of any hermitian lattice with global genus symbol G
.
norm Method
norm(G::HermGenus) -> AbsSimpleNumFieldOrderFractionalIdeal
Return the norm ideal of any hermitian lattice with global genus symbol 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);
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>
Norm: 2
Minimum: 2
basis_matrix
[2 0; 0 1]
two normal wrt: 2
<7, a + 4>
Norm: 7
Minimum: 7
basis_matrix
[7 0; 4 1]
two normal wrt: 7
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)
3
Mass
Definition 4.2.1 [Kir16] Let
Note that since
mass Method
mass(L::HermLat) -> QQFieldElem
Given a definite hermitian lattice L
, return the mass of its genus.
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//1024
Representatives of a genus
representative Method
representative(g::HermLocalGenus) -> HermLat
Given a local genus symbol g
for hermitian lattices over g
as local genus symbol.
in Method
in(L::HermLat, g::HermLocalGenus) -> Bool
Return whether g
and the local genus symbol of the completion of the hermitian lattice L
at prime(g)
agree. Note that L
being in g
requires both L
and g
to be defined over the same extension
representative Method
representative(G::HermGenus) -> HermLat
Given a global genus symbol G
for hermitian lattices over G
as global genus symbol.
in Method
in(L::HermLat, G::HermGenus) -> Bool
Return whether G
and the global genus symbol of the hermitian lattice L
agree.
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; max = inf, use_auto = true,
use_mass = false)
-> 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
is enabled by default. It can be disabled by use_auto = false
. In the case where L
is indefinite, the entry use_auto
has no effect. The computation of the mass can be enabled by use_mass = true
.
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 relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <1, 1>)
julia> L1 in g1
true
julia> L2 = representative(G1)
Hermitian lattice of rank 3 and degree 3
over relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <1, 1>)
julia> L2 in G1, L2 in g1
(true, true)
julia> length(genus_representatives(L1))
1
julia> length(representatives(G1))
1
Sum of genera
direct_sum Method
direct_sum(g1::HermLocalGenus, g2::HermLocalGenus) -> HermLocalGenus
Given two local genus symbols g1
and g2
for hermitian lattices over g1
and g2
.
direct_sum Method
direct_sum(G1::HermGenus, G2::HermGenus) -> HermGenus
Given two global genus symbols G1
and G2
for hermitian lattices over 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 relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <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 relative maximal order of Relative number field of degree 2 over number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(b, 1//1 * <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::Int, min_scale::Int, max_scale::Int)
-> Vector{HermLocalGenus}
Return all local genus symbols for hermitian lattices over the algebra E
, with base field p
of rank
, scale min_scale
and max_scale
and determinant p
-valuations equal to det_val
, where p
.
hermitian_genera Method
hermitian_genera(E::NumField, rank::Int,
signatures::Dict{InfPlc, Int},
determinant::Union{Hecke.RelNumFieldOrderIdeal, Hecke.RelNumFieldOrderFractionalIdeal};
min_scale::Union{Hecke.RelNumFieldOrderIdeal, Hecke.RelNumFieldOrderFractionalIdeal} = is_integral(determinant) ? inv(1*order(determinant)) : determinant,
max_scale::Union{Hecke.RelNumFieldOrderIdeal, Hecke.RelNumFieldOrderFractionalIdeal} = is_integral(determinant) ? determinant : inv(1*order(determinant)))
-> Vector{HermGenus}
Return all global genus symbols for hermitian lattices over the algebraE
with rank rank
, signatures given by signatures
, scale bounded by max_scale
and determinant class equal to determinant
.
If max_scale == nothing
, it is set to be 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> hermitian_local_genera(E, p, 4, 2, 0, 4)
15-element Vector{HermLocalGenus{Hecke.RelSimpleNumField{AbsSimpleNumFieldElem}, AbsSimpleNumFieldOrderIdeal}}:
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
Local genus symbol for hermitian lattices over the 2-adic integers
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 relative maximal order of Relative number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(_$, 1//1 * <1, 1>)
Genus symbol for hermitian lattices of rank 3 over relative maximal order of Relative number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(_$, 1//1 * <1, 1>)
Genus symbol for hermitian lattices of rank 3 over relative maximal order of Relative number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(_$, 1//1 * <1, 1>)
Genus symbol for hermitian lattices of rank 3 over relative maximal order of Relative number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(_$, 1//1 * <1, 1>)
Genus symbol for hermitian lattices of rank 3 over relative maximal order of Relative number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(_$, 1//1 * <1, 1>)
Genus symbol for hermitian lattices of rank 3 over relative maximal order of Relative number field
with pseudo-basis
(1, 1//1 * <1, 1>)
(_$, 1//1 * <1, 1>)
Rescaling
rescale Method
rescale(g::HermLocalGenus, a::Union{FieldElem, RationalUnion})
-> HermLocalGenus
Given 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
.