category_theory.types
⟷
Mathlib.CategoryTheory.Types
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -242,10 +242,10 @@ theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
#align category_theory.ulift_functor_map CategoryTheory.uliftFunctor_map
-/
-#print CategoryTheory.uliftFunctorFull /-
-instance uliftFunctorFull : CategoryTheory.Functor.Full.{u} uliftFunctor
+#print CategoryTheory.uliftFunctor_full /-
+instance uliftFunctor_full : CategoryTheory.Functor.Full.{u} uliftFunctor
where preimage X Y f x := (f (ULift.up x)).down
-#align category_theory.ulift_functor_full CategoryTheory.uliftFunctorFull
+#align category_theory.ulift_functor_full CategoryTheory.uliftFunctor_full
-/
#print CategoryTheory.uliftFunctor_faithful /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -243,12 +243,13 @@ theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
-/
#print CategoryTheory.uliftFunctorFull /-
-instance uliftFunctorFull : Full.{u} uliftFunctor where preimage X Y f x := (f (ULift.up x)).down
+instance uliftFunctorFull : CategoryTheory.Functor.Full.{u} uliftFunctor
+ where preimage X Y f x := (f (ULift.up x)).down
#align category_theory.ulift_functor_full CategoryTheory.uliftFunctorFull
-/
#print CategoryTheory.uliftFunctor_faithful /-
-instance uliftFunctor_faithful : Faithful uliftFunctor
+instance uliftFunctor_faithful : CategoryTheory.Functor.Faithful uliftFunctor
where map_injective' X Y f g p :=
funext fun x =>
congr_arg ULift.down (congr_fun p (ULift.up x) : ULift.up (f x) = ULift.up (g x))
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2017 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Johannes Hölzl
-/
-import Mathbin.CategoryTheory.EpiMono
-import Mathbin.CategoryTheory.Functor.FullyFaithful
-import Mathbin.Logic.Equiv.Basic
+import CategoryTheory.EpiMono
+import CategoryTheory.Functor.FullyFaithful
+import Logic.Equiv.Basic
#align_import category_theory.types from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2017 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Johannes Hölzl
-
-! This file was ported from Lean 3 source module category_theory.types
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.EpiMono
import Mathbin.CategoryTheory.Functor.FullyFaithful
import Mathbin.Logic.Equiv.Basic
+#align_import category_theory.types from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
/-!
# The category `Type`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -111,7 +111,6 @@ abbrev asHom {α β : Type u} (f : α → β) : α ⟶ β :=
#align category_theory.as_hom CategoryTheory.asHom
-/
--- mathport name: category_theory.as_hom
-- If you don't mind some notation you can use fewer keystrokes:
scoped[CategoryTheory.Type] notation "↾" f:200 => CategoryTheory.asHom f
@@ -134,6 +133,7 @@ namespace Functor
variable {J : Type u} [Category.{v} J]
+#print CategoryTheory.Functor.sections /-
/-- The sections of a functor `J ⥤ Type` are
the choices of a point `u j : F.obj j` for each `j`,
such that `F.map f (u j) = u j` for every morphism `f : j ⟶ j'`.
@@ -143,6 +143,7 @@ We later use these to define limits in `Type` and in many concrete categories.
def sections (F : J ⥤ Type w) : Set (∀ j, F.obj j) :=
{u | ∀ {j j'} (f : j ⟶ j'), F.map f (u j) = u j'}
#align category_theory.functor.sections CategoryTheory.Functor.sections
+-/
end Functor
@@ -152,50 +153,68 @@ variable {C : Type u} [Category.{v} C] (F G H : C ⥤ Type w) {X Y Z : C}
variable (σ : F ⟶ G) (τ : G ⟶ H)
+#print CategoryTheory.FunctorToTypes.map_comp_apply /-
@[simp]
theorem map_comp_apply (f : X ⟶ Y) (g : Y ⟶ Z) (a : F.obj X) :
(F.map (f ≫ g)) a = (F.map g) ((F.map f) a) := by simp [types_comp]
#align category_theory.functor_to_types.map_comp_apply CategoryTheory.FunctorToTypes.map_comp_apply
+-/
+#print CategoryTheory.FunctorToTypes.map_id_apply /-
@[simp]
theorem map_id_apply (a : F.obj X) : (F.map (𝟙 X)) a = a := by simp [types_id]
#align category_theory.functor_to_types.map_id_apply CategoryTheory.FunctorToTypes.map_id_apply
+-/
+#print CategoryTheory.FunctorToTypes.naturality /-
theorem naturality (f : X ⟶ Y) (x : F.obj X) : σ.app Y ((F.map f) x) = (G.map f) (σ.app X x) :=
congr_fun (σ.naturality f) x
#align category_theory.functor_to_types.naturality CategoryTheory.FunctorToTypes.naturality
+-/
+#print CategoryTheory.FunctorToTypes.comp /-
@[simp]
theorem comp (x : F.obj X) : (σ ≫ τ).app X x = τ.app X (σ.app X x) :=
rfl
#align category_theory.functor_to_types.comp CategoryTheory.FunctorToTypes.comp
+-/
variable {D : Type u'} [𝒟 : Category.{u'} D] (I J : D ⥤ C) (ρ : I ⟶ J) {W : D}
+#print CategoryTheory.FunctorToTypes.hcomp /-
@[simp]
theorem hcomp (x : (I ⋙ F).obj W) : (ρ ◫ σ).app W x = (G.map (ρ.app W)) (σ.app (I.obj W) x) :=
rfl
#align category_theory.functor_to_types.hcomp CategoryTheory.FunctorToTypes.hcomp
+-/
+#print CategoryTheory.FunctorToTypes.map_inv_map_hom_apply /-
@[simp]
theorem map_inv_map_hom_apply (f : X ≅ Y) (x : F.obj X) : F.map f.inv (F.map f.Hom x) = x :=
congr_fun (F.mapIso f).hom_inv_id x
#align category_theory.functor_to_types.map_inv_map_hom_apply CategoryTheory.FunctorToTypes.map_inv_map_hom_apply
+-/
+#print CategoryTheory.FunctorToTypes.map_hom_map_inv_apply /-
@[simp]
theorem map_hom_map_inv_apply (f : X ≅ Y) (y : F.obj Y) : F.map f.Hom (F.map f.inv y) = y :=
congr_fun (F.mapIso f).inv_hom_id y
#align category_theory.functor_to_types.map_hom_map_inv_apply CategoryTheory.FunctorToTypes.map_hom_map_inv_apply
+-/
+#print CategoryTheory.FunctorToTypes.hom_inv_id_app_apply /-
@[simp]
theorem hom_inv_id_app_apply (α : F ≅ G) (X) (x) : α.inv.app X (α.Hom.app X x) = x :=
congr_fun (α.hom_inv_id_app X) x
#align category_theory.functor_to_types.hom_inv_id_app_apply CategoryTheory.FunctorToTypes.hom_inv_id_app_apply
+-/
+#print CategoryTheory.FunctorToTypes.inv_hom_id_app_apply /-
@[simp]
theorem inv_hom_id_app_apply (α : F ≅ G) (X) (x) : α.Hom.app X (α.inv.app X x) = x :=
congr_fun (α.inv_hom_id_app X) x
#align category_theory.functor_to_types.inv_hom_id_app_apply CategoryTheory.FunctorToTypes.inv_hom_id_app_apply
+-/
end FunctorToTypes
@@ -218,11 +237,13 @@ def uliftFunctor : Type u ⥤ Type max u v
#align category_theory.ulift_functor CategoryTheory.uliftFunctor
-/
+#print CategoryTheory.uliftFunctor_map /-
@[simp]
theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
uliftFunctor.map f x = ULift.up (f x.down) :=
rfl
#align category_theory.ulift_functor_map CategoryTheory.uliftFunctor_map
+-/
#print CategoryTheory.uliftFunctorFull /-
instance uliftFunctorFull : Full.{u} uliftFunctor where preimage X Y f x := (f (ULift.up x)).down
@@ -321,16 +342,20 @@ def ofTypeFunctor (m : Type u → Type v) [Functor m] [LawfulFunctor m] : Type u
variable (m : Type u → Type v) [Functor m] [LawfulFunctor m]
+#print CategoryTheory.ofTypeFunctor_obj /-
@[simp]
theorem ofTypeFunctor_obj : (ofTypeFunctor m).obj = m :=
rfl
#align category_theory.of_type_functor_obj CategoryTheory.ofTypeFunctor_obj
+-/
+#print CategoryTheory.ofTypeFunctor_map /-
@[simp]
theorem ofTypeFunctor_map {α β} (f : α → β) :
(ofTypeFunctor m).map f = (Functor.map f : m α → m β) :=
rfl
#align category_theory.of_type_functor_map CategoryTheory.ofTypeFunctor_map
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -141,7 +141,7 @@ such that `F.map f (u j) = u j` for every morphism `f : j ⟶ j'`.
We later use these to define limits in `Type` and in many concrete categories.
-/
def sections (F : J ⥤ Type w) : Set (∀ j, F.obj j) :=
- { u | ∀ {j j'} (f : j ⟶ j'), F.map f (u j) = u j' }
+ {u | ∀ {j j'} (f : j ⟶ j'), F.map f (u j) = u j'}
#align category_theory.functor.sections CategoryTheory.Functor.sections
end Functor
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -269,7 +269,7 @@ theorem mono_iff_injective {X Y : Type u} (f : X ⟶ Y) : Mono f ↔ Function.In
constructor
· intro H x x' h
skip
- rw [← hom_of_element_eq_iff] at h⊢
+ rw [← hom_of_element_eq_iff] at h ⊢
exact (cancel_mono f).mp h
· exact fun H => ⟨fun Z => H.compLeft⟩
#align category_theory.mono_iff_injective CategoryTheory.mono_iff_injective
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -134,12 +134,6 @@ namespace Functor
variable {J : Type u} [Category.{v} J]
-/- warning: category_theory.functor.sections -> CategoryTheory.Functor.sections is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} J _inst_1 Type.{u2} CategoryTheory.types.{u2}), Set.{max u3 u2} (forall (j : J), CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} J _inst_1 Type.{u2} CategoryTheory.types.{u2} F j)
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} J _inst_1 Type.{u2} CategoryTheory.types.{u2}), Set.{max u3 u2} (forall (j : J), Prefunctor.obj.{succ u1, succ u2, u3, succ u2} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} J _inst_1 Type.{u2} CategoryTheory.types.{u2} F) j)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.sections CategoryTheory.Functor.sectionsₓ'. -/
/-- The sections of a functor `J ⥤ Type` are
the choices of a point `u j : F.obj j` for each `j`,
such that `F.map f (u j) = u j` for every morphism `f : j ⟶ j'`.
@@ -158,43 +152,19 @@ variable {C : Type u} [Category.{v} C] (F G H : C ⥤ Type w) {X Y Z : C}
variable (σ : F ⟶ G) (τ : G ⟶ H)
-/- warning: category_theory.functor_to_types.map_comp_apply -> CategoryTheory.FunctorToTypes.map_comp_apply is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} {Z : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X Y) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y Z) (a : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F Z) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X Z (CategoryTheory.CategoryStruct.comp.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X Y Z f g) a) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F Y Z g (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X Y f a))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} {Z : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X Y) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y Z) (a : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) Z) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X Z (CategoryTheory.CategoryStruct.comp.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X Y Z f g) a) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) Y Z g (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X Y f a))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.map_comp_apply CategoryTheory.FunctorToTypes.map_comp_applyₓ'. -/
@[simp]
theorem map_comp_apply (f : X ⟶ Y) (g : Y ⟶ Z) (a : F.obj X) :
(F.map (f ≫ g)) a = (F.map g) ((F.map f) a) := by simp [types_comp]
#align category_theory.functor_to_types.map_comp_apply CategoryTheory.FunctorToTypes.map_comp_apply
-/- warning: category_theory.functor_to_types.map_id_apply -> CategoryTheory.FunctorToTypes.map_id_apply is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} (a : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X X (CategoryTheory.CategoryStruct.id.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X) a) a
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} (a : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X X (CategoryTheory.CategoryStruct.id.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X) a) a
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.map_id_apply CategoryTheory.FunctorToTypes.map_id_applyₓ'. -/
@[simp]
theorem map_id_apply (a : F.obj X) : (F.map (𝟙 X)) a = a := by simp [types_id]
#align category_theory.functor_to_types.map_id_apply CategoryTheory.FunctorToTypes.map_id_apply
-/- warning: category_theory.functor_to_types.naturality -> CategoryTheory.FunctorToTypes.naturality is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} (σ : Quiver.Hom.{succ (max u3 u2), max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) F G) (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X Y) (x : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G Y) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ Y (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X Y f x)) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G X Y f (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ X x))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} (σ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) F G) (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X Y) (x : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G) Y) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ Y (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X Y f x)) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G) X Y f (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ X x))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.naturality CategoryTheory.FunctorToTypes.naturalityₓ'. -/
theorem naturality (f : X ⟶ Y) (x : F.obj X) : σ.app Y ((F.map f) x) = (G.map f) (σ.app X x) :=
congr_fun (σ.naturality f) x
#align category_theory.functor_to_types.naturality CategoryTheory.FunctorToTypes.naturality
-/- warning: category_theory.functor_to_types.comp -> CategoryTheory.FunctorToTypes.comp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (H : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} (σ : Quiver.Hom.{succ (max u3 u2), max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) F G) (τ : Quiver.Hom.{succ (max u3 u2), max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) G H) (x : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} H X) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F H (CategoryTheory.CategoryStruct.comp.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2})) F G H σ τ) X x) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G H τ X (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ X x))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (H : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} (σ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) F G) (τ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) G H) (x : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} H) X) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F H (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2})) F G H σ τ) X x) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G H τ X (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ X x))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.comp CategoryTheory.FunctorToTypes.compₓ'. -/
@[simp]
theorem comp (x : F.obj X) : (σ ≫ τ).app X x = τ.app X (σ.app X x) :=
rfl
@@ -202,56 +172,26 @@ theorem comp (x : F.obj X) : (σ ≫ τ).app X x = τ.app X (σ.app X x) :=
variable {D : Type u'} [𝒟 : Category.{u'} D] (I J : D ⥤ C) (ρ : I ⟶ J) {W : D}
-/- warning: category_theory.functor_to_types.hcomp -> CategoryTheory.FunctorToTypes.hcomp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (σ : Quiver.Hom.{succ (max u3 u2), max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) F G) {D : Type.{u4}} [𝒟 : CategoryTheory.Category.{u4, u4} D] (I : CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (J : CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (ρ : Quiver.Hom.{succ (max u4 u1), max u4 u1 u4 u3} (CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u1, max u4 u1 u4 u3} (CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u4 u1, max u4 u1 u4 u3} (CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (CategoryTheory.Functor.category.{u4, u1, u4, u3} D 𝒟 C _inst_1))) I J) {W : D} (x : CategoryTheory.Functor.obj.{u4, u2, u4, succ u2} D 𝒟 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} I F) W), Eq.{succ u2} (CategoryTheory.Functor.obj.{u4, u2, u4, succ u2} D 𝒟 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} J G) W) (CategoryTheory.NatTrans.app.{u4, u2, u4, succ u2} D 𝒟 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} I F) (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} J G) (CategoryTheory.NatTrans.hcomp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} I J F G ρ σ) W x) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G (CategoryTheory.Functor.obj.{u4, u1, u4, u3} D 𝒟 C _inst_1 I W) (CategoryTheory.Functor.obj.{u4, u1, u4, u3} D 𝒟 C _inst_1 J W) (CategoryTheory.NatTrans.app.{u4, u1, u4, u3} D 𝒟 C _inst_1 I J ρ W) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ (CategoryTheory.Functor.obj.{u4, u1, u4, u3} D 𝒟 C _inst_1 I W) x))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (σ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) F G) {D : Type.{u4}} [𝒟 : CategoryTheory.Category.{u4, u4} D] (I : CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (J : CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (ρ : Quiver.Hom.{max (succ u4) (succ u1), max (max u3 u4) u1} (CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u1, max (max u3 u4) u1} (CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u4 u1, max (max u3 u4) u1} (CategoryTheory.Functor.{u4, u1, u4, u3} D 𝒟 C _inst_1) (CategoryTheory.Functor.category.{u4, u1, u4, u3} D 𝒟 C _inst_1))) I J) {W : D} (x : Prefunctor.obj.{succ u4, succ u2, u4, succ u2} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u4} D (CategoryTheory.Category.toCategoryStruct.{u4, u4} D 𝒟)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u4, succ u2} D 𝒟 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} I F)) W), Eq.{succ u2} (Prefunctor.obj.{succ u4, succ u2, u4, succ u2} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u4} D (CategoryTheory.Category.toCategoryStruct.{u4, u4} D 𝒟)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u4, succ u2} D 𝒟 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} J G)) W) (CategoryTheory.NatTrans.app.{u4, u2, u4, succ u2} D 𝒟 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} I F) (CategoryTheory.Functor.comp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} J G) (CategoryTheory.NatTrans.hcomp.{u4, u1, u2, u4, u3, succ u2} D 𝒟 C _inst_1 Type.{u2} CategoryTheory.types.{u2} I J F G ρ σ) W x) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G) (Prefunctor.obj.{succ u4, succ u1, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u4} D (CategoryTheory.Category.toCategoryStruct.{u4, u4} D 𝒟)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u4, u1, u4, u3} D 𝒟 C _inst_1 I) W) (Prefunctor.obj.{succ u4, succ u1, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u4} D (CategoryTheory.Category.toCategoryStruct.{u4, u4} D 𝒟)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u4, u1, u4, u3} D 𝒟 C _inst_1 J) W) (CategoryTheory.NatTrans.app.{u4, u1, u4, u3} D 𝒟 C _inst_1 I J ρ W) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G σ (Prefunctor.obj.{succ u4, succ u1, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u4} D (CategoryTheory.Category.toCategoryStruct.{u4, u4} D 𝒟)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u4, u1, u4, u3} D 𝒟 C _inst_1 I) W) x))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.hcomp CategoryTheory.FunctorToTypes.hcompₓ'. -/
@[simp]
theorem hcomp (x : (I ⋙ F).obj W) : (ρ ◫ σ).app W x = (G.map (ρ.app W)) (σ.app (I.obj W) x) :=
rfl
#align category_theory.functor_to_types.hcomp CategoryTheory.FunctorToTypes.hcomp
-/- warning: category_theory.functor_to_types.map_inv_map_hom_apply -> CategoryTheory.FunctorToTypes.map_inv_map_hom_apply is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} (f : CategoryTheory.Iso.{u1, u3} C _inst_1 X Y) (x : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F Y X (CategoryTheory.Iso.inv.{u1, u3} C _inst_1 X Y f) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X Y (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 X Y f) x)) x
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} (f : CategoryTheory.Iso.{u1, u3} C _inst_1 X Y) (x : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) Y X (CategoryTheory.Iso.inv.{u1, u3} C _inst_1 X Y f) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X Y (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 X Y f) x)) x
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.map_inv_map_hom_apply CategoryTheory.FunctorToTypes.map_inv_map_hom_applyₓ'. -/
@[simp]
theorem map_inv_map_hom_apply (f : X ≅ Y) (x : F.obj X) : F.map f.inv (F.map f.Hom x) = x :=
congr_fun (F.mapIso f).hom_inv_id x
#align category_theory.functor_to_types.map_inv_map_hom_apply CategoryTheory.FunctorToTypes.map_inv_map_hom_apply
-/- warning: category_theory.functor_to_types.map_hom_map_inv_apply -> CategoryTheory.FunctorToTypes.map_hom_map_inv_apply is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} (f : CategoryTheory.Iso.{u1, u3} C _inst_1 X Y) (y : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F Y), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F Y) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X Y (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 X Y f) (CategoryTheory.Functor.map.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F Y X (CategoryTheory.Iso.inv.{u1, u3} C _inst_1 X Y f) y)) y
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) {X : C} {Y : C} (f : CategoryTheory.Iso.{u1, u3} C _inst_1 X Y) (y : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) Y), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) Y) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X Y (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 X Y f) (Prefunctor.map.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) Y X (CategoryTheory.Iso.inv.{u1, u3} C _inst_1 X Y f) y)) y
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.map_hom_map_inv_apply CategoryTheory.FunctorToTypes.map_hom_map_inv_applyₓ'. -/
@[simp]
theorem map_hom_map_inv_apply (f : X ≅ Y) (y : F.obj Y) : F.map f.Hom (F.map f.inv y) = y :=
congr_fun (F.mapIso f).inv_hom_id y
#align category_theory.functor_to_types.map_hom_map_inv_apply CategoryTheory.FunctorToTypes.map_hom_map_inv_apply
-/- warning: category_theory.functor_to_types.hom_inv_id_app_apply -> CategoryTheory.FunctorToTypes.hom_inv_id_app_apply is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (α : CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G) (X : C) (x : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F X) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G F (CategoryTheory.Iso.inv.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G (CategoryTheory.Iso.hom.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X x)) x
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (α : CategoryTheory.Iso.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G) (X : C) (x : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F) X) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G F (CategoryTheory.Iso.inv.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G (CategoryTheory.Iso.hom.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X x)) x
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.hom_inv_id_app_apply CategoryTheory.FunctorToTypes.hom_inv_id_app_applyₓ'. -/
@[simp]
theorem hom_inv_id_app_apply (α : F ≅ G) (X) (x) : α.inv.app X (α.Hom.app X x) = x :=
congr_fun (α.hom_inv_id_app X) x
#align category_theory.functor_to_types.hom_inv_id_app_apply CategoryTheory.FunctorToTypes.hom_inv_id_app_apply
-/- warning: category_theory.functor_to_types.inv_hom_id_app_apply -> CategoryTheory.FunctorToTypes.inv_hom_id_app_apply is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (α : CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G) (X : C) (x : CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G X), Eq.{succ u2} (CategoryTheory.Functor.obj.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G X) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G (CategoryTheory.Iso.hom.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G F (CategoryTheory.Iso.inv.{max u3 u2, max u1 u2 u3 (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X x)) x
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (F : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (G : CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (α : CategoryTheory.Iso.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G) (X : C) (x : Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G) X), Eq.{succ u2} (Prefunctor.obj.{succ u1, succ u2, u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G) X) (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} F G (CategoryTheory.Iso.hom.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X (CategoryTheory.NatTrans.app.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2} G F (CategoryTheory.Iso.inv.{max u3 u2, max (max u3 u1) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u1, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) F G α) X x)) x
-Case conversion may be inaccurate. Consider using '#align category_theory.functor_to_types.inv_hom_id_app_apply CategoryTheory.FunctorToTypes.inv_hom_id_app_applyₓ'. -/
@[simp]
theorem inv_hom_id_app_apply (α : F ≅ G) (X) (x) : α.Hom.app X (α.inv.app X x) = x :=
congr_fun (α.inv_hom_id_app X) x
@@ -278,12 +218,6 @@ def uliftFunctor : Type u ⥤ Type max u v
#align category_theory.ulift_functor CategoryTheory.uliftFunctor
-/
-/- warning: category_theory.ulift_functor_map -> CategoryTheory.uliftFunctor_map is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u2}} {Y : Type.{u2}} (f : Quiver.Hom.{succ u2, succ u2} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) X Y) (x : ULift.{u1, u2} X), Eq.{succ (max u2 u1)} (CategoryTheory.Functor.obj.{u2, max u2 u1, succ u2, succ (max u2 u1)} Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} CategoryTheory.uliftFunctor.{u1, u2} Y) (CategoryTheory.Functor.map.{u2, max u2 u1, succ u2, succ (max u2 u1)} Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} CategoryTheory.uliftFunctor.{u1, u2} X Y f x) (ULift.up.{u1, u2} Y (f (ULift.down.{u1, u2} X x)))
-but is expected to have type
- forall {X : Type.{u2}} {Y : Type.{u2}} (f : Quiver.Hom.{succ u2, succ u2} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) X Y) (x : ULift.{u1, u2} X), Eq.{max (succ u2) (succ u1)} (Prefunctor.obj.{succ u2, max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u2, max u2 u1, succ u2, max (succ u2) (succ u1)} Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} CategoryTheory.uliftFunctor.{u1, u2}) Y) (Prefunctor.map.{succ u2, max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u2, max u2 u1, succ u2, max (succ u2) (succ u1)} Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} CategoryTheory.uliftFunctor.{u1, u2}) X Y f x) (ULift.up.{u1, u2} Y (f (ULift.down.{u1, u2} X x)))
-Case conversion may be inaccurate. Consider using '#align category_theory.ulift_functor_map CategoryTheory.uliftFunctor_mapₓ'. -/
@[simp]
theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
uliftFunctor.map f x = ULift.up (f x.down) :=
@@ -387,23 +321,11 @@ def ofTypeFunctor (m : Type u → Type v) [Functor m] [LawfulFunctor m] : Type u
variable (m : Type u → Type v) [Functor m] [LawfulFunctor m]
-/- warning: category_theory.of_type_functor_obj -> CategoryTheory.ofTypeFunctor_obj is a dubious translation:
-lean 3 declaration is
- forall (m : Type.{u2} -> Type.{u1}) [_inst_1 : Functor.{u2, u1} m] [_inst_2 : LawfulFunctor.{u2, u1} m _inst_1], Eq.{max (succ (succ u2)) (succ (succ u1))} (Type.{u2} -> Type.{u1}) (CategoryTheory.Functor.obj.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2)) m
-but is expected to have type
- forall (m : Type.{u2} -> Type.{u1}) [_inst_1 : Functor.{u2, u1} m] [_inst_2 : LawfulFunctor.{u2, u1} m _inst_1], Eq.{max (succ (succ u2)) (succ (succ u1))} (Type.{u2} -> Type.{u1}) (Prefunctor.obj.{succ u2, succ u1, succ u2, succ u1} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2))) m
-Case conversion may be inaccurate. Consider using '#align category_theory.of_type_functor_obj CategoryTheory.ofTypeFunctor_objₓ'. -/
@[simp]
theorem ofTypeFunctor_obj : (ofTypeFunctor m).obj = m :=
rfl
#align category_theory.of_type_functor_obj CategoryTheory.ofTypeFunctor_obj
-/- warning: category_theory.of_type_functor_map -> CategoryTheory.ofTypeFunctor_map is a dubious translation:
-lean 3 declaration is
- forall (m : Type.{u2} -> Type.{u1}) [_inst_1 : Functor.{u2, u1} m] [_inst_2 : LawfulFunctor.{u2, u1} m _inst_1] {α : Type.{u2}} {β : Type.{u2}} (f : α -> β), Eq.{succ u1} (Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.obj.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2) α) (CategoryTheory.Functor.obj.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2) β)) (CategoryTheory.Functor.map.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2) α β f) (Functor.map.{u2, u1} m _inst_1 α β f)
-but is expected to have type
- forall (m : Type.{u2} -> Type.{u1}) [_inst_1 : Functor.{u2, u1} m] [_inst_2 : LawfulFunctor.{u2, u1} m _inst_1] {α : Type.{u2}} {β : Type.{u2}} (f : α -> β), Eq.{succ u1} (Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (Prefunctor.obj.{succ u2, succ u1, succ u2, succ u1} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2)) α) (Prefunctor.obj.{succ u2, succ u1, succ u2, succ u1} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2)) β)) (Prefunctor.map.{succ u2, succ u1, succ u2, succ u1} Type.{u2} (CategoryTheory.CategoryStruct.toQuiver.{u2, succ u2} Type.{u2} (CategoryTheory.Category.toCategoryStruct.{u2, succ u2} Type.{u2} CategoryTheory.types.{u2})) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, succ u2, succ u1} Type.{u2} CategoryTheory.types.{u2} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.ofTypeFunctor.{u1, u2} m _inst_1 _inst_2)) α β f) (Functor.map.{u2, u1} m _inst_1 α β f)
-Case conversion may be inaccurate. Consider using '#align category_theory.of_type_functor_map CategoryTheory.ofTypeFunctor_mapₓ'. -/
@[simp]
theorem ofTypeFunctor_map {α β} (f : α → β) :
(ofTypeFunctor m).map f = (Functor.map f : m α → m β) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Functor.Full
a Prop (#12449)
Before this PR, Functor.Full
contained the data of the preimage of maps by a full functor F
. This PR makes Functor.Full
a proposition. This is to prevent any diamond to appear.
The lemma Functor.image_preimage
is also renamed Functor.map_preimage
.
Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
@@ -225,9 +225,9 @@ theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
rfl
#align category_theory.ulift_functor_map CategoryTheory.uliftFunctor_map
-instance uliftFunctorFull : Functor.Full.{u} uliftFunctor where
- preimage f x := (f (ULift.up x)).down
-#align category_theory.ulift_functor_full CategoryTheory.uliftFunctorFull
+instance uliftFunctor_full : Functor.Full.{u} uliftFunctor where
+ map_surjective f := ⟨fun x => (f (ULift.up x)).down, rfl⟩
+#align category_theory.ulift_functor_full CategoryTheory.uliftFunctor_full
instance uliftFunctor_faithful : uliftFunctor.Faithful where
map_injective {_X} {_Y} f g p :=
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -225,10 +225,11 @@ theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
rfl
#align category_theory.ulift_functor_map CategoryTheory.uliftFunctor_map
-instance uliftFunctorFull : Full.{u} uliftFunctor where preimage f x := (f (ULift.up x)).down
+instance uliftFunctorFull : Functor.Full.{u} uliftFunctor where
+ preimage f x := (f (ULift.up x)).down
#align category_theory.ulift_functor_full CategoryTheory.uliftFunctorFull
-instance uliftFunctor_faithful : Faithful uliftFunctor where
+instance uliftFunctor_faithful : uliftFunctor.Faithful where
map_injective {_X} {_Y} f g p :=
funext fun x =>
congr_arg ULift.down (congr_fun p (ULift.up x) : ULift.up (f x) = ULift.up (g x))
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -147,7 +147,6 @@ end Functor
namespace FunctorToTypes
variable {C : Type u} [Category.{v} C] (F G H : C ⥤ Type w) {X Y Z : C}
-
variable (σ : F ⟶ G) (τ : G ⟶ H)
@[simp]
@@ -258,7 +258,6 @@ See <https://stacks.math.columbia.edu/tag/003C>.
theorem mono_iff_injective {X Y : Type u} (f : X ⟶ Y) : Mono f ↔ Function.Injective f := by
constructor
· intro H x x' h
- skip
rw [← homOfElement_eq_iff] at h ⊢
exact (cancel_mono f).mp h
· exact fun H => ⟨fun g g' h => H.comp_left h⟩
This is a smaller version of #7020. Before this PR, for limits, we gave instances for small indexing categories, but for colimits, we gave instances for TypeMax
. This PR changes so that we give instances for small indexing categories in both cases. This is more general and also more uniform.
Co-authored-by: Joël Riou <rioujoel@gmail.com>
@@ -130,6 +130,9 @@ lemma sections_property {F : J ⥤ Type w} (s : (F.sections : Type _))
{j j' : J} (f : j ⟶ j') : F.map f (s.val j) = s.val j' :=
s.property f
+lemma sections_ext_iff {F : J ⥤ Type w} {x y : F.sections} : x = y ↔ ∀ j, x.val j = y.val j :=
+ Subtype.ext_iff.trans Function.funext_iff
+
variable (J)
/-- The functor which sends a functor to types to its sections. -/
@@ -116,7 +116,7 @@ variable {J : Type u} [Category.{v} J]
/-- The sections of a functor `J ⥤ Type` are
the choices of a point `u j : F.obj j` for each `j`,
-such that `F.map f (u j) = u j` for every morphism `f : j ⟶ j'`.
+such that `F.map f (u j) = u j'` for every morphism `f : j ⟶ j'`.
We later use these to define limits in `Type` and in many concrete categories.
-/
@@ -124,7 +124,7 @@ def sections (F : J ⥤ Type w) : Set (∀ j, F.obj j) :=
{ u | ∀ {j j'} (f : j ⟶ j'), F.map f (u j) = u j' }
#align category_theory.functor.sections CategoryTheory.Functor.sections
--- porting note: added this simp lemma
+-- Porting note (#10756): added this simp lemma
@[simp]
lemma sections_property {F : J ⥤ Type w} (s : (F.sections : Type _))
{j j' : J} (f : j ⟶ j') : F.map f (s.val j) = s.val j' :=
lemma was not necessary
porting notes (category theory) (#10674)
Classifies by adding issue number (#10688) to porting notes claiming ext/simp lemma was not necessary
.
Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>
@@ -52,7 +52,7 @@ theorem types_hom {α β : Type u} : (α ⟶ β) = (α → β) :=
rfl
#align category_theory.types_hom CategoryTheory.types_hom
--- porting note: this lemma was not here in Lean 3. Lean 3 `ext` would solve this goal
+-- porting note (#10688): this lemma was not here in Lean 3. Lean 3 `ext` would solve this goal
-- because of its "if all else fails, apply all `ext` lemmas" policy,
-- which apparently we want to move away from.
@[ext] theorem types_ext {α β : Type u} (f g : α ⟶ β) (h : ∀ a : α, f a = g a) : f = g := by
eqToHom_map
is notoriously not a good simp
lemma, but these variants should be safe and already go a long way.
@@ -165,6 +165,11 @@ theorem comp (x : F.obj X) : (σ ≫ τ).app X x = τ.app X (σ.app X x) :=
rfl
#align category_theory.functor_to_types.comp CategoryTheory.FunctorToTypes.comp
+@[simp]
+theorem eqToHom_map_comp_apply (p : X = Y) (q : Y = Z) (x : F.obj X) :
+ F.map (eqToHom q) (F.map (eqToHom p) x) = F.map (eqToHom <| p.trans q) x := by
+ aesop_cat
+
variable {D : Type u'} [𝒟 : Category.{u'} D] (I J : D ⥤ C) (ρ : I ⟶ J) {W : D}
@[simp]
@@ -396,7 +396,7 @@ instance : SplitEpiCategory (Type u) where
end CategoryTheory
-- We prove `equivIsoIso` and then use that to sneakily construct `equivEquivIso`.
--- (In this order the proofs are handled by `obviously`.)
+-- (In this order the proofs are handled by `aesop_cat`.)
/-- Equivalences (between types in the same universe) are the same as (isomorphic to) isomorphisms
of types. -/
@[simps]
Data.Set.Basic
from scripts/noshake.json
.example
s only,
move these example
s to a new test file.Order.Filter.Basic
dependency on Control.Traversable.Instances
,
as the relevant parts were moved to Order.Filter.ListTraverse
.lake exe shake --fix
.@@ -5,8 +5,8 @@ Authors: Stephen Morgan, Scott Morrison, Johannes Hölzl
-/
import Mathlib.CategoryTheory.EpiMono
import Mathlib.CategoryTheory.Functor.FullyFaithful
-import Mathlib.Data.Set.Basic
import Mathlib.Tactic.PPWithUniv
+import Mathlib.Data.Set.Defs
#align_import category_theory.types from "leanprover-community/mathlib"@"48085f140e684306f9e7da907cd5932056d1aded"
@@ -5,7 +5,6 @@ Authors: Stephen Morgan, Scott Morrison, Johannes Hölzl
-/
import Mathlib.CategoryTheory.EpiMono
import Mathlib.CategoryTheory.Functor.FullyFaithful
-import Mathlib.Logic.Equiv.Basic
import Mathlib.Data.Set.Basic
import Mathlib.Tactic.PPWithUniv
@@ -131,6 +131,15 @@ lemma sections_property {F : J ⥤ Type w} (s : (F.sections : Type _))
{j j' : J} (f : j ⟶ j') : F.map f (s.val j) = s.val j' :=
s.property f
+variable (J)
+
+/-- The functor which sends a functor to types to its sections. -/
+@[simps]
+def sectionsFunctor : (J ⥤ Type w) ⥤ Type max u w where
+ obj F := F.sections
+ map {F G} φ x := ⟨fun j => φ.app j (x.1 j), fun {j j'} f =>
+ (congr_fun (φ.naturality f) (x.1 j)).symm.trans (by simp [x.2 f])⟩
+
end Functor
namespace FunctorToTypes
@@ -128,7 +128,7 @@ def sections (F : J ⥤ Type w) : Set (∀ j, F.obj j) :=
-- porting note: added this simp lemma
@[simp]
lemma sections_property {F : J ⥤ Type w} (s : (F.sections : Type _))
- {j j' : J} (f : j ⟶ j') : F.map f (s.val j) = s.val j' :=
+ {j j' : J} (f : j ⟶ j') : F.map f (s.val j) = s.val j' :=
s.property f
end Functor
@@ -213,8 +213,8 @@ theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
instance uliftFunctorFull : Full.{u} uliftFunctor where preimage f x := (f (ULift.up x)).down
#align category_theory.ulift_functor_full CategoryTheory.uliftFunctorFull
-instance uliftFunctor_faithful : Faithful uliftFunctor
- where map_injective {_X} {_Y} f g p :=
+instance uliftFunctor_faithful : Faithful uliftFunctor where
+ map_injective {_X} {_Y} f g p :=
funext fun x =>
congr_arg ULift.down (congr_fun p (ULift.up x) : ULift.up (f x) = ULift.up (g x))
#align category_theory.ulift_functor_faithful CategoryTheory.uliftFunctor_faithful
@@ -379,8 +379,8 @@ theorem isIso_iff_bijective {X Y : Type u} (f : X ⟶ Y) : IsIso f ↔ Function.
IsIso.of_iso (Equiv.ofBijective f b).toIso
#align category_theory.is_iso_iff_bijective CategoryTheory.isIso_iff_bijective
-instance : SplitEpiCategory (Type u)
- where isSplitEpi_of_epi f hf :=
+instance : SplitEpiCategory (Type u) where
+ isSplitEpi_of_epi f hf :=
IsSplitEpi.mk' <|
{ section_ := Function.surjInv <| (epi_iff_surjective f).1 hf
id := funext <| Function.rightInverse_surjInv <| (epi_iff_surjective f).1 hf }
@@ -2,11 +2,6 @@
Copyright (c) 2017 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Johannes Hölzl
-
-! This file was ported from Lean 3 source module category_theory.types
-! leanprover-community/mathlib commit 48085f140e684306f9e7da907cd5932056d1aded
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.EpiMono
import Mathlib.CategoryTheory.Functor.FullyFaithful
@@ -14,6 +9,8 @@ import Mathlib.Logic.Equiv.Basic
import Mathlib.Data.Set.Basic
import Mathlib.Tactic.PPWithUniv
+#align_import category_theory.types from "leanprover-community/mathlib"@"48085f140e684306f9e7da907cd5932056d1aded"
+
/-!
# The category `Type`.
@@ -200,14 +200,13 @@ def uliftTrivial (V : Type u) : ULift.{u} V ≅ V where
/-- The functor embedding `Type u` into `Type (max u v)`.
Write this as `uliftFunctor.{5, 2}` to get `Type 2 ⥤ Type 5`.
-/
+@[pp_with_univ]
def uliftFunctor : Type u ⥤ Type max u v
where
obj X := ULift.{v} X
map {X} {Y} f := fun x : ULift.{v} X => ULift.up (f x.down)
#align category_theory.ulift_functor CategoryTheory.uliftFunctor
-pp_with_univ uliftFunctor
-
@[simp]
theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
uliftFunctor.map f x = ULift.up (f x.down) :=
@@ -343,8 +343,8 @@ open CategoryTheory
variable {X Y : Type u}
-/-- Any isomorphism between types gives an equivalence.
--/
+/-- Any isomorphism between types gives an equivalence. -/
+@[pp_dot]
def toEquiv (i : X ≅ Y) : X ≃ Y where
toFun := i.hom
invFun := i.inv
@@ -352,8 +352,6 @@ def toEquiv (i : X ≅ Y) : X ≃ Y where
right_inv y := congr_fun i.inv_hom_id y
#align category_theory.iso.to_equiv CategoryTheory.Iso.toEquiv
-pp_extended_field_notation Iso.toEquiv
-
@[simp]
theorem toEquiv_fun (i : X ≅ Y) : (i.toEquiv : X → Y) = i.hom :=
rfl
@@ -12,6 +12,7 @@ import Mathlib.CategoryTheory.EpiMono
import Mathlib.CategoryTheory.Functor.FullyFaithful
import Mathlib.Logic.Equiv.Basic
import Mathlib.Data.Set.Basic
+import Mathlib.Tactic.PPWithUniv
/-!
# The category `Type`.
@@ -197,7 +198,7 @@ def uliftTrivial (V : Type u) : ULift.{u} V ≅ V where
#align category_theory.ulift_trivial CategoryTheory.uliftTrivial
/-- The functor embedding `Type u` into `Type (max u v)`.
-Write this as `uliftFunctor.{5 2}` to get `Type 2 ⥤ Type 5`.
+Write this as `uliftFunctor.{5, 2}` to get `Type 2 ⥤ Type 5`.
-/
def uliftFunctor : Type u ⥤ Type max u v
where
@@ -205,6 +206,8 @@ def uliftFunctor : Type u ⥤ Type max u v
map {X} {Y} f := fun x : ULift.{v} X => ULift.up (f x.down)
#align category_theory.ulift_functor CategoryTheory.uliftFunctor
+pp_with_univ uliftFunctor
+
@[simp]
theorem uliftFunctor_map {X Y : Type u} (f : X ⟶ Y) (x : ULift.{v} X) :
uliftFunctor.map f x = ULift.up (f x.down) :=
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -244,7 +244,7 @@ theorem mono_iff_injective {X Y : Type u} (f : X ⟶ Y) : Mono f ↔ Function.In
constructor
· intro H x x' h
skip
- rw [← homOfElement_eq_iff] at h⊢
+ rw [← homOfElement_eq_iff] at h ⊢
exact (cancel_mono f).mp h
· exact fun H => ⟨fun g g' h => H.comp_left h⟩
#align category_theory.mono_iff_injective CategoryTheory.mono_iff_injective
@@ -194,8 +194,6 @@ and the original type.
def uliftTrivial (V : Type u) : ULift.{u} V ≅ V where
hom a := a.1
inv a := .up a
- hom_inv_id := by aesop_cat
- inv_hom_id := by aesop_cat
#align category_theory.ulift_trivial CategoryTheory.uliftTrivial
/-- The functor embedding `Type u` into `Type (max u v)`.
@@ -225,7 +223,7 @@ instance uliftFunctor_faithful : Faithful uliftFunctor
/-- The functor embedding `Type u` into `Type u` via `ULift` is isomorphic to the identity functor.
-/
def uliftFunctorTrivial : uliftFunctor.{u, u} ≅ 𝟭 _ :=
- NatIso.ofComponents uliftTrivial (by aesop_cat)
+ NatIso.ofComponents uliftTrivial
#align category_theory.ulift_functor_trivial CategoryTheory.uliftFunctorTrivial
-- TODO We should connect this to a general story about concrete categories
fix-comments.py
on all files.@@ -188,7 +188,7 @@ theorem inv_hom_id_app_apply (α : F ≅ G) (X) (x) : α.hom.app X (α.inv.app X
end FunctorToTypes
-/-- The isomorphism between a `Type` which has been `ulift`ed to the same universe,
+/-- The isomorphism between a `Type` which has been `ULift`ed to the same universe,
and the original type.
-/
def uliftTrivial (V : Type u) : ULift.{u} V ≅ V where
@@ -222,7 +222,7 @@ instance uliftFunctor_faithful : Faithful uliftFunctor
congr_arg ULift.down (congr_fun p (ULift.up x) : ULift.up (f x) = ULift.up (g x))
#align category_theory.ulift_functor_faithful CategoryTheory.uliftFunctor_faithful
-/-- The functor embedding `Type u` into `Type u` via `ulift` is isomorphic to the identity functor.
+/-- The functor embedding `Type u` into `Type u` via `ULift` is isomorphic to the identity functor.
-/
def uliftFunctorTrivial : uliftFunctor.{u, u} ≅ 𝟭 _ :=
NatIso.ofComponents uliftTrivial (by aesop_cat)
@@ -230,7 +230,7 @@ def uliftFunctorTrivial : uliftFunctor.{u, u} ≅ 𝟭 _ :=
-- TODO We should connect this to a general story about concrete categories
-- whose forgetful functor is representable.
-/-- Any term `x` of a type `X` corresponds to a morphism `punit ⟶ X`. -/
+/-- Any term `x` of a type `X` corresponds to a morphism `PUnit ⟶ X`. -/
def homOfElement {X : Type u} (x : X) : PUnit ⟶ X := fun _ => x
#align category_theory.hom_of_element CategoryTheory.homOfElement
@@ -351,6 +351,8 @@ def toEquiv (i : X ≅ Y) : X ≃ Y where
right_inv y := congr_fun i.inv_hom_id y
#align category_theory.iso.to_equiv CategoryTheory.Iso.toEquiv
+pp_extended_field_notation Iso.toEquiv
+
@[simp]
theorem toEquiv_fun (i : X ≅ Y) : (i.toEquiv : X → Y) = i.hom :=
rfl
Type u
(#3593)
This lemma, which was not needed in mathlib3, simplifies several proofs (back to the state they were in in mathlib3).
Note on what's going on here: Lean 3 ext
would fall back on "try all ext lemmas" if it failed, and thus it could see through lots of definitional equalities. Lean 4 ext
doesn't do this (because it's inefficient) and so we need to add more ext
lemmas in order to recover Lean 3 functionality.
@@ -55,6 +55,13 @@ theorem types_hom {α β : Type u} : (α ⟶ β) = (α → β) :=
rfl
#align category_theory.types_hom CategoryTheory.types_hom
+-- porting note: this lemma was not here in Lean 3. Lean 3 `ext` would solve this goal
+-- because of its "if all else fails, apply all `ext` lemmas" policy,
+-- which apparently we want to move away from.
+@[ext] theorem types_ext {α β : Type u} (f g : α ⟶ β) (h : ∀ a : α, f a = g a) : f = g := by
+ funext x
+ exact h x
+
theorem types_id (X : Type u) : 𝟙 X = id :=
rfl
#align category_theory.types_id CategoryTheory.types_id
@@ -11,6 +11,7 @@ Authors: Stephen Morgan, Scott Morrison, Johannes Hölzl
import Mathlib.CategoryTheory.EpiMono
import Mathlib.CategoryTheory.Functor.FullyFaithful
import Mathlib.Logic.Equiv.Basic
+import Mathlib.Data.Set.Basic
/-!
# The category `Type`.
@@ -119,6 +120,12 @@ def sections (F : J ⥤ Type w) : Set (∀ j, F.obj j) :=
{ u | ∀ {j j'} (f : j ⟶ j'), F.map f (u j) = u j' }
#align category_theory.functor.sections CategoryTheory.Functor.sections
+-- porting note: added this simp lemma
+@[simp]
+lemma sections_property {F : J ⥤ Type w} (s : (F.sections : Type _))
+ {j j' : J} (f : j ⟶ j') : F.map f (s.val j) = s.val j' :=
+ s.property f
+
end Functor
namespace FunctorToTypes
@@ -37,7 +37,7 @@ We prove some basic facts about the category `Type`:
namespace CategoryTheory
--- morphism levels before object levels. See note [category_theory universes].
+-- morphism levels before object levels. See note [CategoryTheory universes].
universe v v' w u u'
/- The `@[to_additive]` attribute is just a hint that expressions involving this instance can
@@ -20,7 +20,7 @@ can be viewed as a `LargeCategory` in our framework.
Lean can not transparently view a function as a morphism in this category, and needs a hint in
order to be able to type check. We provide the abbreviation `asHom f` to guide type checking,
-as well as a corresponding notation `↾ f`. (Entered as `\upr `.)
+as well as a corresponding notation `↾ f`. (Entered as `\upr `.)
We provide various simplification lemmas for functors and natural transformations valued in `Type`.
@@ -42,7 +42,7 @@ universe v v' w u u'
/- The `@[to_additive]` attribute is just a hint that expressions involving this instance can
still be additivized. -/
-@[to_additive CategoryTheory.types]
+@[to_additive existing CategoryTheory.types]
instance types : LargeCategory (Type u)
where
Hom a b := a → b
@@ -177,11 +177,11 @@ end FunctorToTypes
/-- The isomorphism between a `Type` which has been `ulift`ed to the same universe,
and the original type.
-/
-def uliftTrivial (V : Type u) : ULift.{u} V ≅ V where
+def uliftTrivial (V : Type u) : ULift.{u} V ≅ V where
hom a := a.1
- inv a := .up a
- hom_inv_id := by aesop_cat
- inv_hom_id := by aesop_cat
+ inv a := .up a
+ hom_inv_id := by aesop_cat
+ inv_hom_id := by aesop_cat
#align category_theory.ulift_trivial CategoryTheory.uliftTrivial
/-- The functor embedding `Type u` into `Type (max u v)`.
@@ -221,7 +221,7 @@ def homOfElement {X : Type u} (x : X) : PUnit ⟶ X := fun _ => x
#align category_theory.hom_of_element CategoryTheory.homOfElement
theorem homOfElement_eq_iff {X : Type u} (x y : X) : homOfElement x = homOfElement y ↔ x = y :=
- ⟨fun H => congr_fun H PUnit.unit, by aesop⟩
+ ⟨fun H => congr_fun H PUnit.unit, by aesop⟩
#align category_theory.hom_of_element_eq_iff CategoryTheory.homOfElement_eq_iff
/-- A morphism in `Type` is a monomorphism if and only if it is injective.
@@ -267,9 +267,9 @@ allows us to use these functors in category theory. -/
def ofTypeFunctor (m : Type u → Type v) [_root_.Functor m] [LawfulFunctor m] : Type u ⥤ Type v
where
obj := m
- map f := Functor.map f
- map_id := fun α => by funext X; apply id_map /- Porting note: original proof is via
- `fun α => _root_.Functor.map_id` but I cannot get Lean to find this. Reproduced its
+ map f := Functor.map f
+ map_id := fun α => by funext X; apply id_map /- Porting note: original proof is via
+ `fun α => _root_.Functor.map_id` but I cannot get Lean to find this. Reproduced its
original proof -/
map_comp f g := funext fun a => LawfulFunctor.comp_map f g _
#align category_theory.of_type_functor CategoryTheory.ofTypeFunctor
All dependencies are ported!