Module

PresheafInternalHom.lean

Nyll.SchemeTheory.Modules.PresheafInternalHom
42 declarations indexed from sourceView source ↗

Internal Hom of module presheaves

The internal Hom is constructed from families of linear maps compatible with restriction. Currying and uncurrying give the tensor-left adjunction, and hence the monoidal closed structure on module presheaves over a presheaf of commutative rings.

Imports1
  • Mathlib.Algebra.Category.ModuleCat.Presheaf.Monoidal
Imported by43

Declarations

PresheafOfModules.InternalHom.map_id_apply
Source context 6 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
lemma map_id_apply (M : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) (X : Cᵒᵖ) (x : M.obj X) :
    M.map (𝟙 X) x = x
PresheafOfModules.InternalHom.PiFamily

Families of linear maps indexed by arrows from X in the opposite category.

Source context 6 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
abbrev PiFamily (X : Cᵒᵖ) : Type (max u u' v')
PresheafOfModules.InternalHom.IsNatural

Compatibility of a family of linear maps with restriction along subsequent arrows.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
def IsNatural {X : Cᵒᵖ} (φ : PiFamily F N X) : Prop
PresheafOfModules.InternalHom.naturalFamilies

The additive subgroup of families compatible with restriction.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
def naturalFamilies (X : Cᵒᵖ) : AddSubgroup (PiFamily F N X) where
  carrier := {φ | IsNatural φ}
  zero_mem' := by
    intro Y Z f g x
    simp only [Pi.zero_apply, LinearMap.zero_apply]
    exact (N.map g).hom.map_zero
  add_mem' := by
    intro φ ψ hφ hψ Y Z f g x
    exact ((N.map g).hom.map_add (φ f x) (ψ f x)).trans
      (congrArg₂ (fun a b : N.obj Z => a + b) (hφ f g x) (hψ f g x))
  neg_mem' := by
    intro φ hφ Y Z f g x
    exact ((N.map g).hom.map_neg (φ f x)).trans
      (congrArg (fun a : N.obj Z => -a) (hφ f g x))
PresheafOfModules.InternalHom.naturalFamilies_ext
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma naturalFamilies_ext {X : Cᵒᵖ} {φ ψ : naturalFamilies F N X}
    (h : ∀ ⦃Y : Cᵒᵖ⦄ (f : X ⟶ Y) (x : F.obj Y), φ.1 f x = ψ.1 f x) : φ = ψ
PresheafOfModules.InternalHom.naturality
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma naturality {X : Cᵒᵖ} (φ : naturalFamilies F N X) ⦃Y Z : Cᵒᵖ⦄ (f : X ⟶ Y) (g : Y ⟶ Z)
    (x : F.obj Y) : N.map g (φ.1 f x) = φ.1 (f ≫ g) (F.map g x)
PresheafOfModules.InternalHom.congr_app
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma congr_app {X : Cᵒᵖ} (φ : naturalFamilies F N X) {Y : Cᵒᵖ} {f g : X ⟶ Y} (h : f = g)
    (x : F.obj Y) : φ.1 f x = φ.1 g x
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
instance (X : Cᵒᵖ) : SMul (R.obj X) (naturalFamilies F N X) where
  smul r φ := ⟨fun Y f => R.map f r • φ.1 f, by
    intro Y Z f g x
    simp only [LinearMap.smul_apply]
    rw [N.map_smul]
    erw [φ.2 f g x]
    congr 1
    rw [Functor.map_comp]
    rfl⟩
