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
- One or more equations did not get rendered due to their size.
Instances For
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))ˣ ⧸ (toPrincipalIdeal R (FractionRing R)).range)
Instances For
Equations
Equations
- instInhabitedClassGroup R = { default := 1 }
Send a nonzero fractional ideal to the corresponding class in the class group.
Equations
- ClassGroup.mk = (QuotientGroup.mk' (toPrincipalIdeal R (FractionRing R)).range).comp (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
- FractionalIdeal.mk0 K = { toFun := fun (I : ↥(nonZeroDivisors (Ideal R))) => Units.mk0 ↑↑I ⋯, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Send a nonzero ideal to the corresponding class in the class group.
Equations
- ClassGroup.mk0 = ClassGroup.mk.comp (FractionalIdeal.mk0 (FractionRing R))
Instances For
Maps a nonzero fractional ideal to an integral representative in the class group.
Equations
- ClassGroup.integralRep I = I.num
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
- instFintypeClassGroupOfIsPrincipalIdealRing = { 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.