File: Mathlib/RingTheory/LocalRing/Module.lean

full_name: _aux_Mathlib_RingTheory_LocalRing_Module___unexpand_LocalRing_ResidueField_1
code: local notation "k" => ResidueField R
goal: Lean.PrettyPrinter.Unexpander

full_name: _aux_Mathlib_RingTheory_LocalRing_Module___macroRules_termK_1
code: local notation "k" => ResidueField R
goal: Lean.Macro

full_name: _aux_Mathlib_RingTheory_LocalRing_Module___unexpand_LocalRing_maximalIdeal_1
code: local notation "𝔪" => maximalIdeal R
goal: Lean.PrettyPrinter.Unexpander

full_name: _aux_Mathlib_RingTheory_LocalRing_Module___macroRules_term𝔪_1
code: local notation "𝔪" => maximalIdeal R
goal: Lean.Macro

full_name: LocalRing.map_mkQ_eq
code: theorem map_mkQ_eq {N₁ N₂ : Submodule R M} (h : N₁ ≤ N₂) (h' : N₂.FG) :
    N₁.map (Submodule.mkQ (𝔪 • N₂)) = N₂.map (Submodule.mkQ (𝔪 • N₂)) ↔ N₁ = N₂ 
goal: Submodule.map (LocalRing.maximalIdeal R • N₂).mkQ N₁ = Submodule.map (LocalRing.maximalIdeal R • N₂).mkQ N₂ ↔ N₁ = N₂

full_name: LocalRing.map_mkQ_eq_top
code: theorem map_mkQ_eq_top {N : Submodule R M} [Module.Finite R M] :
    N.map (Submodule.mkQ (𝔪 • ⊤)) = ⊤ ↔ N = ⊤ 
goal: Submodule.map (LocalRing.maximalIdeal R • ⊤).mkQ N = ⊤ ↔ N = ⊤

full_name: LocalRing.map_tensorProduct_mk_eq_top
code: theorem map_tensorProduct_mk_eq_top {N : Submodule R M} [Module.Finite R M] :
    N.map (TensorProduct.mk R k M 1) = ⊤ ↔ N = ⊤ 
goal: Submodule.map ((TensorProduct.mk R (LocalRing.ResidueField R) M) 1) N = ⊤ ↔ N = ⊤

full_name: LocalRing.subsingleton_tensorProduct
code: theorem subsingleton_tensorProduct [Module.Finite R M] :
    Subsingleton (k ⊗[R] M) ↔ Subsingleton M 
goal: Subsingleton (TensorProduct R (LocalRing.ResidueField R) M) ↔ Subsingleton M

full_name: LocalRing.span_eq_top_of_tmul_eq_basis
code: theorem span_eq_top_of_tmul_eq_basis [Module.Finite R M] {ι}
    (f : ι → M) (b : Basis ι k (k ⊗[R] M))
    (hb : ∀ i, 1 ⊗ₜ f i = b i) : Submodule.span R (Set.range f) = ⊤ 
goal: Submodule.span R (Set.range f) = ⊤

full_name: lTensor_injective_of_exact_of_exact_of_rTensor_injective
code: /--
Given `M₁ → M₂ → M₃ → 0` and `N₁ → N₂ → N₃ → 0`,
if `M₁ ⊗ N₃ → M₂ ⊗ N₃` and `M₂ ⊗ N₁ → M₂ ⊗ N₂` are both injective,
then `M₃ ⊗ N₁ → M₃ ⊗ N₂` is also injective.
-/
theorem lTensor_injective_of_exact_of_exact_of_rTensor_injective
    {M₁ M₂ M₃ N₁ N₂ N₃}
    [AddCommGroup M₁] [Module R M₁] [AddCommGroup M₂] [Module R M₂] [AddCommGroup M₃] [Module R M₃]
    [AddCommGroup N₁] [Module R N₁] [AddCommGroup N₂] [Module R N₂] [AddCommGroup N₃] [Module R N₃]
    {f₁ : M₁ →ₗ[R] M₂} {f₂ : M₂ →ₗ[R] M₃} {g₁ : N₁ →ₗ[R] N₂} {g₂ : N₂ →ₗ[R] N₃}
    (hfexact : Exact f₁ f₂) (hfsurj : Surjective f₂)
    (hgexact : Exact g₁ g₂) (hgsurj : Surjective g₂)
    (hfinj : Injective (f₁.rTensor N₃)) (hginj : Injective (g₁.lTensor M₂)) :
    Injective (g₁.lTensor M₃) 
goal: Function.Injective ⇑(LinearMap.lTensor M₃ g₁)

full_name: Module.free_of_maximalIdeal_rTensor_injective
code: /--
If `M` is a finitely presented module over a local ring `(R, 𝔪)` such that `m ⊗ M → M` is
injective, then `M` is free.
-/
theorem free_of_maximalIdeal_rTensor_injective [Module.FinitePresentation R M]
    (H : Function.Injective ((𝔪).subtype.rTensor M)) :
    Module.Free R M 
goal: Module.Free R M

full_name: Module.free_of_flat_of_localRing
code: theorem free_of_flat_of_localRing [Module.FinitePresentation R P] [Module.Flat R P] :
    Module.Free R P 
goal: Module.Free R P

full_name: Module.free_of_lTensor_residueField_injective
code: /--
If `M → N → P → 0` is a presentation of `P` over a local ring `(R, 𝔪, k)` with
`M` finite and `N` finite free, then injectivity of `k ⊗ M → k ⊗ N` implies that `P` is free.
-/
theorem free_of_lTensor_residueField_injective
    [Module.Finite R M] [Module.Finite R N] [Module.Free R N]
    (hf : Function.Injective (f.lTensor k)) :
    Module.Free R P 
goal: Module.Free R P

full_name: LocalRing.split_injective_iff_lTensor_residueField_injective
code: /--
Given a linear map `l : M → N` over a local ring `(R, 𝔪, k)`
with `M` finite and `N` finite free,
`l` is a split injection if and only if `k ⊗ l` is a (split) injection.
-/
theorem LocalRing.split_injective_iff_lTensor_residueField_injective
    [Module.Finite R M] [Module.Finite R N] [Module.Free R N] (l : M →ₗ[R] N) :
    (∃ l', l' ∘ₗ l = LinearMap.id) ↔ Function.Injective (l.lTensor (ResidueField R)) 
goal: (∃ l', l' ∘ₗ l = LinearMap.id) ↔ Function.Injective ⇑(LinearMap.lTensor (LocalRing.ResidueField R) l)