The ideal class group #
This file defines the ideal class group ClassGroup R
of fractional ideals of R
inside its field of fractions.
Main definitions #
toPrincipalIdeal
sends an invertiblex : K
to an invertible fractional idealClassGroup
is the quotient of invertible fractional ideals modulotoPrincipalIdeal.range
ClassGroup.mk0
sends a nonzero integral ideal in a Dedekind domain to its class
Main results #
ClassGroup.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 ClassGroup R
involves FractionRing R
. However, the API should be completely
identical no matter the choice of field of fractions for R
.
toPrincipalIdeal R K x
sends x ≠ 0 : K
to the fractional R
-ideal generated by x
Equations
Instances For
Equations
- (_ : Subgroup.Normal (MonoidHom.range (toPrincipalIdeal R K))) = (_ : Subgroup.Normal (MonoidHom.range (toPrincipalIdeal R K)))
The ideal class group of R
is the group of invertible fractional ideals
modulo the principal ideals.
Equations
- ClassGroup R = ((FractionalIdeal (nonZeroDivisors R) (FractionRing R))ˣ ⧸ MonoidHom.range (toPrincipalIdeal R (FractionRing R)))
Instances For
Equations
Equations
- instInhabitedClassGroup R = { default := 1 }
Send a nonzero fractional ideal to the corresponding class in the class group.
Equations
- ClassGroup.mk = MonoidHom.comp (QuotientGroup.mk' (MonoidHom.range (toPrincipalIdeal R (FractionRing R)))) (Units.map ↑(FractionalIdeal.canonicalEquiv (nonZeroDivisors R) K (FractionRing R)))
Instances For
Induction principle for the class group: to show something holds for all x : ClassGroup R
,
we can choose a fraction field K
and show it holds for the equivalence class of each
I : FractionalIdeal R⁰ K
.
The definition of the class group does not depend on the choice of field of fractions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Send a nonzero integral ideal to an invertible fractional ideal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Send a nonzero ideal to the corresponding class in the class group.
Equations
- ClassGroup.mk0 = MonoidHom.comp ClassGroup.mk (FractionalIdeal.mk0 (FractionRing R))
Instances For
Maps a nonzero fractional ideal to an integral representative in the class group.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The class group of principal ideal domain is finite (in fact a singleton).
See ClassGroup.fintypeOfAdmissibleOfFinite
for a finiteness proof that works for rings of integers
of global fields.
Equations
- instFintypeClassGroup = { elems := {1}, complete := (_ : ∀ (x : ClassGroup R), x ∈ {1}) }
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.