Completion of a module with respect to an ideal. #
In this file we define the notions of Hausdorff, precomplete, and complete for an R
-module M
with respect to an ideal I
:
Main definitions #
IsHausdorff I M
: this says that the intersection ofI^n M
is0
.IsPrecomplete I M
: this says that every Cauchy sequence converges.IsAdicComplete I M
: this says thatM
is Hausdorff and precomplete.Hausdorffification I M
: this is the universal Hausdorff module with a map fromM
.adicCompletion I M
: ifI
is finitely generated, then this is the universal complete module (TODO) with a map fromM
. This map is injective iffM
is Hausdorff and surjective iffM
is precomplete.
class
IsPrecomplete
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
A module M
is precomplete with respect to an ideal I
if every Cauchy sequence converges.
Instances
class
IsAdicComplete
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
extends
IsHausdorff
,
IsPrecomplete
:
A module M
is I
-adically complete if it is Hausdorff and precomplete.
Instances
def
adicCompletion
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
The completion of a module with respect to an ideal. This is not necessarily Hausdorff. In fact, this is only complete if the ideal is finitely generated.
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
IsHausdorff.bot
{R : Type u_1}
[CommRing R]
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
IsHausdorff ⊥ M
Equations
- ⋯ = ⋯
theorem
IsHausdorff.subsingleton
{R : Type u_1}
[CommRing R]
{M : Type u_2}
[AddCommGroup M]
[Module R M]
(h : IsHausdorff ⊤ M)
:
instance
IsHausdorff.of_subsingleton
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
[Subsingleton M]
:
IsHausdorff I M
Equations
- ⋯ = ⋯
theorem
IsHausdorff.iInf_pow_smul
{R : Type u_1}
[CommRing R]
{I : Ideal R}
{M : Type u_2}
[AddCommGroup M]
[Module R M]
(h : IsHausdorff I M)
:
def
Hausdorffification.of
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
M →ₗ[R] Hausdorffification I M
The canonical linear map to the Hausdorffification.
Equations
- Hausdorffification.of I M = Submodule.mkQ (⨅ (n : ℕ), I ^ n • ⊤)
Instances For
theorem
Hausdorffification.induction_on
{R : Type u_1}
[CommRing R]
{I : Ideal R}
{M : Type u_2}
[AddCommGroup M]
[Module R M]
{C : Hausdorffification I M → Prop}
(x : Hausdorffification I M)
(ih : ∀ (x : M), C ((Hausdorffification.of I M) x))
:
C x
instance
Hausdorffification.instIsHausdorffHausdorffificationAddCommGroupToRingIInfSubmoduleToSemiringToCommSemiringToAddCommMonoidNatInstInfSetSubmoduleHSMulIdealInstHSMulHasSMul'HPowInstHPowToNatPowToMonoidToMonoidWithZeroToSemiringIdemSemiringIdTopInstTopSubmoduleModule
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
IsHausdorff I (Hausdorffification I M)
Equations
- ⋯ = ⋯
def
Hausdorffification.lift
{R : Type u_1}
[CommRing R]
(I : Ideal R)
{M : Type u_2}
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
[h : IsHausdorff I N]
(f : M →ₗ[R] N)
:
Hausdorffification I M →ₗ[R] N
Universal property of Hausdorffification: any linear map to a Hausdorff module extends to a unique map from the Hausdorffification.
Equations
- Hausdorffification.lift I f = Submodule.liftQ (⨅ (n : ℕ), I ^ n • ⊤) f ⋯
Instances For
theorem
Hausdorffification.lift_of
{R : Type u_1}
[CommRing R]
(I : Ideal R)
{M : Type u_2}
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
[h : IsHausdorff I N]
(f : M →ₗ[R] N)
(x : M)
:
(Hausdorffification.lift I f) ((Hausdorffification.of I M) x) = f x
theorem
Hausdorffification.lift_comp_of
{R : Type u_1}
[CommRing R]
(I : Ideal R)
{M : Type u_2}
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
[h : IsHausdorff I N]
(f : M →ₗ[R] N)
:
Hausdorffification.lift I f ∘ₗ Hausdorffification.of I M = f
theorem
Hausdorffification.lift_eq
{R : Type u_1}
[CommRing R]
(I : Ideal R)
{M : Type u_2}
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
[h : IsHausdorff I N]
(f : M →ₗ[R] N)
(g : Hausdorffification I M →ₗ[R] N)
(hg : g ∘ₗ Hausdorffification.of I M = f)
:
g = Hausdorffification.lift I f
Uniqueness of lift.
instance
IsPrecomplete.bot
{R : Type u_1}
[CommRing R]
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
Equations
- ⋯ = ⋯
instance
IsPrecomplete.top
{R : Type u_1}
[CommRing R]
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
Equations
- ⋯ = ⋯
instance
IsPrecomplete.of_subsingleton
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
[Subsingleton M]
:
IsPrecomplete I M
Equations
- ⋯ = ⋯
def
adicCompletion.of
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
M →ₗ[R] ↥(adicCompletion I M)
The canonical linear map to the completion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
adicCompletion.of_apply
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(x : M)
(n : ℕ)
:
↑((adicCompletion.of I M) x) n = (Submodule.mkQ (I ^ n • ⊤)) x
def
adicCompletion.eval
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(n : ℕ)
:
Linearly evaluating a sequence in the completion at a given input.
Equations
- adicCompletion.eval I M n = { toAddHom := { toFun := fun (f : ↥(adicCompletion I M)) => ↑f n, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
@[simp]
theorem
adicCompletion.coe_eval
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(n : ℕ)
:
⇑(adicCompletion.eval I M n) = fun (f : ↥(adicCompletion I M)) => ↑f n
theorem
adicCompletion.eval_apply
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(n : ℕ)
(f : ↥(adicCompletion I M))
:
(adicCompletion.eval I M n) f = ↑f n
theorem
adicCompletion.eval_of
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(n : ℕ)
(x : M)
:
(adicCompletion.eval I M n) ((adicCompletion.of I M) x) = (Submodule.mkQ (I ^ n • ⊤)) x
@[simp]
theorem
adicCompletion.eval_comp_of
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(n : ℕ)
:
adicCompletion.eval I M n ∘ₗ adicCompletion.of I M = Submodule.mkQ (I ^ n • ⊤)
@[simp]
theorem
adicCompletion.range_eval
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(n : ℕ)
:
LinearMap.range (adicCompletion.eval I M n) = ⊤
theorem
adicCompletion.ext
{R : Type u_1}
[CommRing R]
{I : Ideal R}
{M : Type u_2}
[AddCommGroup M]
[Module R M]
{x : ↥(adicCompletion I M)}
{y : ↥(adicCompletion I M)}
(h : ∀ (n : ℕ), (adicCompletion.eval I M n) x = (adicCompletion.eval I M n) y)
:
x = y
instance
adicCompletion.instIsHausdorffSubtypeForAllNatQuotientSubmoduleToSemiringToCommSemiringToAddCommMonoidHasQuotientToRingHSMulIdealInstHSMulHasSMul'HPowInstHPowToNatPowToMonoidToMonoidWithZeroToSemiringIdemSemiringIdTopInstTopSubmoduleMemAddCommMonoidAddCommGroupModuleModuleInstMembershipSetLikeAdicCompletionAddCommGroupAddCommGroupModule
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
IsHausdorff I ↥(adicCompletion I M)
Equations
- ⋯ = ⋯
instance
IsAdicComplete.bot
{R : Type u_1}
[CommRing R]
(M : Type u_2)
[AddCommGroup M]
[Module R M]
:
Equations
- ⋯ = ⋯
theorem
IsAdicComplete.subsingleton
{R : Type u_1}
[CommRing R]
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(h : IsAdicComplete ⊤ M)
:
instance
IsAdicComplete.of_subsingleton
{R : Type u_1}
[CommRing R]
(I : Ideal R)
(M : Type u_2)
[AddCommGroup M]
[Module R M]
[Subsingleton M]
:
IsAdicComplete I M
Equations
- ⋯ = ⋯
theorem
IsAdicComplete.le_jacobson_bot
{R : Type u_1}
[CommRing R]
(I : Ideal R)
[IsAdicComplete I R]
:
I ≤ Ideal.jacobson ⊥