Module

TensorExactness.lean

Nyll.SchemeTheory.RingTheory.Flat.TensorExactness
27 declarations indexed from sourceView source ↗

Tensor exactness and covering diagrams

The tensor functor retains independent base-ring, tensor-factor and source universes. Its right exactness follows from an explicitly constructed tensor-Hom adjunction in the larger module universe and a proved natural comparison with universe lifting.

The categorical covering diagrams construct their kernel lifts and cokernel descents. They can be used without reopening the concrete module instances of every diagram object.

Imports11
  • Mathlib.Algebra.Category.ModuleCat.Ulift
  • Mathlib.Algebra.Category.ModuleCat.EpiMono
  • Mathlib.Algebra.Homology.ShortComplex.Exact
  • Mathlib.CategoryTheory.Adjunction.Limits
  • Mathlib.CategoryTheory.Limits.Preserves.Finite
  • Mathlib.LinearAlgebra.TensorProduct.Basic
  • Mathlib.LinearAlgebra.TensorProduct.Map
  • Mathlib.CategoryTheory.Abelian.DiagramLemmas.Four
  • Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
  • Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
  • Mathlib.CategoryTheory.Abelian.Basic
Imported by1

Declarations

AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorFunctor

The same concrete tensor functor, polymorphic in the source carrier universe.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorFunctor {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    ModuleCat.{w} R ⥤ ModuleCat.{max v w} R where
  obj N := ModuleCat.of R (M ⊗[R] N)
  map f := ModuleCat.ofHom (f.hom.lTensor M)
  map_id N := by
    apply ModuleCat.hom_ext
    exact LinearMap.lTensor_id M N
  map_comp f g := by
    apply ModuleCat.hom_ext
    exact LinearMap.lTensor_comp M g.hom f.hom
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.postcompose

The actual linear map of postcomposition on a Hom module.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
section NativeHomFactories
variable {R : Type u} [CommRing R]
variable {M : Type v} [AddCommGroup M] [Module R M]
variable {X : Type a} [AddCommGroup X] [Module R X]
variable {Y : Type b} [AddCommGroup Y] [Module R Y]
def postcompose (f : X →ₗ[R] Y) : (M →ₗ[R] X) →ₗ[R] (M →ₗ[R] Y) where
  toFun g := f ∘ₗ g
  map_add' g h := LinearMap.comp_add g h f
  map_smul' r g := LinearMap.comp_smul f r g
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.curryFlip

Curry in the orientation needed for M ⊗ - ⊣ Hom(M,-).

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
section NativeHomFactories
variable {R : Type u} [CommRing R]
variable {M : Type v} [AddCommGroup M] [Module R M]
variable {X : Type a} [AddCommGroup X] [Module R X]
variable {Y : Type b} [AddCommGroup Y] [Module R Y]
def curryFlip (f : M ⊗[R] X →ₗ[R] Y) : X →ₗ[R] M →ₗ[R] Y
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.uncurryFlip

The actual bilinear lift inverse to curryFlip.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
section NativeHomFactories
variable {R : Type u} [CommRing R]
variable {M : Type v} [AddCommGroup M] [Module R M]
variable {X : Type a} [AddCommGroup X] [Module R X]
variable {Y : Type b} [AddCommGroup Y] [Module R Y]
def uncurryFlip (f : X →ₗ[R] M →ₗ[R] Y) : M ⊗[R] X →ₗ[R] Y
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.uncurryFlip_curryFlip
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
section NativeHomFactories
variable {R : Type u} [CommRing R]
variable {M : Type v} [AddCommGroup M] [Module R M]
variable {X : Type a} [AddCommGroup X] [Module R X]
variable {Y : Type b} [AddCommGroup Y] [Module R Y]
theorem uncurryFlip_curryFlip (f : M ⊗[R] X →ₗ[R] Y) :
    uncurryFlip (curryFlip f) = f
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.curryFlip_uncurryFlip
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
section NativeHomFactories
variable {R : Type u} [CommRing R]
variable {M : Type v} [AddCommGroup M] [Module R M]
variable {X : Type a} [AddCommGroup X] [Module R X]
variable {Y : Type b} [AddCommGroup Y] [Module R Y]
theorem curryFlip_uncurryFlip (f : X →ₗ[R] M →ₗ[R] Y) :
    curryFlip (uncurryFlip f) = f
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorHomObject

The actual Hom module object, constructed once at its own owner boundary.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorHomObject {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] (X : ModuleCat.{max u v} R) :
    ModuleCat.{max u v} R
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorHomMap

The actual native postcomposition arrow between the constructed Hom objects.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorHomMap {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X Y : ModuleCat.{max u v} R} (f : X ⟶ Y) :
    tensorHomObject M X ⟶ tensorHomObject M Y
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorHomFunctor

Hom(M,-) in a universe large enough to contain M and all its values.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorHomFunctor {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    ModuleCat.{max u v} R ⥤ ModuleCat.{max u v} R where
  obj N := tensorHomObject M N
  map f := tensorHomMap M f
  map_id N := by
    change tensorHomMap M (𝟙 N) = 𝟙 (tensorHomObject M N)
    rfl
  map_comp f g := by
    change tensorHomMap M (f ≫ g) = tensorHomMap M f ≫ tensorHomMap M g
    rfl
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorCurryHom

The actual forward arrow of the tensor-Hom correspondence.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorCurryHom {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X Y : ModuleCat.{max u v} R} (f : (tensorFunctor M).obj X ⟶ Y) :
    X ⟶ (tensorHomFunctor M).obj Y
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorUncurryHom

The actual inverse arrow of the tensor-Hom correspondence.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorUncurryHom {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X Y : ModuleCat.{max u v} R} (f : X ⟶ (tensorHomFunctor M).obj Y) :
    (tensorFunctor M).obj X ⟶ Y
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorUncurryHom_curry
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorUncurryHom_curry {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X Y : ModuleCat.{max u v} R} (f : (tensorFunctor M).obj X ⟶ Y) :
    tensorUncurryHom M (tensorCurryHom M f) = f
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorCurryHom_uncurry
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorCurryHom_uncurry {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X Y : ModuleCat.{max u v} R} (f : X ⟶ (tensorHomFunctor M).obj Y) :
    tensorCurryHom M (tensorUncurryHom M f) = f
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorUncurryHom_naturality_left

Naturality of the actual inverse arrows, before any Equiv applications are present.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorUncurryHom_naturality_left {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X' X Y : ModuleCat.{max u v} R} (f : X' ⟶ X)
    (g : X ⟶ (tensorHomFunctor M).obj Y) :
    tensorUncurryHom M (f ≫ g) = (tensorFunctor M).map f ≫ tensorUncurryHom M g
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorCurryHom_naturality_right

Naturality of the actual forward arrows, with its own two-variable linear owner.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorCurryHom_naturality_right {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    {X Y Y' : ModuleCat.{max u v} R} (f : (tensorFunctor M).obj X ⟶ Y)
    (g : Y ⟶ Y') :
    tensorCurryHom M (f ≫ g) = tensorCurryHom M f ≫ (tensorHomFunctor M).map g
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorHomEquiv
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorHomEquiv {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    (X Y : ModuleCat.{max u v} R) :
    ((tensorFunctor M).obj X ⟶ Y) ≃ (X ⟶ (tensorHomFunctor M).obj Y) where
  toFun f := tensorCurryHom M f
  invFun f := tensorUncurryHom M f
  left_inv f := tensorUncurryHom_curry M f
  right_inv f := tensorCurryHom_uncurry M f
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorHomAdjunction

The large-source adjunction assembles already proved native arrow computations.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorHomAdjunction {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    (tensorFunctor M : ModuleCat.{max u v} R ⥤ ModuleCat.{max u v} R) ⊣
      tensorHomFunctor M
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorUliftComponent

The actual comparison on one universe-lifted source object.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorUliftComponent {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] (X : ModuleCat.{u} R) :
    (tensorFunctor M).obj ((ModuleCat.uliftFunctor.{v, u} R).obj X) ≅
      (tensorFunctor M).obj X
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorUliftIso

The small-source tensor functor is obtained from the large one via a proved comparison.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
def tensorUliftIso {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    ModuleCat.uliftFunctor.{v, u} R ⋙
        (tensorFunctor M : ModuleCat.{max u v} R ⥤ ModuleCat.{max u v} R) ≅
      (tensorFunctor M : ModuleCat.{u} R ⥤ ModuleCat.{max u v} R)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorFunctor_preservesColimits_large

The constructed large-source adjunction preserves colimits of every index size.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorFunctor_preservesColimits_large {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    PreservesColimitsOfSize.{a, b}
      (tensorFunctor M : ModuleCat.{max u v} R ⥤ ModuleCat.{max u v} R)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorFunctor_preservesFiniteColimits

Right exactness is inherited through an actual adjunction and the proved ULift comparison.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorFunctor_preservesFiniteColimits {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    PreservesFiniteColimits
      (tensorFunctor M : ModuleCat.{u} R ⥤ ModuleCat.{max u v} R)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorFunctor_preservesZeroMorphisms

Zero-map preservation is supplied by the constructed preservation of initial objects.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
instance tensorFunctor_preservesZeroMorphisms {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M] :
    (tensorFunctor M : ModuleCat.{u} R ⥤ ModuleCat.{max u v} R).PreservesZeroMorphisms
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.tensorFunctor_map_exact

The actual tensor functor preserves exactness of a right exact complex.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v w a b c
theorem tensorFunctor_map_exact {R : Type u} [CommRing R]
    (M : Type v) [AddCommGroup M] [Module R M]
    (S : ShortComplex (ModuleCat.{u} R)) (hS : S.Exact) (hg : Epi S.g) :
    (S.map (tensorFunctor M)).Exact
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.mono_of_cover

Descent of a monomorphism through an exact covering row. The upper row only needs to be a complex with an epimorphic last map.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
open CategoryTheory CategoryTheory.Limits
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v
variable {C : Type u} [Category.{v} C] [Abelian C]
theorem mono_of_cover
    {K L G X Y : C} (f : X ⟶ Y) (p : G ⟶ Y) (i : L ⟶ G)
    (q : L ⟶ X) (k : K ⟶ G) (j : K ⟶ L)
    (hq : Epi q) (hcomm : i ≫ p = q ≫ f)
    (w : k ≫ p = 0) (hk : (ShortComplex.mk k p w).Exact)
    (hji : j ≫ i = k) (hjq : j ≫ q = 0) (hi : Mono i) : Mono f
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.mono_middle_of_exact_subquotient

In a morphism of complexes, monic left and right vertical maps and a monic lower-left map make the middle vertical map monic when the upper row is exact.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
open CategoryTheory CategoryTheory.Limits
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v
variable {C : Type u} [Category.{v} C] [Abelian C]
theorem mono_middle_of_exact_subquotient
    {S T : ShortComplex C} (φ : S ⟶ T) (hS : S.Exact)
    (hleft : Mono T.f) (hvertical : Mono φ.τ₁)
    (hright : Mono φ.τ₃) : Mono φ.τ₂
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.map_epi_of_finite_colimits

A functor preserving the actual kernel cokernel cofork sends an epi to an epi.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
open CategoryTheory CategoryTheory.Limits
open CategoryTheory CategoryTheory.Limits
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v u' v'
variable {C : Type u} [Category.{v} C] [Abelian C]
variable {D : Type u'} [Category.{v'} D] [Abelian D]
variable (F : C ⥤ D) [PreservesFiniteColimits F] [F.PreservesZeroMorphisms]
theorem map_epi_of_finite_colimits {X Y : C} (p : X ⟶ Y) (hp : Epi p) :
    Epi (F.map p)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor.mono_map_of_pullback

The actual kernel lift and the exact covering diagram prove descent of a mapped mono.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
open CategoryTheory CategoryTheory.Limits
open CategoryTheory CategoryTheory.Limits
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.FlatTensor
universe u v u' v'
variable {C : Type u} [Category.{v} C] [Abelian C]
variable {D : Type u'} [Category.{v'} D] [Abelian D]
variable (F : C ⥤ D) [PreservesFiniteColimits F] [F.PreservesZeroMorphisms]
theorem mono_map_of_pullback {X Y G : C}
    (f : X ⟶ Y) (p : G ⟶ Y) (s : PullbackCone p f) (hs : IsLimit s)
    (hp : Epi p) (hi : Mono (F.map s.fst)) : Mono (F.map f)