PresheafOfModules.InternalHom.smul_app
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma smul_app {X : Cᵒᵖ} (r : R.obj X) (φ : naturalFamilies F N X) {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : (r • φ).1 f x = R.map f r • φ.1 f x
PresheafOfModules.InternalHom.add_app
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma add_app {X : Cᵒᵖ} (φ ψ : naturalFamilies F N X) {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : (φ + ψ).1 f x = φ.1 f x + ψ.1 f x
PresheafOfModules.InternalHom.zero_app
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma zero_app {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : (0 : naturalFamilies F N X).1 f x = 0
PresheafOfModules.InternalHom.neg_app
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma neg_app {X : Cᵒᵖ} (φ : naturalFamilies F N X) {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : (-φ).1 f x = - φ.1 f x
PresheafOfModules.InternalHom.sub_app
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
lemma sub_app {X : Cᵒᵖ} (φ ψ : naturalFamilies F N X) {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : (φ - ψ).1 f x = φ.1 f x - ψ.1 f x
Source context 8 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
instance (X : Cᵒᵖ) : Module (R.obj X) (naturalFamilies F N X) where
  one_smul φ := by ext Y f x; simp
  mul_smul r s φ := by ext Y f x; simp [mul_smul]
  smul_zero r := by ext Y f x; simp
  smul_add r φ ψ := by ext Y f x; simp
  add_smul r s φ := by ext Y f x; simp [add_smul]
  zero_smul φ := by ext Y f x; simp
PresheafOfModules.InternalHom.restrict

Restriction of natural families by precomposing their indexing arrows.

Source context 9 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
def restrict {X X' : Cᵒᵖ} (h : X ⟶ X') : naturalFamilies F N X →+ naturalFamilies F N X' where
  toFun φ := ⟨fun Y f => φ.1 (h ≫ f), fun Y Z f g x => by
    rw [φ.2 (h ≫ f) g x, Category.assoc]⟩
  map_zero' := rfl
  map_add' _ _ := rfl
PresheafOfModules.InternalHom.restrict_app
Source context 9 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
lemma restrict_app {X X' : Cᵒᵖ} (h : X ⟶ X') (φ : naturalFamilies F N X) {Y : Cᵒᵖ}
    (f : X' ⟶ Y) (x : F.obj Y) : (restrict F N h φ).1 f x = φ.1 (h ≫ f) x
PresheafOfModules.InternalHom.presheaf

The presheaf of additive groups of natural families of linear maps.

Source context 9 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
def presheaf : Cᵒᵖ ⥤ Ab.{max u u' v'} where
  obj X := AddCommGrpCat.of (naturalFamilies F N X)
  map h := AddCommGrpCat.ofHom (restrict F N h)
  map_id X := by
    ext φ Y f x
    change φ.1 (𝟙 X ≫ f) x = φ.1 f x
    rw [Category.id_comp]
  map_comp h h' := by
    ext φ Y f x
    change φ.1 ((h ≫ h') ≫ f) x = φ.1 (h ≫ (h' ≫ f)) x
    rw [Category.assoc]
PresheafOfModules.InternalHom.presheaf_map_apply
Source context 9 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
lemma presheaf_map_apply {X X' : Cᵒᵖ} (h : X ⟶ X') (φ : naturalFamilies F N X) {Y : Cᵒᵖ}
    (f : X' ⟶ Y) (x : F.obj Y) : ((presheaf F N).map h φ).1 f x = φ.1 (h ≫ f) x
Source context 9 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
instance (X : Cᵒᵖ) : Module ((R ⋙ forget₂ CommRingCat RingCat).obj X) ((presheaf F N).obj X)
PresheafOfModules.InternalHom.postcomp

Postcomposition of each linear map in a natural family by a module-presheaf morphism.

Source context 10 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
variable {N} in
def postcomp {N' : PresheafOfModules.{u} (R ⋙ forget₂ _ _)} (ψ : N ⟶ N') (X : Cᵒᵖ) :
    naturalFamilies F N X →+ naturalFamilies F N' X where
  toFun φ := ⟨fun Y f =>
    { toFun := fun x => ψ.app Y (φ.1 f x)
      map_add' := fun x x' => by simp
      map_smul' := fun r x => by
        rw [(φ.1 f).map_smul]
        exact (ψ.app Y).hom.map_smul r _ }, by
    intro Y Z f g x
    change N'.map g (ψ.app Y (φ.1 f x)) = ψ.app Z (φ.1 (f ≫ g) (F.map g x))
    rw [← naturality_apply, φ.2 f g x]⟩
  map_zero' := by ext Y f x; exact (ψ.app Y).hom.map_zero
  map_add' φ φ' := by ext Y f x; exact (ψ.app Y).hom.map_add _ _
PresheafOfModules.InternalHom.postcomp_app
Source context 10 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
namespace InternalHom
variable {F N} in
variable {F N}
variable (F N)
variable {N} in
lemma postcomp_app {N' : PresheafOfModules.{u} (R ⋙ forget₂ _ _)} (ψ : N ⟶ N') {X : Cᵒᵖ}
    (φ : naturalFamilies F N X) {Y : Cᵒᵖ} (f : X ⟶ Y) (x : F.obj Y) :
    (postcomp F ψ X φ).1 f x = ψ.app Y (φ.1 f x)
PresheafOfModules.ihomObj

The module presheaf of natural families of local linear maps from F to N.

Source context 6 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
def ihomObj : PresheafOfModules.{max u u' v'} (R ⋙ forget₂ _ _)
PresheafOfModules.ihomObj_map_val
Source context 6 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
lemma ihomObj_map_val {X X' : Cᵒᵖ} (h : X ⟶ X') (φ : (ihomObj F N).obj X) {Y : Cᵒᵖ}
    (f : X' ⟶ Y) (x : F.obj Y) :
    ((ihomObj F N).map h φ).1 f x = φ.1 (h ≫ f) x
PresheafOfModules.ihomMap

The internal-Hom morphism induced by postcomposition in its second argument.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
variable {N} in
def ihomMap {N' : PresheafOfModules.{u} (R ⋙ forget₂ _ _)} (ψ : N ⟶ N') :
    ihomObj F N ⟶ ihomObj F N'
PresheafOfModules.ihomMap_app_val
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
variable {N} in
lemma ihomMap_app_val {N' : PresheafOfModules.{u} (R ⋙ forget₂ _ _)} (ψ : N ⟶ N')
    {X : Cᵒᵖ} (φ : (ihomObj F N).obj X) {Y : Cᵒᵖ} (f : X ⟶ Y) (x : F.obj Y) :
    ((ihomMap F ψ).app X φ).1 f x = ψ.app Y (φ.1 f x)
PresheafOfModules.ihomFunctor

The internal-Hom functor with fixed first argument F.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
variable {N} in
def ihomFunctor :
    PresheafOfModules.{u} (R ⋙ forget₂ _ _) ⥤ PresheafOfModules.{max u u' v'} (R ⋙ forget₂ _ _)
      where
  obj N := ihomObj F N
  map ψ := ihomMap F ψ
  map_id N := by
    ext X φ
    apply naturalFamilies_ext
    intro Y f y; rfl
  map_comp ψ ψ' := by
    ext X φ
    apply naturalFamilies_ext
    intro Y f y; rfl
PresheafOfModules.ihomFunctor_obj
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
variable {N} in
lemma ihomFunctor_obj (N' : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) :
    (ihomFunctor F).obj N' = ihomObj F N'
PresheafOfModules.ihomFunctor_map
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section general
variable {C : Type u'} [Category.{v'} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F N : PresheafOfModules.{u} (R ⋙ forget₂ _ _))
open InternalHom
variable {N} in
lemma ihomFunctor_map {N' N'' : PresheafOfModules.{u} (R ⋙ forget₂ _ _)} (ψ : N' ⟶ N'') :
    (ihomFunctor F).map ψ = ihomMap F ψ
PresheafOfModules.commRingAt
Source context 5 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X)
PresheafOfModules.InternalHom.curryFamily

The natural family obtained by currying a tensor morphism against the section y.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
namespace InternalHom
def curryFamily (θ : F ⊗ G ⟶ N) {X : Cᵒᵖ} (y : G.obj X) : naturalFamilies F N X
PresheafOfModules.InternalHom.curryFamily_app
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
namespace InternalHom
lemma curryFamily_app (θ : F ⊗ G ⟶ N) {X : Cᵒᵖ} (y : G.obj X) {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : (curryFamily F θ y).1 f x = θ.app Y (x ⊗ₜ[R.obj Y] G.map f y)
PresheafOfModules.curry'

The internal-Hom morphism obtained by currying a tensor morphism.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
def curry' (θ : F ⊗ G ⟶ N) : G ⟶ ihomObj F N
PresheafOfModules.curry'_app_val
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
lemma curry'_app_val (θ : F ⊗ G ⟶ N) {X : Cᵒᵖ} (y : G.obj X) {Y : Cᵒᵖ} (f : X ⟶ Y)
    (x : F.obj Y) : ((curry' F θ).app X y).1 f x = θ.app Y (x ⊗ₜ[R.obj Y] G.map f y)
PresheafOfModules.uncurryApp

The component of the uncurried tensor morphism, evaluated using the identity indexing arrow.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
def uncurryApp (κ : G ⟶ ihomObj F N) (X : Cᵒᵖ) : (F ⊗ G).obj X ⟶ N.obj X
PresheafOfModules.tensorObj_map_tmul'
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
lemma tensorObj_map_tmul' {X Y : Cᵒᵖ} (g : X ⟶ Y) (x : F.obj X) (y : G.obj X) :
    DFunLike.coe (α := (F.obj X ⊗ G.obj X :))
      (β := fun _ => (ModuleCat.restrictScalars (R.map g).hom).obj (F.obj Y ⊗ G.obj Y))
      (ModuleCat.Hom.hom (R := ↑(R.obj X)) ((F ⊗ G).map g)) (x ⊗ₜ[R.obj X] y) =
    F.map g x ⊗ₜ[R.obj Y] G.map g y := rfl
PresheafOfModules.uncurryApp_tmul
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
lemma uncurryApp_tmul (κ : G ⟶ ihomObj F N) (X : Cᵒᵖ) (x : F.obj X) (y : G.obj X) :
    DFunLike.coe (α := (F.obj X ⊗ G.obj X :)) (β := fun _ => N.obj X)
      (uncurryApp F κ X).hom (x ⊗ₜ[R.obj X] y) = (κ.app X y).1 (𝟙 X) x := by
  erw [ModuleCat.MonoidalCategory.tensorLift_tmul (R := R.obj X)]
PresheafOfModules.uncurry'

The tensor morphism obtained by uncurrying an internal-Hom morphism.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
def uncurry' (κ : G ⟶ ihomObj F N) : F ⊗ G ⟶ N where
  app X := uncurryApp F κ X
  naturality {X Y} g := ModuleCat.MonoidalCategory.tensor_ext (fun x y => by
    have hκ := naturality_apply κ g y
    have hev := congrArg
      (fun φ : naturalFamilies F N Y => φ.1 (𝟙 Y) (F.map g x)) hκ
    exact (congrArg (uncurryApp F κ Y) (tensorObj_map_tmul' F (G := G) g x y)).trans
      ((uncurryApp_tmul F κ Y (F.map g x) (G.map g y)).trans
        (hev.trans
          ((ihomObj_map_val F N g (κ.app X y) (𝟙 Y) (F.map g x)).trans
            ((congr_app (κ.app X y)
              ((Category.comp_id g).trans (Category.id_comp g).symm) (F.map g x)).trans
              (((κ.app X y).2 (𝟙 X) g x).symm.trans
                (congrArg (N.map g) (uncurryApp_tmul F κ X x y).symm)))))))
PresheafOfModules.uncurry'_app_tmul
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
lemma uncurry'_app_tmul (κ : G ⟶ ihomObj F N) {X : Cᵒᵖ} (x : F.obj X) (y : G.obj X) :
    DFunLike.coe (α := (F.obj X ⊗ G.obj X :)) (β := fun _ => N.obj X)
      ((uncurry' F κ).app X).hom (x ⊗ₜ[R.obj X] y) = (κ.app X y).1 (𝟙 X) x :=
  uncurryApp_tmul F κ X x y
PresheafOfModules.uncurry'_curry'
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
lemma uncurry'_curry' (θ : F ⊗ G ⟶ N) : uncurry' F (curry' F θ) = θ
PresheafOfModules.curry'_uncurry'
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
lemma curry'_uncurry' (κ : G ⟶ ihomObj F N) : curry' F (uncurry' F κ) = κ
PresheafOfModules.tensorIhomAdj

The tensor-left and internal-Hom adjunction given by currying and uncurrying.

Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
def tensorIhomAdj : tensorLeft F ⊣ ihomFunctor F
PresheafOfModules.instMonoidalClosed
Source context 7 commands

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

universe u v' u'
open CategoryTheory MonoidalCategory Limits Opposite
namespace PresheafOfModules
section closed

-- Keep the bundled-ring comparison at the same transparency as Mathlib's
-- `PresheafOfModulesOfCommRing.Monoidal.tensorObjMap`.
variable {C : Type u} [Category.{u} C] {R : Cᵒᵖ ⥤ CommRingCat.{u}}
  (F : PresheafOfModules.{u} (R ⋙ forget₂ _ _)) {G N : PresheafOfModules.{u} (R ⋙ forget₂ _ _)}
local instance commRingAt (X : Cᵒᵖ) : CommRing ((R ⋙ forget₂ CommRingCat RingCat).obj X) :=
  inferInstanceAs (CommRing (R.obj X))
open InternalHom
instance instMonoidalClosed :
    MonoidalClosed (PresheafOfModules.{u} (R ⋙ forget₂ _ _)) where
  closed F := { rightAdj := ihomFunctor F, adj := tensorIhomAdj F }