Class numbers of global fields #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. In this file, we use the notion of "admissible absolute value" to prove finiteness of the class group for number fields and function fields, and define
class_number
as the order of this group.
Main definitions #
class_group.fintype_of_admissible
: ifR
has an admissible absolute value, its integral closure has a finite class group
If b
is an R
-basis of S
of cardinality n
, then norm_bound abv b
is an integer
such that for every R
-integral element a : S
with coordinates ≤ y
,
we have algebra.norm a ≤ norm_bound abv b * y ^ n. (See also
norm_leand
norm_lt`).
Equations
- class_group.norm_bound abv bS = let n : ℕ := fintype.card ι, i : ι := _.some, m : ℤ := (finset.image (λ (ijk : ι × ι × ι), ⇑abv (⇑(algebra.left_mul_matrix bS) (⇑bS ijk.fst) ijk.snd.fst ijk.snd.snd)) finset.univ).max' _ in n.factorial • (n • m) ^ n
If the R
-integral element a : S
has coordinates ≤ y
with respect to some basis b
,
its norm is less than norm_bound abv b * y ^ dim S
.
If the R
-integral element a : S
has coordinates < y
with respect to some basis b
,
its norm is strictly less than norm_bound abv b * y ^ dim S
.
A nonzero ideal has an element of minimal norm.
If we have a large enough set of elements in R^ι
, then there will be a pair
whose remainders are close together. We'll show that all sets of cardinality
at least cardM bS adm
elements satisfy this condition.
The value of cardM
is not at all optimal: for specific choices of R
,
the minimum cardinality can be exponentially smaller.
Equations
- class_group.cardM bS adm = adm.card (↑(class_group.norm_bound abv bS) ^ ((-1) / ↑(fintype.card ι))) ^ fintype.card ι
In the following results, we need a large set of distinct elements of R
.
Equations
finset_approx
is a finite set such that each fractional ideal in the integral closure
contains an element close to finset_approx
.
Equations
- class_group.finset_approx bS adm = (finset.image (λ (xy : fin (class_group.cardM bS adm).succ × fin (class_group.cardM bS adm).succ), ⇑(class_group.distinct_elems bS adm) xy.fst - ⇑(class_group.distinct_elems bS adm) xy.snd) finset.univ).erase 0
We can approximate a / b : L
with q / r
, where r
has finitely many options for L
.
We can approximate a / b : L
with q / r
, where r
has finitely many options for L
.
Each class in the class group contains an ideal J
such that M := Π m ∈ finset_approx
is in J
.
class_group.mk_M_mem
is a specialization of class_group.mk0
to (the finite set of)
ideals that contain M := ∏ m in finset_approx L f abs, m
.
By showing this function is surjective, we prove that the class group is finite.
Equations
- class_group.mk_M_mem bS adm J = ⇑class_group.mk0 ⟨J.val, _⟩
The main theorem: the class group of an integral closure S
of R
in an
algebraic extension L
is finite if there is an admissible absolute value.
See also class_group.fintype_of_admissible_of_finite
where L
is a finite
extension of K = Frac(R)
, supplying most of the required assumptions automatically.
Equations
- class_group.fintype_of_admissible_of_algebraic L bS adm h = fintype.of_surjective (class_group.mk_M_mem bS adm) _
The main theorem: the class group of an integral closure S
of R
in a
finite extension L
of K = Frac(R)
is finite if there is an admissible
absolute value.
See also class_group.fintype_of_admissible_of_algebraic
where L
is an
algebraic extension of R
, that includes some extra assumptions.
Equations
- class_group.fintype_of_admissible_of_finite K L adm = let _inst : decidable_eq L := classical.dec_eq L, _inst_14 : is_fraction_ring S L := _, _inst_15 : is_dedekind_domain S := _ in (λ (_x : ∃ (b : basis ↥(classical.some _) K L), ∀ (x : ↥(classical.some _)), is_integral R (⇑b x)), (λ (_x_1 : ∀ (x : ↥(classical.some _)), is_integral R (⇑(classical.some _x) x)), (submodule.basis_of_pid_of_le_span _ _).cases_on (λ (n : ℕ) (b : basis (fin n) R ↥(linear_map.range (linear_map.restrict_scalars R (algebra.linear_map S L)))), let bS : basis (fin n) R S := b.map ((linear_map.restrict_scalars R (algebra.linear_map S L)).quot_ker_equiv_range.symm.trans (_.mpr (⊥.quot_equiv_of_eq_bot class_group.fintype_of_admissible_of_finite._proof_25))) in class_group.fintype_of_admissible_of_algebraic L bS adm _)) _) _