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_idealsends an invertiblex : Kto an invertible fractional idealclass_groupis the quotient of invertible fractional ideals moduloto_principal_ideal.rangeclass_group.mk0sends a nonzero integral ideal in a Dedekind domain to its class
Main results #
class_group.mk0_eq_mk0_iffshows the equivalence with the "classical" definition, whereI ~ Jiffx I = y Jforx 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.