The ideal class group #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines the ideal class group class_group R
of fractional ideals of R
inside its field of fractions.
Main definitions #
to_principal_ideal
sends an invertiblex : K
to an invertible fractional idealclass_group
is the quotient of invertible fractional ideals moduloto_principal_ideal.range
class_group.mk0
sends a nonzero integral ideal in a Dedekind domain to its class
Main results #
class_group.mk0_eq_mk0_iff
shows the equivalence with the "classical" definition, whereI ~ J
iffx I = y J
forx y ≠ (0 : R)
Implementation details #
The definition of class_group R
involves fraction_ring R
. However, the API should be completely
identical no matter the choice of field of fractions for R
.
to_principal_ideal R K x
sends x ≠ 0 : K
to the fractional R
-ideal generated by x
Equations
- to_principal_ideal R K = {to_fun := λ (x : Kˣ), {val := fractional_ideal.span_singleton (non_zero_divisors R) ↑x, inv := fractional_ideal.span_singleton (non_zero_divisors R) (↑x)⁻¹, val_inv := _, inv_val := _}, map_one' := _, map_mul' := _}
The ideal class group of R
is the group of invertible fractional ideals
modulo the principal ideals.
Equations
- class_group R = ((fractional_ideal (non_zero_divisors R) (fraction_ring R))ˣ ⧸ (to_principal_ideal R (fraction_ring R)).range)
Equations
- class_group.inhabited R = {default := 1}
Send a nonzero fractional ideal to the corresponding class in the class group.
Equations
Induction principle for the class group: to show something holds for all x : class_group R
,
we can choose a fraction field K
and show it holds for the equivalence class of each
I : fractional_ideal R⁰ K
.
The definition of the class group does not depend on the choice of field of fractions.
Equations
Send a nonzero integral ideal to an invertible fractional ideal.
Send a nonzero ideal to the corresponding class in the class group.
Equations
The class group of principal ideal domain is finite (in fact a singleton).
See class_group.fintype_of_admissible
for a finiteness proof that works for rings of integers
of global fields.
Equations
- class_group.fintype = {elems := {1}, complete := _}
The class number of a principal ideal domain is 1
.
The class number is 1
iff the ring of integers is a principal ideal domain.