category_theory.structured_arrow
⟷
Mathlib.CategoryTheory.Comma.StructuredArrow
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)
(last sync)
For some comma
categories like structured_arrow
, over
, under
, the definition of some data fields could be obtained automatically by the obviously tactic. This PR removes this behaviour. Instead, specialized constructors like structured_arrow.mk
or structured_arrow.hom_mk
are used more systematically.
@@ -69,7 +69,7 @@ structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
-/
def hom_mk' {F : C ⥤ D} {X : D} {Y : C}
(U : structured_arrow X F) (f : U.right ⟶ Y) :
-U ⟶ mk (U.hom ≫ F.map f) := { right := f }
+U ⟶ mk (U.hom ≫ F.map f) := { left := eq_to_hom (by ext), right := f }
/--
To construct an isomorphism of structured arrows,
@@ -165,9 +165,9 @@ comma.pre_right _ F G
/-- The functor `(S, F) ⥤ (G(S), F ⋙ G)`. -/
@[simps] def post (S : C) (F : B ⥤ C) (G : C ⥤ D) :
structured_arrow S F ⥤ structured_arrow (G.obj S) (F ⋙ G) :=
-{ obj := λ X, { right := X.right, hom := G.map X.hom },
- map := λ X Y f, { right := f.right, w' :=
- by { simp [functor.comp_map, ←G.map_comp, ← f.w] } } }
+{ obj := λ X, structured_arrow.mk (G.map X.hom),
+ map := λ X Y f, structured_arrow.hom_mk f.right
+ (by simp [functor.comp_map, ←G.map_comp, ← f.w]) }
instance small_proj_preimage_of_locally_small {𝒢 : set C} [small.{v₁} 𝒢] [locally_small.{v₁} D] :
small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
@@ -315,9 +315,9 @@ comma.pre_left F G _
/-- The functor `(F, S) ⥤ (F ⋙ G, G(S))`. -/
@[simps] def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
costructured_arrow F S ⥤ costructured_arrow (F ⋙ G) (G.obj S) :=
-{ obj := λ X, { left := X.left, hom := G.map X.hom },
- map := λ X Y f, { left := f.left, w' :=
- by { simp [functor.comp_map, ←G.map_comp, ← f.w] } } }
+{ obj := λ X, costructured_arrow.mk (G.map X.hom),
+ map := λ X Y f, costructured_arrow.hom_mk f.left
+ (by simp [functor.comp_map, ←G.map_comp, ← f.w]), }
instance small_proj_preimage_of_locally_small {𝒢 : set C} [small.{v₁} 𝒢] [locally_small.{v₁} D] :
small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -141,7 +141,7 @@ theorem ext_iff {A B : StructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.right
-/
#print CategoryTheory.StructuredArrow.proj_faithful /-
-instance proj_faithful : Faithful (proj S T) where map_injective' X Y := ext
+instance proj_faithful : CategoryTheory.Functor.Faithful (proj S T) where map_injective' X Y := ext
#align category_theory.structured_arrow.proj_faithful CategoryTheory.StructuredArrow.proj_faithful
-/
@@ -223,7 +223,7 @@ theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
-/
#print CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms /-
-instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T)
+instance proj_reflectsIsomorphisms : CategoryTheory.Functor.ReflectsIsomorphisms (proj S T)
where reflects Y Z f t :=
⟨⟨structured_arrow.hom_mk (inv ((proj S T).map f)) (by simp), by tidy⟩⟩
#align category_theory.structured_arrow.proj_reflects_iso CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms
@@ -235,7 +235,8 @@ attribute [local tidy] tactic.discrete_cases
#print CategoryTheory.StructuredArrow.mkIdInitial /-
/-- The identity structured arrow is initial. -/
-def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
+def mkIdInitial [CategoryTheory.Functor.Full T] [CategoryTheory.Functor.Faithful T] :
+ IsInitial (mk (𝟙 (T.obj Y)))
where
desc c := homMk (T.preimage c.pt.Hom) (by dsimp; simp)
uniq c m _ := by
@@ -374,7 +375,7 @@ theorem ext_iff {A B : CostructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.left
-/
#print CategoryTheory.CostructuredArrow.proj_faithful /-
-instance proj_faithful : Faithful (proj S T) where map_injective' X Y := ext
+instance proj_faithful : CategoryTheory.Functor.Faithful (proj S T) where map_injective' X Y := ext
#align category_theory.costructured_arrow.proj_faithful CategoryTheory.CostructuredArrow.proj_faithful
-/
@@ -456,7 +457,7 @@ theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
-/
#print CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms /-
-instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T)
+instance proj_reflectsIsomorphisms : CategoryTheory.Functor.ReflectsIsomorphisms (proj S T)
where reflects Y Z f t :=
⟨⟨costructured_arrow.hom_mk (inv ((proj S T).map f)) (by simp), by tidy⟩⟩
#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms
@@ -468,7 +469,8 @@ attribute [local tidy] tactic.discrete_cases
#print CategoryTheory.CostructuredArrow.mkIdTerminal /-
/-- The identity costructured arrow is terminal. -/
-def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
+def mkIdTerminal [CategoryTheory.Functor.Full S] [CategoryTheory.Functor.Faithful S] :
+ IsTerminal (mk (𝟙 (S.obj Y)))
where
lift c := homMk (S.preimage c.pt.Hom) (by dsimp; simp)
uniq := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,8 +3,8 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
-/
-import CategoryTheory.Punit
-import CategoryTheory.Comma
+import CategoryTheory.PUnit
+import CategoryTheory.Comma.Basic
import CategoryTheory.Limits.Shapes.Terminal
import CategoryTheory.EssentiallySmall
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
-/
-import Mathbin.CategoryTheory.Punit
-import Mathbin.CategoryTheory.Comma
-import Mathbin.CategoryTheory.Limits.Shapes.Terminal
-import Mathbin.CategoryTheory.EssentiallySmall
+import CategoryTheory.Punit
+import CategoryTheory.Comma
+import CategoryTheory.Limits.Shapes.Terminal
+import CategoryTheory.EssentiallySmall
#align_import category_theory.structured_arrow from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.structured_arrow
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Punit
import Mathbin.CategoryTheory.Comma
import Mathbin.CategoryTheory.Limits.Shapes.Terminal
import Mathbin.CategoryTheory.EssentiallySmall
+#align_import category_theory.structured_arrow from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# The category of "structured arrows"
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -59,31 +59,42 @@ def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
variable {S S' S'' : D} {Y Y' : C} {T : C ⥤ D}
+#print CategoryTheory.StructuredArrow.mk /-
/-- Construct a structured arrow from a morphism. -/
def mk (f : S ⟶ T.obj Y) : StructuredArrow S T :=
⟨⟨⟨⟩⟩, Y, f⟩
#align category_theory.structured_arrow.mk CategoryTheory.StructuredArrow.mk
+-/
+#print CategoryTheory.StructuredArrow.mk_left /-
@[simp]
theorem mk_left (f : S ⟶ T.obj Y) : (mk f).left = ⟨⟨⟩⟩ :=
rfl
#align category_theory.structured_arrow.mk_left CategoryTheory.StructuredArrow.mk_left
+-/
+#print CategoryTheory.StructuredArrow.mk_right /-
@[simp]
theorem mk_right (f : S ⟶ T.obj Y) : (mk f).right = Y :=
rfl
#align category_theory.structured_arrow.mk_right CategoryTheory.StructuredArrow.mk_right
+-/
+#print CategoryTheory.StructuredArrow.mk_hom_eq_self /-
@[simp]
theorem mk_hom_eq_self (f : S ⟶ T.obj Y) : (mk f).Hom = f :=
rfl
#align category_theory.structured_arrow.mk_hom_eq_self CategoryTheory.StructuredArrow.mk_hom_eq_self
+-/
+#print CategoryTheory.StructuredArrow.w /-
@[simp, reassoc]
theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.Hom ≫ T.map f.right = B.Hom := by
have := f.w <;> tidy
#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.w
+-/
+#print CategoryTheory.StructuredArrow.homMk /-
/-- To construct a morphism of structured arrows,
we need a morphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -95,7 +106,9 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.Hom ≫
right := g
w' := by dsimp; simpa using w.symm
#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMk
+-/
+#print CategoryTheory.StructuredArrow.homMk' /-
/-- Given a structured arrow `X ⟶ F(U)`, and an arrow `U ⟶ Y`, we can construct a morphism of
structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
-/
@@ -104,7 +117,9 @@ def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right
left := eqToHom (by ext)
right := f
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
+-/
+#print CategoryTheory.StructuredArrow.isoMk /-
/-- To construct an isomorphism of structured arrows,
we need an isomorphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -114,6 +129,7 @@ def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right) (w : f.Hom ≫
f ≅ f' :=
Comma.isoMk (eqToIso (by ext)) g (by simpa [eq_to_hom_map] using w.symm)
#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMk
+-/
#print CategoryTheory.StructuredArrow.ext /-
theorem ext {A B : StructuredArrow S T} (f g : A ⟶ B) : f.right = g.right → f = g :=
@@ -145,15 +161,19 @@ theorem epi_of_epi_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Epi f.ri
#align category_theory.structured_arrow.epi_of_epi_right CategoryTheory.StructuredArrow.epi_of_epi_right
-/
+#print CategoryTheory.StructuredArrow.mono_homMk /-
instance mono_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Mono f] :
Mono (homMk f w) :=
(proj S T).mono_of_mono_map h
#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMk
+-/
+#print CategoryTheory.StructuredArrow.epi_homMk /-
instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Epi f] :
Epi (homMk f w) :=
(proj S T).epi_of_epi_map h
#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMk
+-/
#print CategoryTheory.StructuredArrow.eq_mk /-
/-- Eta rule for structured arrows. Prefer `structured_arrow.eta`, since equality of objects tends
@@ -185,19 +205,25 @@ def map (f : S ⟶ S') : StructuredArrow S' T ⥤ StructuredArrow S T :=
#align category_theory.structured_arrow.map CategoryTheory.StructuredArrow.map
-/
+#print CategoryTheory.StructuredArrow.map_mk /-
@[simp]
theorem map_mk {f : S' ⟶ T.obj Y} (g : S ⟶ S') : (map g).obj (mk f) = mk (g ≫ f) :=
rfl
#align category_theory.structured_arrow.map_mk CategoryTheory.StructuredArrow.map_mk
+-/
+#print CategoryTheory.StructuredArrow.map_id /-
@[simp]
theorem map_id {f : StructuredArrow S T} : (map (𝟙 S)).obj f = f := by rw [eq_mk f]; simp
#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_id
+-/
+#print CategoryTheory.StructuredArrow.map_comp /-
@[simp]
theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
(map (f ≫ f')).obj h = (map f).obj ((map f').obj h) := by rw [eq_mk h]; simp
#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_comp
+-/
#print CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms /-
instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T)
@@ -210,6 +236,7 @@ open CategoryTheory.Limits
attribute [local tidy] tactic.discrete_cases
+#print CategoryTheory.StructuredArrow.mkIdInitial /-
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
where
@@ -219,6 +246,7 @@ def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
apply T.map_injective
simpa only [hom_mk_right, T.image_preimage, ← w m] using (category.id_comp _).symm
#align category_theory.structured_arrow.mk_id_initial CategoryTheory.StructuredArrow.mkIdInitial
+-/
variable {A : Type u₃} [Category.{v₃} A] {B : Type u₄} [Category.{v₄} B]
@@ -230,6 +258,7 @@ def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ St
#align category_theory.structured_arrow.pre CategoryTheory.StructuredArrow.pre
-/
+#print CategoryTheory.StructuredArrow.post /-
/-- The functor `(S, F) ⥤ (G(S), F ⋙ G)`. -/
@[simps]
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
@@ -237,7 +266,9 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
obj X := StructuredArrow.mk (G.map X.Hom)
map X Y f := StructuredArrow.homMk f.right (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
+-/
+#print CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall /-
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
@@ -245,6 +276,7 @@ instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢]
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.Hom⟩, (eq_mk _).symm⟩, by tidy⟩
#align category_theory.structured_arrow.small_proj_preimage_of_locally_small CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall
+-/
end StructuredArrow
@@ -272,30 +304,41 @@ def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
variable {T T' T'' : D} {Y Y' : C} {S : C ⥤ D}
+#print CategoryTheory.CostructuredArrow.mk /-
/-- Construct a costructured arrow from a morphism. -/
def mk (f : S.obj Y ⟶ T) : CostructuredArrow S T :=
⟨Y, ⟨⟨⟩⟩, f⟩
#align category_theory.costructured_arrow.mk CategoryTheory.CostructuredArrow.mk
+-/
+#print CategoryTheory.CostructuredArrow.mk_left /-
@[simp]
theorem mk_left (f : S.obj Y ⟶ T) : (mk f).left = Y :=
rfl
#align category_theory.costructured_arrow.mk_left CategoryTheory.CostructuredArrow.mk_left
+-/
+#print CategoryTheory.CostructuredArrow.mk_right /-
@[simp]
theorem mk_right (f : S.obj Y ⟶ T) : (mk f).right = ⟨⟨⟩⟩ :=
rfl
#align category_theory.costructured_arrow.mk_right CategoryTheory.CostructuredArrow.mk_right
+-/
+#print CategoryTheory.CostructuredArrow.mk_hom_eq_self /-
@[simp]
theorem mk_hom_eq_self (f : S.obj Y ⟶ T) : (mk f).Hom = f :=
rfl
#align category_theory.costructured_arrow.mk_hom_eq_self CategoryTheory.CostructuredArrow.mk_hom_eq_self
+-/
+#print CategoryTheory.CostructuredArrow.w /-
@[simp, reassoc]
theorem w {A B : CostructuredArrow S T} (f : A ⟶ B) : S.map f.left ≫ B.Hom = A.Hom := by tidy
#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.w
+-/
+#print CategoryTheory.CostructuredArrow.homMk /-
/-- To construct a morphism of costructured arrows,
we need a morphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -307,7 +350,9 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left) (w : S.map g
right := eqToHom (by ext)
w' := by simpa [eq_to_hom_map] using w
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
+-/
+#print CategoryTheory.CostructuredArrow.isoMk /-
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -317,6 +362,7 @@ def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left) (w : S.map g.H
f ≅ f' :=
Comma.isoMk g (eqToIso (by ext)) (by simpa [eq_to_hom_map] using w)
#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMk
+-/
#print CategoryTheory.CostructuredArrow.ext /-
theorem ext {A B : CostructuredArrow S T} (f g : A ⟶ B) (h : f.left = g.left) : f = g :=
@@ -348,15 +394,19 @@ theorem epi_of_epi_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Epi f.l
#align category_theory.costructured_arrow.epi_of_epi_left CategoryTheory.CostructuredArrow.epi_of_epi_left
-/
+#print CategoryTheory.CostructuredArrow.mono_homMk /-
instance mono_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Mono f] :
Mono (homMk f w) :=
(proj S T).mono_of_mono_map h
#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMk
+-/
+#print CategoryTheory.CostructuredArrow.epi_homMk /-
instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Epi f] :
Epi (homMk f w) :=
(proj S T).epi_of_epi_map h
#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMk
+-/
#print CategoryTheory.CostructuredArrow.eq_mk /-
/-- Eta rule for costructured arrows. Prefer `costructured_arrow.eta`, as equality of objects tends
@@ -388,19 +438,25 @@ def map (f : T ⟶ T') : CostructuredArrow S T ⥤ CostructuredArrow S T' :=
#align category_theory.costructured_arrow.map CategoryTheory.CostructuredArrow.map
-/
+#print CategoryTheory.CostructuredArrow.map_mk /-
@[simp]
theorem map_mk {f : S.obj Y ⟶ T} (g : T ⟶ T') : (map g).obj (mk f) = mk (f ≫ g) :=
rfl
#align category_theory.costructured_arrow.map_mk CategoryTheory.CostructuredArrow.map_mk
+-/
+#print CategoryTheory.CostructuredArrow.map_id /-
@[simp]
theorem map_id {f : CostructuredArrow S T} : (map (𝟙 T)).obj f = f := by rw [eq_mk f]; simp
#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_id
+-/
+#print CategoryTheory.CostructuredArrow.map_comp /-
@[simp]
theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
(map (f ≫ f')).obj h = (map f').obj ((map f).obj h) := by rw [eq_mk h]; simp
#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_comp
+-/
#print CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms /-
instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T)
@@ -413,6 +469,7 @@ open CategoryTheory.Limits
attribute [local tidy] tactic.discrete_cases
+#print CategoryTheory.CostructuredArrow.mkIdTerminal /-
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
where
@@ -423,6 +480,7 @@ def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
apply S.map_injective
simpa only [hom_mk_left, S.image_preimage, ← w m] using (category.comp_id _).symm
#align category_theory.costructured_arrow.mk_id_terminal CategoryTheory.CostructuredArrow.mkIdTerminal
+-/
variable {A : Type u₃} [Category.{v₃} A] {B : Type u₄} [Category.{v₄} B]
@@ -434,6 +492,7 @@ def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤
#align category_theory.costructured_arrow.pre CategoryTheory.CostructuredArrow.pre
-/
+#print CategoryTheory.CostructuredArrow.post /-
/-- The functor `(F, S) ⥤ (F ⋙ G, G(S))`. -/
@[simps]
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
@@ -442,7 +501,9 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
obj X := CostructuredArrow.mk (G.map X.Hom)
map X Y f := CostructuredArrow.homMk f.left (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
+-/
+#print CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall /-
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
@@ -450,6 +511,7 @@ instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢]
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.Hom⟩, (eq_mk _).symm⟩, by tidy⟩
#align category_theory.costructured_arrow.small_proj_preimage_of_locally_small CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall
+-/
end CostructuredArrow
@@ -539,6 +601,7 @@ def toStructuredArrow' (F : C ⥤ D) (d : D) : (CostructuredArrow F.op (op d))
end CostructuredArrow
+#print CategoryTheory.structuredArrowOpEquivalence /-
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of structured arrows `d ⟶ F.obj c`
is contravariantly equivalent to the category of costructured arrows `F.op.obj c ⟶ op d`.
-/
@@ -556,7 +619,9 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
@CostructuredArrow.isoMk _ _ _ _ _ _ (CostructuredArrow.mk X.Hom) X (Iso.refl _) (by tidy))
fun X Y f => by ext; dsimp; simp)
#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalence
+-/
+#print CategoryTheory.costructuredArrowOpEquivalence /-
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
`F.obj c ⟶ d` is contravariantly equivalent to the category of structured arrows
`op d ⟶ F.op.obj c`.
@@ -575,6 +640,7 @@ def costructuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
@StructuredArrow.isoMk _ _ _ _ _ _ (StructuredArrow.mk X.Hom) X (Iso.refl _) (by tidy))
fun X Y f => by ext; dsimp; simp)
#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalence
+-/
end CategoryTheory
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -42,7 +42,8 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
@[nolint has_nonempty_instance]
def StructuredArrow (S : D) (T : C ⥤ D) :=
- Comma (Functor.fromPUnit S) T deriving Category
+ Comma (Functor.fromPUnit S) T
+deriving Category
#align category_theory.structured_arrow CategoryTheory.StructuredArrow
-/
@@ -157,7 +158,7 @@ instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h
#print CategoryTheory.StructuredArrow.eq_mk /-
/-- Eta rule for structured arrows. Prefer `structured_arrow.eta`, since equality of objects tends
to cause problems. -/
-theorem eq_mk (f : StructuredArrow S T) : f = mk f.Hom := by cases f; congr ; ext
+theorem eq_mk (f : StructuredArrow S T) : f = mk f.Hom := by cases f; congr; ext
#align category_theory.structured_arrow.eq_mk CategoryTheory.StructuredArrow.eq_mk
-/
@@ -240,7 +241,7 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
- suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S ⟶ T.obj G => mk f.2 by rw [this];
+ suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : Σ G : 𝒢, S ⟶ T.obj G => mk f.2 by rw [this];
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.Hom⟩, (eq_mk _).symm⟩, by tidy⟩
#align category_theory.structured_arrow.small_proj_preimage_of_locally_small CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall
@@ -254,7 +255,8 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
@[nolint has_nonempty_instance]
def CostructuredArrow (S : C ⥤ D) (T : D) :=
- Comma S (Functor.fromPUnit T)deriving Category
+ Comma S (Functor.fromPUnit T)
+deriving Category
#align category_theory.costructured_arrow CategoryTheory.CostructuredArrow
-/
@@ -359,7 +361,7 @@ instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h
#print CategoryTheory.CostructuredArrow.eq_mk /-
/-- Eta rule for costructured arrows. Prefer `costructured_arrow.eta`, as equality of objects tends
to cause problems. -/
-theorem eq_mk (f : CostructuredArrow S T) : f = mk f.Hom := by cases f; congr ; ext
+theorem eq_mk (f : CostructuredArrow S T) : f = mk f.Hom := by cases f; congr; ext
#align category_theory.costructured_arrow.eq_mk CategoryTheory.CostructuredArrow.eq_mk
-/
@@ -444,7 +446,7 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
- suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S.obj G ⟶ T => mk f.2 by rw [this];
+ suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : Σ G : 𝒢, S.obj G ⟶ T => mk f.2 by rw [this];
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.Hom⟩, (eq_mk _).symm⟩, by tidy⟩
#align category_theory.costructured_arrow.small_proj_preimage_of_locally_small CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -58,61 +58,31 @@ def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
variable {S S' S'' : D} {Y Y' : C} {T : C ⥤ D}
-/- warning: category_theory.structured_arrow.mk -> CategoryTheory.StructuredArrow.mk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)) -> (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)) -> (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk CategoryTheory.StructuredArrow.mkₓ'. -/
/-- Construct a structured arrow from a morphism. -/
def mk (f : S ⟶ T.obj Y) : StructuredArrow S T :=
⟨⟨⟨⟩⟩, Y, f⟩
#align category_theory.structured_arrow.mk CategoryTheory.StructuredArrow.mk
-/- warning: category_theory.structured_arrow.mk_left -> CategoryTheory.StructuredArrow.mk_left is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_left CategoryTheory.StructuredArrow.mk_leftₓ'. -/
@[simp]
theorem mk_left (f : S ⟶ T.obj Y) : (mk f).left = ⟨⟨⟩⟩ :=
rfl
#align category_theory.structured_arrow.mk_left CategoryTheory.StructuredArrow.mk_left
-/- warning: category_theory.structured_arrow.mk_right -> CategoryTheory.StructuredArrow.mk_right is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)), Eq.{succ u3} C (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) Y
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)), Eq.{succ u3} C (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) Y
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_right CategoryTheory.StructuredArrow.mk_rightₓ'. -/
@[simp]
theorem mk_right (f : S ⟶ T.obj Y) : (mk f).right = Y :=
rfl
#align category_theory.structured_arrow.mk_right CategoryTheory.StructuredArrow.mk_right
-/- warning: category_theory.structured_arrow.mk_hom_eq_self -> CategoryTheory.StructuredArrow.mk_hom_eq_self is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f))) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) f
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f))) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) f
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_hom_eq_self CategoryTheory.StructuredArrow.mk_hom_eq_selfₓ'. -/
@[simp]
theorem mk_hom_eq_self (f : S ⟶ T.obj Y) : (mk f).Hom = f :=
rfl
#align category_theory.structured_arrow.mk_hom_eq_self CategoryTheory.StructuredArrow.mk_hom_eq_self
-/- warning: category_theory.structured_arrow.w -> CategoryTheory.StructuredArrow.w is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.wₓ'. -/
@[simp, reassoc]
theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.Hom ≫ T.map f.right = B.Hom := by
have := f.w <;> tidy
#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.w
-/- warning: category_theory.structured_arrow.hom_mk -> CategoryTheory.StructuredArrow.homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMkₓ'. -/
/-- To construct a morphism of structured arrows,
we need a morphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -125,12 +95,6 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.Hom ≫
w' := by dsimp; simpa using w.symm
#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMk
-/- warning: category_theory.structured_arrow.hom_mk' -> CategoryTheory.StructuredArrow.homMk' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {X : D} {Y : C} (U : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y), Quiver.Hom.{succ (max u2 u1), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 X F))) U (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 X Y F (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) X (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y f)))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {X : D} {Y : C} (U : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y), Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F))) U (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 X Y F (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) X (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y f)))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'ₓ'. -/
/-- Given a structured arrow `X ⟶ F(U)`, and an arrow `U ⟶ Y`, we can construct a morphism of
structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
-/
@@ -140,9 +104,6 @@ def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right
right := f
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
-/- warning: category_theory.structured_arrow.iso_mk -> CategoryTheory.StructuredArrow.isoMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMkₓ'. -/
/-- To construct an isomorphism of structured arrows,
we need an isomorphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -183,17 +144,11 @@ theorem epi_of_epi_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Epi f.ri
#align category_theory.structured_arrow.epi_of_epi_right CategoryTheory.StructuredArrow.epi_of_epi_right
-/
-/- warning: category_theory.structured_arrow.mono_hom_mk -> CategoryTheory.StructuredArrow.mono_homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMkₓ'. -/
instance mono_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Mono f] :
Mono (homMk f w) :=
(proj S T).mono_of_mono_map h
#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMk
-/- warning: category_theory.structured_arrow.epi_hom_mk -> CategoryTheory.StructuredArrow.epi_homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMkₓ'. -/
instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Epi f] :
Epi (homMk f w) :=
(proj S T).epi_of_epi_map h
@@ -229,33 +184,15 @@ def map (f : S ⟶ S') : StructuredArrow S' T ⥤ StructuredArrow S T :=
#align category_theory.structured_arrow.map CategoryTheory.StructuredArrow.map
-/
-/- warning: category_theory.structured_arrow.map_mk -> CategoryTheory.StructuredArrow.map_mk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'), Eq.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T g) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' Y T f)) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) g f))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'), Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T g)) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' Y T f)) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) g f))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_mk CategoryTheory.StructuredArrow.map_mkₓ'. -/
@[simp]
theorem map_mk {f : S' ⟶ T.obj Y} (g : S ⟶ S') : (map g).obj (mk f) = mk (g ≫ f) :=
rfl
#align category_theory.structured_arrow.map_mk CategoryTheory.StructuredArrow.map_mk
-/- warning: category_theory.structured_arrow.map_id -> CategoryTheory.StructuredArrow.map_id is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S)) f) f
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S))) f) f
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_idₓ'. -/
@[simp]
theorem map_id {f : StructuredArrow S T} : (map (𝟙 S)).obj f = f := by rw [eq_mk f]; simp
#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_id
-/- warning: category_theory.structured_arrow.map_comp -> CategoryTheory.StructuredArrow.map_comp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {S'' : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' S''} {h : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T}, Eq.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S'' T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' S'' f f')) h) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T f) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' S'' T f') h))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {S'' : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' S''} {h : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S'' T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' S'' f f'))) h) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T f)) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' S'' T f')) h))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_compₓ'. -/
@[simp]
theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
(map (f ≫ f')).obj h = (map f).obj ((map f').obj h) := by rw [eq_mk h]; simp
@@ -272,12 +209,6 @@ open CategoryTheory.Limits
attribute [local tidy] tactic.discrete_cases
-/- warning: category_theory.structured_arrow.mk_id_initial -> CategoryTheory.StructuredArrow.mkIdInitial is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 T] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 T], CategoryTheory.Limits.IsInitial.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) T) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) Y T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 T] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 T], CategoryTheory.Limits.IsInitial.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) T) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) Y T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_id_initial CategoryTheory.StructuredArrow.mkIdInitialₓ'. -/
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
where
@@ -298,12 +229,6 @@ def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ St
#align category_theory.structured_arrow.pre CategoryTheory.StructuredArrow.pre
-/
-/- warning: category_theory.structured_arrow.post -> CategoryTheory.StructuredArrow.post is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (S : C) (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2), CategoryTheory.Functor.{max u1 u3, max u2 u3, max u6 u1, max u6 u2} (CategoryTheory.StructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 S F) (CategoryTheory.StructuredArrow.category.{u1, u4, u6, u3} B _inst_4 C _inst_1 S F) (CategoryTheory.StructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G)) (CategoryTheory.StructuredArrow.category.{u2, u5, u6, u3} B _inst_4 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (S : C) (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2), CategoryTheory.Functor.{max u1 u3, max u2 u3, max u6 u1, max u6 u2} (CategoryTheory.StructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 S F) (CategoryTheory.instCategoryStructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 S F) (CategoryTheory.StructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G)) (CategoryTheory.instCategoryStructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.postₓ'. -/
/-- The functor `(S, F) ⥤ (G(S), F ⋙ G)`. -/
@[simps]
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
@@ -312,12 +237,6 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
map X Y f := StructuredArrow.homMk f.right (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
-/- warning: category_theory.structured_arrow.small_proj_preimage_of_locally_small -> CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} C) Type.{u3} (Set.hasCoeToSort.{u3} C) 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) (Set.preimage.{max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (CategoryTheory.Functor.obj.{max u2 u1, u1, max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.StructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) 𝒢))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (Set.Elem.{u3} C 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (Set.Elem.{max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Set.preimage.{max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (Prefunctor.obj.{max (succ u1) (succ u2), succ u1, max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u1 u2, u1, max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.StructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) 𝒢))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.small_proj_preimage_of_locally_small CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmallₓ'. -/
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
@@ -351,60 +270,30 @@ def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
variable {T T' T'' : D} {Y Y' : C} {S : C ⥤ D}
-/- warning: category_theory.costructured_arrow.mk -> CategoryTheory.CostructuredArrow.mk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T) -> (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T) -> (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk CategoryTheory.CostructuredArrow.mkₓ'. -/
/-- Construct a costructured arrow from a morphism. -/
def mk (f : S.obj Y ⟶ T) : CostructuredArrow S T :=
⟨Y, ⟨⟨⟩⟩, f⟩
#align category_theory.costructured_arrow.mk CategoryTheory.CostructuredArrow.mk
-/- warning: category_theory.costructured_arrow.mk_left -> CategoryTheory.CostructuredArrow.mk_left is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T), Eq.{succ u3} C (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) Y
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T), Eq.{succ u3} C (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) Y
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_left CategoryTheory.CostructuredArrow.mk_leftₓ'. -/
@[simp]
theorem mk_left (f : S.obj Y ⟶ T) : (mk f).left = Y :=
rfl
#align category_theory.costructured_arrow.mk_left CategoryTheory.CostructuredArrow.mk_left
-/- warning: category_theory.costructured_arrow.mk_right -> CategoryTheory.CostructuredArrow.mk_right is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_right CategoryTheory.CostructuredArrow.mk_rightₓ'. -/
@[simp]
theorem mk_right (f : S.obj Y ⟶ T) : (mk f).right = ⟨⟨⟩⟩ :=
rfl
#align category_theory.costructured_arrow.mk_right CategoryTheory.CostructuredArrow.mk_right
-/- warning: category_theory.costructured_arrow.mk_hom_eq_self -> CategoryTheory.CostructuredArrow.mk_hom_eq_self is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f))) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)))) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) f
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f))) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)))) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) f
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_hom_eq_self CategoryTheory.CostructuredArrow.mk_hom_eq_selfₓ'. -/
@[simp]
theorem mk_hom_eq_self (f : S.obj Y ⟶ T) : (mk f).Hom = f :=
rfl
#align category_theory.costructured_arrow.mk_hom_eq_self CategoryTheory.CostructuredArrow.mk_hom_eq_self
-/- warning: category_theory.costructured_arrow.w -> CategoryTheory.CostructuredArrow.w is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.wₓ'. -/
@[simp, reassoc]
theorem w {A B : CostructuredArrow S T} (f : A ⟶ B) : S.map f.left ≫ B.Hom = A.Hom := by tidy
#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.w
-/- warning: category_theory.costructured_arrow.hom_mk -> CategoryTheory.CostructuredArrow.homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMkₓ'. -/
/-- To construct a morphism of costructured arrows,
we need a morphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -417,9 +306,6 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left) (w : S.map g
w' := by simpa [eq_to_hom_map] using w
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
-/- warning: category_theory.costructured_arrow.iso_mk -> CategoryTheory.CostructuredArrow.isoMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMkₓ'. -/
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -460,17 +346,11 @@ theorem epi_of_epi_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Epi f.l
#align category_theory.costructured_arrow.epi_of_epi_left CategoryTheory.CostructuredArrow.epi_of_epi_left
-/
-/- warning: category_theory.costructured_arrow.mono_hom_mk -> CategoryTheory.CostructuredArrow.mono_homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMkₓ'. -/
instance mono_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Mono f] :
Mono (homMk f w) :=
(proj S T).mono_of_mono_map h
#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMk
-/- warning: category_theory.costructured_arrow.epi_hom_mk -> CategoryTheory.CostructuredArrow.epi_homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMkₓ'. -/
instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Epi f] :
Epi (homMk f w) :=
(proj S T).epi_of_epi_map h
@@ -506,33 +386,15 @@ def map (f : T ⟶ T') : CostructuredArrow S T ⥤ CostructuredArrow S T' :=
#align category_theory.costructured_arrow.map CategoryTheory.CostructuredArrow.map
-/
-/- warning: category_theory.costructured_arrow.map_mk -> CategoryTheory.CostructuredArrow.map_mk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'), Eq.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S g) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' Y S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T T' f g))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'), Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S g)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' Y S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T T' f g))
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_mk CategoryTheory.CostructuredArrow.map_mkₓ'. -/
@[simp]
theorem map_mk {f : S.obj Y ⟶ T} (g : T ⟶ T') : (map g).obj (mk f) = mk (f ≫ g) :=
rfl
#align category_theory.costructured_arrow.map_mk CategoryTheory.CostructuredArrow.map_mk
-/- warning: category_theory.costructured_arrow.map_id -> CategoryTheory.CostructuredArrow.map_id is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T)) f) f
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T))) f) f
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_idₓ'. -/
@[simp]
theorem map_id {f : CostructuredArrow S T} : (map (𝟙 T)).obj f = f := by rw [eq_mk f]; simp
#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_id
-/- warning: category_theory.costructured_arrow.map_comp -> CategoryTheory.CostructuredArrow.map_comp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {T'' : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T' T''} {h : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T'' S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T T' T'' f f')) h) (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' T'' S f') (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S f) h))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {T'' : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T' T''} {h : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T''))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T'' S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T T' T'' f f'))) h) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T''))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' T'' S f')) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S f)) h))
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_compₓ'. -/
@[simp]
theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
(map (f ≫ f')).obj h = (map f').obj ((map f).obj h) := by rw [eq_mk h]; simp
@@ -549,12 +411,6 @@ open CategoryTheory.Limits
attribute [local tidy] tactic.discrete_cases
-/- warning: category_theory.costructured_arrow.mk_id_terminal -> CategoryTheory.CostructuredArrow.mkIdTerminal is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 S] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 S], CategoryTheory.Limits.IsTerminal.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y)) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) Y S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y)))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 S] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 S], CategoryTheory.Limits.IsTerminal.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y)) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) Y S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y)))
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_id_terminal CategoryTheory.CostructuredArrow.mkIdTerminalₓ'. -/
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
where
@@ -576,12 +432,6 @@ def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤
#align category_theory.costructured_arrow.pre CategoryTheory.CostructuredArrow.pre
-/
-/- warning: category_theory.costructured_arrow.post -> CategoryTheory.CostructuredArrow.post is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2) (S : C), CategoryTheory.Functor.{max u3 u1, max u3 u2, max u6 u1, max u6 u2} (CategoryTheory.CostructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 F S) (CategoryTheory.CostructuredArrow.category.{u1, u4, u6, u3} B _inst_4 C _inst_1 F S) (CategoryTheory.CostructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S)) (CategoryTheory.CostructuredArrow.category.{u2, u5, u6, u3} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2) (S : C), CategoryTheory.Functor.{max u1 u3, max u2 u3, max u6 u1, max u6 u2} (CategoryTheory.CostructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 F S) (CategoryTheory.instCategoryCostructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 F S) (CategoryTheory.CostructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S)) (CategoryTheory.instCategoryCostructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S))
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.postₓ'. -/
/-- The functor `(F, S) ⥤ (F ⋙ G, G(S))`. -/
@[simps]
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
@@ -591,12 +441,6 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
map X Y f := CostructuredArrow.homMk f.left (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
-/- warning: category_theory.costructured_arrow.small_proj_preimage_of_locally_small -> CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} C) Type.{u3} (Set.hasCoeToSort.{u3} C) 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) (Set.preimage.{max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (CategoryTheory.Functor.obj.{max u1 u2, u1, max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.CostructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) 𝒢))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (Set.Elem.{u3} C 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (Set.Elem.{max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Set.preimage.{max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (Prefunctor.obj.{max (succ u1) (succ u2), succ u1, max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u1 u2, u1, max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.CostructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) 𝒢))
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.small_proj_preimage_of_locally_small CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmallₓ'. -/
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
@@ -693,12 +537,6 @@ def toStructuredArrow' (F : C ⥤ D) (d : D) : (CostructuredArrow F.op (op d))
end CostructuredArrow
-/- warning: category_theory.structured_arrow_op_equivalence -> CategoryTheory.structuredArrowOpEquivalence is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u2 u1, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.Category.opposite.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
-Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalenceₓ'. -/
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of structured arrows `d ⟶ F.obj c`
is contravariantly equivalent to the category of costructured arrows `F.op.obj c ⟶ op d`.
-/
@@ -717,12 +555,6 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
fun X Y f => by ext; dsimp; simp)
#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalence
-/- warning: category_theory.costructured_arrow_op_equivalence -> CategoryTheory.costructuredArrowOpEquivalence is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u2 u1, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
-Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalenceₓ'. -/
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
`F.obj c ⟶ d` is contravariantly equivalent to the category of structured arrows
`op d ⟶ F.op.obj c`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -122,9 +122,7 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.Hom ≫
f ⟶ f' where
left := eqToHom (by ext)
right := g
- w' := by
- dsimp
- simpa using w.symm
+ w' := by dsimp; simpa using w.symm
#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMk
/- warning: category_theory.structured_arrow.hom_mk' -> CategoryTheory.StructuredArrow.homMk' is a dubious translation:
@@ -204,11 +202,7 @@ instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h
#print CategoryTheory.StructuredArrow.eq_mk /-
/-- Eta rule for structured arrows. Prefer `structured_arrow.eta`, since equality of objects tends
to cause problems. -/
-theorem eq_mk (f : StructuredArrow S T) : f = mk f.Hom :=
- by
- cases f
- congr
- ext
+theorem eq_mk (f : StructuredArrow S T) : f = mk f.Hom := by cases f; congr ; ext
#align category_theory.structured_arrow.eq_mk CategoryTheory.StructuredArrow.eq_mk
-/
@@ -253,10 +247,7 @@ but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S))) f) f
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_idₓ'. -/
@[simp]
-theorem map_id {f : StructuredArrow S T} : (map (𝟙 S)).obj f = f :=
- by
- rw [eq_mk f]
- simp
+theorem map_id {f : StructuredArrow S T} : (map (𝟙 S)).obj f = f := by rw [eq_mk f]; simp
#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_id
/- warning: category_theory.structured_arrow.map_comp -> CategoryTheory.StructuredArrow.map_comp is a dubious translation:
@@ -267,10 +258,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_compₓ'. -/
@[simp]
theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
- (map (f ≫ f')).obj h = (map f).obj ((map f').obj h) :=
- by
- rw [eq_mk h]
- simp
+ (map (f ≫ f')).obj h = (map f).obj ((map f').obj h) := by rw [eq_mk h]; simp
#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_comp
#print CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms /-
@@ -293,11 +281,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.struct
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
where
- desc c :=
- homMk (T.preimage c.pt.Hom)
- (by
- dsimp
- simp)
+ desc c := homMk (T.preimage c.pt.Hom) (by dsimp; simp)
uniq c m _ := by
ext
apply T.map_injective
@@ -337,9 +321,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.struct
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
- suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S ⟶ T.obj G => mk f.2
- by
- rw [this]
+ suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S ⟶ T.obj G => mk f.2 by rw [this];
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.Hom⟩, (eq_mk _).symm⟩, by tidy⟩
#align category_theory.structured_arrow.small_proj_preimage_of_locally_small CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall
@@ -497,11 +479,7 @@ instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h
#print CategoryTheory.CostructuredArrow.eq_mk /-
/-- Eta rule for costructured arrows. Prefer `costructured_arrow.eta`, as equality of objects tends
to cause problems. -/
-theorem eq_mk (f : CostructuredArrow S T) : f = mk f.Hom :=
- by
- cases f
- congr
- ext
+theorem eq_mk (f : CostructuredArrow S T) : f = mk f.Hom := by cases f; congr ; ext
#align category_theory.costructured_arrow.eq_mk CategoryTheory.CostructuredArrow.eq_mk
-/
@@ -546,10 +524,7 @@ but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T))) f) f
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_idₓ'. -/
@[simp]
-theorem map_id {f : CostructuredArrow S T} : (map (𝟙 T)).obj f = f :=
- by
- rw [eq_mk f]
- simp
+theorem map_id {f : CostructuredArrow S T} : (map (𝟙 T)).obj f = f := by rw [eq_mk f]; simp
#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_id
/- warning: category_theory.costructured_arrow.map_comp -> CategoryTheory.CostructuredArrow.map_comp is a dubious translation:
@@ -560,10 +535,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_compₓ'. -/
@[simp]
theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
- (map (f ≫ f')).obj h = (map f').obj ((map f).obj h) :=
- by
- rw [eq_mk h]
- simp
+ (map (f ≫ f')).obj h = (map f').obj ((map f).obj h) := by rw [eq_mk h]; simp
#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_comp
#print CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms /-
@@ -586,11 +558,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.costru
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
where
- lift c :=
- homMk (S.preimage c.pt.Hom)
- (by
- dsimp
- simp)
+ lift c := homMk (S.preimage c.pt.Hom) (by dsimp; simp)
uniq := by
rintro c m -
ext
@@ -632,9 +600,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.costru
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
- suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S.obj G ⟶ T => mk f.2
- by
- rw [this]
+ suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S.obj G ⟶ T => mk f.2 by rw [this];
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.Hom⟩, (eq_mk _).symm⟩, by tidy⟩
#align category_theory.costructured_arrow.small_proj_preimage_of_locally_small CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -103,10 +103,7 @@ theorem mk_hom_eq_self (f : S ⟶ T.obj Y) : (mk f).Hom = f :=
#align category_theory.structured_arrow.mk_hom_eq_self CategoryTheory.StructuredArrow.mk_hom_eq_self
/- warning: category_theory.structured_arrow.w -> CategoryTheory.StructuredArrow.w is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ (max u2 u1), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) (CategoryTheory.CommaMorphism.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A B f))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) (CategoryTheory.CommaMorphism.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A B f))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.wₓ'. -/
@[simp, reassoc]
theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.Hom ≫ T.map f.right = B.Hom := by
@@ -114,10 +111,7 @@ theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.Hom ≫ T.map f.right =
#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.w
/- warning: category_theory.structured_arrow.hom_mk -> CategoryTheory.StructuredArrow.homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (Quiver.Hom.{succ (max u2 u1), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) f f')
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) f f')
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMkₓ'. -/
/-- To construct a morphism of structured arrows,
we need a morphism of the objects underlying the target,
@@ -149,10 +143,7 @@ def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
/- warning: category_theory.structured_arrow.iso_mk -> CategoryTheory.StructuredArrow.isoMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (CategoryTheory.Iso.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.commaCategory.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T) f f')
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (CategoryTheory.Iso.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) f f')
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMkₓ'. -/
/-- To construct an isomorphism of structured arrows,
we need an isomorphism of the objects underlying the target,
@@ -195,10 +186,7 @@ theorem epi_of_epi_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Epi f.ri
-/
/- warning: category_theory.structured_arrow.mono_hom_mk -> CategoryTheory.StructuredArrow.mono_homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Mono.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Mono.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMkₓ'. -/
instance mono_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Mono f] :
Mono (homMk f w) :=
@@ -206,10 +194,7 @@ instance mono_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h
#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMk
/- warning: category_theory.structured_arrow.epi_hom_mk -> CategoryTheory.StructuredArrow.epi_homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Epi.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Epi.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMkₓ'. -/
instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Epi f] :
Epi (homMk f w) :=
@@ -429,20 +414,14 @@ theorem mk_hom_eq_self (f : S.obj Y ⟶ T) : (mk f).Hom = f :=
#align category_theory.costructured_arrow.mk_hom_eq_self CategoryTheory.CostructuredArrow.mk_hom_eq_self
/- warning: category_theory.costructured_arrow.w -> CategoryTheory.CostructuredArrow.w is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ (max u1 u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) (CategoryTheory.CommaMorphism.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A B f)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) (CategoryTheory.CommaMorphism.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A B f)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.wₓ'. -/
@[simp, reassoc]
theorem w {A B : CostructuredArrow S T} (f : A ⟶ B) : S.map f.left ≫ B.Hom = A.Hom := by tidy
#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.w
/- warning: category_theory.costructured_arrow.hom_mk -> CategoryTheory.CostructuredArrow.homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (Quiver.Hom.{succ (max u1 u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) f f')
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) f f')
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMkₓ'. -/
/-- To construct a morphism of costructured arrows,
we need a morphism of the objects underlying the source,
@@ -457,10 +436,7 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left) (w : S.map g
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
/- warning: category_theory.costructured_arrow.iso_mk -> CategoryTheory.CostructuredArrow.isoMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (CategoryTheory.Iso.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.commaCategory.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) f f')
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (CategoryTheory.Iso.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) f f')
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMkₓ'. -/
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
@@ -503,10 +479,7 @@ theorem epi_of_epi_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Epi f.l
-/
/- warning: category_theory.costructured_arrow.mono_hom_mk -> CategoryTheory.CostructuredArrow.mono_homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Mono.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Mono.{max u2 u1, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMkₓ'. -/
instance mono_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Mono f] :
Mono (homMk f w) :=
@@ -514,10 +487,7 @@ instance mono_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h
#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMk
/- warning: category_theory.costructured_arrow.epi_hom_mk -> CategoryTheory.CostructuredArrow.epi_homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Epi.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Epi.{max u2 u1, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMkₓ'. -/
instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Epi f] :
Epi (homMk f w) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -108,7 +108,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) (CategoryTheory.CommaMorphism.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A B f))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.wₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.Hom ≫ T.map f.right = B.Hom := by
have := f.w <;> tidy
#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.w
@@ -434,7 +434,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) (CategoryTheory.CommaMorphism.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A B f)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.wₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem w {A B : CostructuredArrow S T} (f : A ⟶ B) : S.map f.left ≫ B.Hom = A.Hom := by tidy
#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.w
mathlib commit https://github.com/leanprover-community/mathlib/commit/49b7f94aab3a3bdca1f9f34c5d818afb253b3993
@@ -761,7 +761,7 @@ end CostructuredArrow
lean 3 declaration is
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u2 u1, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.Category.opposite.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalenceₓ'. -/
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of structured arrows `d ⟶ F.obj c`
is contravariantly equivalent to the category of costructured arrows `F.op.obj c ⟶ op d`.
@@ -785,7 +785,7 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
lean 3 declaration is
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u2 u1, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalenceₓ'. -/
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
`F.obj c ⟶ d` is contravariantly equivalent to the category of structured arrows
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -288,11 +288,11 @@ theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
simp
#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_comp
-#print CategoryTheory.StructuredArrow.proj_reflects_iso /-
-instance proj_reflects_iso : ReflectsIsomorphisms (proj S T)
+#print CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms /-
+instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T)
where reflects Y Z f t :=
⟨⟨structured_arrow.hom_mk (inv ((proj S T).map f)) (by simp), by tidy⟩⟩
-#align category_theory.structured_arrow.proj_reflects_iso CategoryTheory.StructuredArrow.proj_reflects_iso
+#align category_theory.structured_arrow.proj_reflects_iso CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms
-/
open CategoryTheory.Limits
@@ -596,11 +596,11 @@ theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
simp
#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_comp
-#print CategoryTheory.CostructuredArrow.proj_reflects_iso /-
-instance proj_reflects_iso : ReflectsIsomorphisms (proj S T)
+#print CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms /-
+instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T)
where reflects Y Z f t :=
⟨⟨costructured_arrow.hom_mk (inv ((proj S T).map f)) (by simp), by tidy⟩⟩
-#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflects_iso
+#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms
-/
open CategoryTheory.Limits
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
! This file was ported from Lean 3 source module category_theory.structured_arrow
-! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.EssentiallySmall
/-!
# The category of "structured arrows"
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
For `T : C ⥤ D`, a `T`-structured arrow with source `S : D`
is just a morphism `S ⟶ T.obj Y`, for some `Y : C`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -32,6 +32,7 @@ universe v₁ v₂ v₃ v₄ u₁ u₂ u₃ u₄
variable {C : Type u₁} [Category.{v₁} C] {D : Type u₂} [Category.{v₂} D]
+#print CategoryTheory.StructuredArrow /-
/-- The category of `T`-structured arrows with domain `S : D` (here `T : C ⥤ D`),
has as its objects `D`-morphisms of the form `S ⟶ T Y`, for some `Y : C`,
and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
@@ -40,42 +41,81 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
def StructuredArrow (S : D) (T : C ⥤ D) :=
Comma (Functor.fromPUnit S) T deriving Category
#align category_theory.structured_arrow CategoryTheory.StructuredArrow
+-/
namespace StructuredArrow
+#print CategoryTheory.StructuredArrow.proj /-
/-- The obvious projection functor from structured arrows. -/
@[simps]
def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
Comma.snd _ _
#align category_theory.structured_arrow.proj CategoryTheory.StructuredArrow.proj
+-/
variable {S S' S'' : D} {Y Y' : C} {T : C ⥤ D}
+/- warning: category_theory.structured_arrow.mk -> CategoryTheory.StructuredArrow.mk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)) -> (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)) -> (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk CategoryTheory.StructuredArrow.mkₓ'. -/
/-- Construct a structured arrow from a morphism. -/
def mk (f : S ⟶ T.obj Y) : StructuredArrow S T :=
⟨⟨⟨⟩⟩, Y, f⟩
#align category_theory.structured_arrow.mk CategoryTheory.StructuredArrow.mk
+/- warning: category_theory.structured_arrow.mk_left -> CategoryTheory.StructuredArrow.mk_left is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_left CategoryTheory.StructuredArrow.mk_leftₓ'. -/
@[simp]
theorem mk_left (f : S ⟶ T.obj Y) : (mk f).left = ⟨⟨⟩⟩ :=
rfl
#align category_theory.structured_arrow.mk_left CategoryTheory.StructuredArrow.mk_left
+/- warning: category_theory.structured_arrow.mk_right -> CategoryTheory.StructuredArrow.mk_right is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)), Eq.{succ u3} C (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) Y
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)), Eq.{succ u3} C (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) Y
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_right CategoryTheory.StructuredArrow.mk_rightₓ'. -/
@[simp]
theorem mk_right (f : S ⟶ T.obj Y) : (mk f).right = Y :=
rfl
#align category_theory.structured_arrow.mk_right CategoryTheory.StructuredArrow.mk_right
+/- warning: category_theory.structured_arrow.mk_hom_eq_self -> CategoryTheory.StructuredArrow.mk_hom_eq_self is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f))) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) f
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f))) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T f)) f
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_hom_eq_self CategoryTheory.StructuredArrow.mk_hom_eq_selfₓ'. -/
@[simp]
theorem mk_hom_eq_self (f : S ⟶ T.obj Y) : (mk f).Hom = f :=
rfl
#align category_theory.structured_arrow.mk_hom_eq_self CategoryTheory.StructuredArrow.mk_hom_eq_self
+/- warning: category_theory.structured_arrow.w -> CategoryTheory.StructuredArrow.w is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ (max u2 u1), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) (CategoryTheory.CommaMorphism.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A B f))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) (CategoryTheory.CommaMorphism.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A B f))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.wₓ'. -/
@[simp, reassoc.1]
theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.Hom ≫ T.map f.right = B.Hom := by
have := f.w <;> tidy
#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.w
+/- warning: category_theory.structured_arrow.hom_mk -> CategoryTheory.StructuredArrow.homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (Quiver.Hom.{succ (max u2 u1), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) f f')
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) f f')
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMkₓ'. -/
/-- To construct a morphism of structured arrows,
we need a morphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -90,6 +130,12 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.Hom ≫
simpa using w.symm
#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMk
+/- warning: category_theory.structured_arrow.hom_mk' -> CategoryTheory.StructuredArrow.homMk' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {X : D} {Y : C} (U : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y), Quiver.Hom.{succ (max u2 u1), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 X F))) U (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 X Y F (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) X (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y f)))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {X : D} {Y : C} (U : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y), Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 X F))) U (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 X Y F (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) X (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 X) F U) Y f)))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'ₓ'. -/
/-- Given a structured arrow `X ⟶ F(U)`, and an arrow `U ⟶ Y`, we can construct a morphism of
structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
-/
@@ -99,6 +145,12 @@ def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right
right := f
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
+/- warning: category_theory.structured_arrow.iso_mk -> CategoryTheory.StructuredArrow.isoMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (CategoryTheory.Iso.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.commaCategory.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T) f f')
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f') g))) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T f')) -> (CategoryTheory.Iso.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) f f')
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMkₓ'. -/
/-- To construct an isomorphism of structured arrows,
we need an isomorphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -109,36 +161,59 @@ def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right) (w : f.Hom ≫
Comma.isoMk (eqToIso (by ext)) g (by simpa [eq_to_hom_map] using w.symm)
#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMk
+#print CategoryTheory.StructuredArrow.ext /-
theorem ext {A B : StructuredArrow S T} (f g : A ⟶ B) : f.right = g.right → f = g :=
CommaMorphism.ext _ _ (Subsingleton.elim _ _)
#align category_theory.structured_arrow.ext CategoryTheory.StructuredArrow.ext
+-/
+#print CategoryTheory.StructuredArrow.ext_iff /-
theorem ext_iff {A B : StructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.right = g.right :=
⟨fun h => h ▸ rfl, ext f g⟩
#align category_theory.structured_arrow.ext_iff CategoryTheory.StructuredArrow.ext_iff
+-/
+#print CategoryTheory.StructuredArrow.proj_faithful /-
instance proj_faithful : Faithful (proj S T) where map_injective' X Y := ext
#align category_theory.structured_arrow.proj_faithful CategoryTheory.StructuredArrow.proj_faithful
+-/
+#print CategoryTheory.StructuredArrow.mono_of_mono_right /-
/-- The converse of this is true with additional assumptions, see `mono_iff_mono_right`. -/
theorem mono_of_mono_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Mono f.right] : Mono f :=
(proj S T).mono_of_mono_map h
#align category_theory.structured_arrow.mono_of_mono_right CategoryTheory.StructuredArrow.mono_of_mono_right
+-/
+#print CategoryTheory.StructuredArrow.epi_of_epi_right /-
theorem epi_of_epi_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Epi f.right] : Epi f :=
(proj S T).epi_of_epi_map h
#align category_theory.structured_arrow.epi_of_epi_right CategoryTheory.StructuredArrow.epi_of_epi_right
+-/
+/- warning: category_theory.structured_arrow.mono_hom_mk -> CategoryTheory.StructuredArrow.mono_homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Mono.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Mono.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMkₓ'. -/
instance mono_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Mono f] :
Mono (homMk f w) :=
(proj S T).mono_of_mono_map h
#align category_theory.structured_arrow.mono_hom_mk CategoryTheory.StructuredArrow.mono_homMk
+/- warning: category_theory.structured_arrow.epi_hom_mk -> CategoryTheory.StructuredArrow.epi_homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Epi.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S)) (CategoryTheory.Comma.left.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f)) (CategoryTheory.Comma.hom.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T A) (CategoryTheory.Comma.right.{u2, u1, u2, u2, u3, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) C _inst_1 D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 S) T B) f], CategoryTheory.Epi.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.StructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T A B f w)
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMkₓ'. -/
instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h : Epi f] :
Epi (homMk f w) :=
(proj S T).epi_of_epi_map h
#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMk
+#print CategoryTheory.StructuredArrow.eq_mk /-
/-- Eta rule for structured arrows. Prefer `structured_arrow.eta`, since equality of objects tends
to cause problems. -/
theorem eq_mk (f : StructuredArrow S T) : f = mk f.Hom :=
@@ -147,13 +222,17 @@ theorem eq_mk (f : StructuredArrow S T) : f = mk f.Hom :=
congr
ext
#align category_theory.structured_arrow.eq_mk CategoryTheory.StructuredArrow.eq_mk
+-/
+#print CategoryTheory.StructuredArrow.eta /-
/-- Eta rule for structured arrows. -/
@[simps]
def eta (f : StructuredArrow S T) : f ≅ mk f.Hom :=
isoMk (Iso.refl _) (by tidy)
#align category_theory.structured_arrow.eta CategoryTheory.StructuredArrow.eta
+-/
+#print CategoryTheory.StructuredArrow.map /-
/-- A morphism between source objects `S ⟶ S'`
contravariantly induces a functor between structured arrows,
`structured_arrow S' T ⥤ structured_arrow S T`.
@@ -166,12 +245,25 @@ to `Cat`.
def map (f : S ⟶ S') : StructuredArrow S' T ⥤ StructuredArrow S T :=
Comma.mapLeft _ ((Functor.const _).map f)
#align category_theory.structured_arrow.map CategoryTheory.StructuredArrow.map
+-/
+/- warning: category_theory.structured_arrow.map_mk -> CategoryTheory.StructuredArrow.map_mk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'), Eq.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T g) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' Y T f)) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) g f))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'), Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T g)) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' Y T f)) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) g f))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_mk CategoryTheory.StructuredArrow.map_mkₓ'. -/
@[simp]
theorem map_mk {f : S' ⟶ T.obj Y} (g : S ⟶ S') : (map g).obj (mk f) = mk (g ≫ f) :=
rfl
#align category_theory.structured_arrow.map_mk CategoryTheory.StructuredArrow.map_mk
+/- warning: category_theory.structured_arrow.map_id -> CategoryTheory.StructuredArrow.map_id is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S)) f) f
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S))) f) f
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_idₓ'. -/
@[simp]
theorem map_id {f : StructuredArrow S T} : (map (𝟙 S)).obj f = f :=
by
@@ -179,6 +271,12 @@ theorem map_id {f : StructuredArrow S T} : (map (𝟙 S)).obj f = f :=
simp
#align category_theory.structured_arrow.map_id CategoryTheory.StructuredArrow.map_id
+/- warning: category_theory.structured_arrow.map_comp -> CategoryTheory.StructuredArrow.map_comp is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {S'' : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' S''} {h : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T}, Eq.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S'' T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' S'' f f')) h) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T f) (CategoryTheory.Functor.obj.{max u2 u1, max u2 u1, max u3 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' S'' T f') h))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {S' : D} {S'' : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S S'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) S' S''} {h : CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S'' T (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) S S' S'' f f'))) h) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S S' T f)) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T))) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S'' T) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' T) (CategoryTheory.StructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S' S'' T f')) h))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_compₓ'. -/
@[simp]
theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
(map (f ≫ f')).obj h = (map f).obj ((map f').obj h) :=
@@ -187,15 +285,23 @@ theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
simp
#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_comp
+#print CategoryTheory.StructuredArrow.proj_reflects_iso /-
instance proj_reflects_iso : ReflectsIsomorphisms (proj S T)
where reflects Y Z f t :=
⟨⟨structured_arrow.hom_mk (inv ((proj S T).map f)) (by simp), by tidy⟩⟩
#align category_theory.structured_arrow.proj_reflects_iso CategoryTheory.StructuredArrow.proj_reflects_iso
+-/
open CategoryTheory.Limits
attribute [local tidy] tactic.discrete_cases
+/- warning: category_theory.structured_arrow.mk_id_initial -> CategoryTheory.StructuredArrow.mkIdInitial is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 T] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 T], CategoryTheory.Limits.IsInitial.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) T) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y) Y T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y)))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 T] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 T], CategoryTheory.Limits.IsInitial.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) T) (CategoryTheory.StructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y) Y T (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 T) Y)))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.mk_id_initial CategoryTheory.StructuredArrow.mkIdInitialₓ'. -/
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
where
@@ -212,12 +318,20 @@ def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
variable {A : Type u₃} [Category.{v₃} A] {B : Type u₄} [Category.{v₄} B]
+#print CategoryTheory.StructuredArrow.pre /-
/-- The functor `(S, F ⋙ G) ⥤ (S, G)`. -/
@[simps]
def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ StructuredArrow S G :=
Comma.preRight _ F G
#align category_theory.structured_arrow.pre CategoryTheory.StructuredArrow.pre
+-/
+/- warning: category_theory.structured_arrow.post -> CategoryTheory.StructuredArrow.post is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (S : C) (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2), CategoryTheory.Functor.{max u1 u3, max u2 u3, max u6 u1, max u6 u2} (CategoryTheory.StructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 S F) (CategoryTheory.StructuredArrow.category.{u1, u4, u6, u3} B _inst_4 C _inst_1 S F) (CategoryTheory.StructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G)) (CategoryTheory.StructuredArrow.category.{u2, u5, u6, u3} B _inst_4 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (S : C) (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2), CategoryTheory.Functor.{max u1 u3, max u2 u3, max u6 u1, max u6 u2} (CategoryTheory.StructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 S F) (CategoryTheory.instCategoryStructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 S F) (CategoryTheory.StructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G)) (CategoryTheory.instCategoryStructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S) (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.postₓ'. -/
/-- The functor `(S, F) ⥤ (G(S), F ⋙ G)`. -/
@[simps]
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
@@ -226,6 +340,12 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
map X Y f := StructuredArrow.homMk f.right (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
+/- warning: category_theory.structured_arrow.small_proj_preimage_of_locally_small -> CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} C) Type.{u3} (Set.hasCoeToSort.{u3} C) 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) (Set.preimage.{max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (CategoryTheory.Functor.obj.{max u2 u1, u1, max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.StructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) 𝒢))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {S : D} {T : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (Set.Elem.{u3} C 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (Set.Elem.{max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Set.preimage.{max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (Prefunctor.obj.{max (succ u1) (succ u2), succ u1, max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u1 u2, u1, max u3 u2, u3} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.StructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) 𝒢))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow.small_proj_preimage_of_locally_small CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmallₓ'. -/
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
@@ -238,6 +358,7 @@ instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢]
end StructuredArrow
+#print CategoryTheory.CostructuredArrow /-
/-- The category of `S`-costructured arrows with target `T : D` (here `S : C ⥤ D`),
has as its objects `D`-morphisms of the form `S Y ⟶ T`, for some `Y : C`,
and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
@@ -246,41 +367,80 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
def CostructuredArrow (S : C ⥤ D) (T : D) :=
Comma S (Functor.fromPUnit T)deriving Category
#align category_theory.costructured_arrow CategoryTheory.CostructuredArrow
+-/
namespace CostructuredArrow
+#print CategoryTheory.CostructuredArrow.proj /-
/-- The obvious projection functor from costructured arrows. -/
@[simps]
def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
Comma.fst _ _
#align category_theory.costructured_arrow.proj CategoryTheory.CostructuredArrow.proj
+-/
variable {T T' T'' : D} {Y Y' : C} {S : C ⥤ D}
+/- warning: category_theory.costructured_arrow.mk -> CategoryTheory.CostructuredArrow.mk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T) -> (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2}, (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T) -> (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk CategoryTheory.CostructuredArrow.mkₓ'. -/
/-- Construct a costructured arrow from a morphism. -/
def mk (f : S.obj Y ⟶ T) : CostructuredArrow S T :=
⟨Y, ⟨⟨⟩⟩, f⟩
#align category_theory.costructured_arrow.mk CategoryTheory.CostructuredArrow.mk
+/- warning: category_theory.costructured_arrow.mk_left -> CategoryTheory.CostructuredArrow.mk_left is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T), Eq.{succ u3} C (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) Y
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T), Eq.{succ u3} C (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) Y
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_left CategoryTheory.CostructuredArrow.mk_leftₓ'. -/
@[simp]
theorem mk_left (f : S.obj Y ⟶ T) : (mk f).left = Y :=
rfl
#align category_theory.costructured_arrow.mk_left CategoryTheory.CostructuredArrow.mk_left
+/- warning: category_theory.costructured_arrow.mk_right -> CategoryTheory.CostructuredArrow.mk_right is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T), Eq.{succ u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.Discrete.mk.{u2} PUnit.{succ u2} PUnit.unit.{succ u2})
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_right CategoryTheory.CostructuredArrow.mk_rightₓ'. -/
@[simp]
theorem mk_right (f : S.obj Y ⟶ T) : (mk f).right = ⟨⟨⟩⟩ :=
rfl
#align category_theory.costructured_arrow.mk_right CategoryTheory.CostructuredArrow.mk_right
+/- warning: category_theory.costructured_arrow.mk_hom_eq_self -> CategoryTheory.CostructuredArrow.mk_hom_eq_self is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f))) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)))) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) f
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} (f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f))) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)))) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) f
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_hom_eq_self CategoryTheory.CostructuredArrow.mk_hom_eq_selfₓ'. -/
@[simp]
theorem mk_hom_eq_self (f : S.obj Y ⟶ T) : (mk f).Hom = f :=
rfl
#align category_theory.costructured_arrow.mk_hom_eq_self CategoryTheory.CostructuredArrow.mk_hom_eq_self
+/- warning: category_theory.costructured_arrow.w -> CategoryTheory.CostructuredArrow.w is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ (max u1 u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) (CategoryTheory.CommaMorphism.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A B f)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) A B), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) (CategoryTheory.CommaMorphism.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A B f)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.wₓ'. -/
@[simp, reassoc.1]
theorem w {A B : CostructuredArrow S T} (f : A ⟶ B) : S.map f.left ≫ B.Hom = A.Hom := by tidy
#align category_theory.costructured_arrow.w CategoryTheory.CostructuredArrow.w
+/- warning: category_theory.costructured_arrow.hom_mk -> CategoryTheory.CostructuredArrow.homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (Quiver.Hom.{succ (max u1 u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T))) f f')
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (Quiver.Hom.{max (succ u1) (succ u2), max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) f f')
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMkₓ'. -/
/-- To construct a morphism of costructured arrows,
we need a morphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -293,6 +453,12 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left) (w : S.map g
w' := by simpa [eq_to_hom_map] using w
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
+/- warning: category_theory.costructured_arrow.iso_mk -> CategoryTheory.CostructuredArrow.isoMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (CategoryTheory.Iso.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.commaCategory.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) f f')
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {f' : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (g : CategoryTheory.Iso.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')), (Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f'))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') (CategoryTheory.Iso.hom.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f') g)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f')) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) f)) -> (CategoryTheory.Iso.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) f f')
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMkₓ'. -/
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -303,36 +469,59 @@ def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left) (w : S.map g.H
Comma.isoMk g (eqToIso (by ext)) (by simpa [eq_to_hom_map] using w)
#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMk
+#print CategoryTheory.CostructuredArrow.ext /-
theorem ext {A B : CostructuredArrow S T} (f g : A ⟶ B) (h : f.left = g.left) : f = g :=
CommaMorphism.ext _ _ h (Subsingleton.elim _ _)
#align category_theory.costructured_arrow.ext CategoryTheory.CostructuredArrow.ext
+-/
+#print CategoryTheory.CostructuredArrow.ext_iff /-
theorem ext_iff {A B : CostructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.left = g.left :=
⟨fun h => h ▸ rfl, ext f g⟩
#align category_theory.costructured_arrow.ext_iff CategoryTheory.CostructuredArrow.ext_iff
+-/
+#print CategoryTheory.CostructuredArrow.proj_faithful /-
instance proj_faithful : Faithful (proj S T) where map_injective' X Y := ext
#align category_theory.costructured_arrow.proj_faithful CategoryTheory.CostructuredArrow.proj_faithful
+-/
+#print CategoryTheory.CostructuredArrow.mono_of_mono_left /-
theorem mono_of_mono_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Mono f.left] : Mono f :=
(proj S T).mono_of_mono_map h
#align category_theory.costructured_arrow.mono_of_mono_left CategoryTheory.CostructuredArrow.mono_of_mono_left
+-/
+#print CategoryTheory.CostructuredArrow.epi_of_epi_left /-
/-- The converse of this is true with additional assumptions, see `epi_iff_epi_left`. -/
theorem epi_of_epi_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Epi f.left] : Epi f :=
(proj S T).epi_of_epi_map h
#align category_theory.costructured_arrow.epi_of_epi_left CategoryTheory.CostructuredArrow.epi_of_epi_left
+-/
+/- warning: category_theory.costructured_arrow.mono_hom_mk -> CategoryTheory.CostructuredArrow.mono_homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Mono.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Mono.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Mono.{max u2 u1, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMkₓ'. -/
instance mono_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Mono f] :
Mono (homMk f w) :=
(proj S T).mono_of_mono_map h
#align category_theory.costructured_arrow.mono_hom_mk CategoryTheory.CostructuredArrow.mono_homMk
+/- warning: category_theory.costructured_arrow.epi_hom_mk -> CategoryTheory.CostructuredArrow.epi_homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.obj.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Epi.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {A : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} {B : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (w : Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.obj.{succ u2, succ u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.CategoryStruct.toQuiver.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.Category.toCategoryStruct.{u2, u2} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u2, u4} (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T)) (CategoryTheory.Comma.right.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B)) (CategoryTheory.Comma.hom.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A)) [h : CategoryTheory.Epi.{u1, u3} C _inst_1 (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) A) (CategoryTheory.Comma.left.{u1, u2, u2, u3, u2, u4} C _inst_1 (CategoryTheory.Discrete.{u2} PUnit.{succ u2}) (CategoryTheory.discreteCategory.{u2} PUnit.{succ u2}) D _inst_2 S (CategoryTheory.Functor.fromPUnit.{u2, u4} D _inst_2 T) B) f], CategoryTheory.Epi.{max u2 u1, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) A B (CategoryTheory.CostructuredArrow.homMk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T S A B f w)
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMkₓ'. -/
instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h : Epi f] :
Epi (homMk f w) :=
(proj S T).epi_of_epi_map h
#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMk
+#print CategoryTheory.CostructuredArrow.eq_mk /-
/-- Eta rule for costructured arrows. Prefer `costructured_arrow.eta`, as equality of objects tends
to cause problems. -/
theorem eq_mk (f : CostructuredArrow S T) : f = mk f.Hom :=
@@ -341,13 +530,17 @@ theorem eq_mk (f : CostructuredArrow S T) : f = mk f.Hom :=
congr
ext
#align category_theory.costructured_arrow.eq_mk CategoryTheory.CostructuredArrow.eq_mk
+-/
+#print CategoryTheory.CostructuredArrow.eta /-
/-- Eta rule for costructured arrows. -/
@[simps]
def eta (f : CostructuredArrow S T) : f ≅ mk f.Hom :=
isoMk (Iso.refl _) (by tidy)
#align category_theory.costructured_arrow.eta CategoryTheory.CostructuredArrow.eta
+-/
+#print CategoryTheory.CostructuredArrow.map /-
/-- A morphism between target objects `T ⟶ T'`
covariantly induces a functor between costructured arrows,
`costructured_arrow S T ⥤ costructured_arrow S T'`.
@@ -360,12 +553,25 @@ to `Cat`.
def map (f : T ⟶ T') : CostructuredArrow S T ⥤ CostructuredArrow S T' :=
Comma.mapRight _ ((Functor.const _).map f)
#align category_theory.costructured_arrow.map CategoryTheory.CostructuredArrow.map
+-/
+/- warning: category_theory.costructured_arrow.map_mk -> CategoryTheory.CostructuredArrow.map_mk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'), Eq.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S g) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' Y S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) T T' f g))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T} (g : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'), Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S g)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T Y S f)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' Y S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) T T' f g))
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_mk CategoryTheory.CostructuredArrow.map_mkₓ'. -/
@[simp]
theorem map_mk {f : S.obj Y ⟶ T} (g : T ⟶ T') : (map g).obj (mk f) = mk (f ≫ g) :=
rfl
#align category_theory.costructured_arrow.map_mk CategoryTheory.CostructuredArrow.map_mk
+/- warning: category_theory.costructured_arrow.map_id -> CategoryTheory.CostructuredArrow.map_id is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T)) f) f
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T))) f) f
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_idₓ'. -/
@[simp]
theorem map_id {f : CostructuredArrow S T} : (map (𝟙 T)).obj f = f :=
by
@@ -373,6 +579,12 @@ theorem map_id {f : CostructuredArrow S T} : (map (𝟙 T)).obj f = f :=
simp
#align category_theory.costructured_arrow.map_id CategoryTheory.CostructuredArrow.map_id
+/- warning: category_theory.costructured_arrow.map_comp -> CategoryTheory.CostructuredArrow.map_comp is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {T'' : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T' T''} {h : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T'' S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T T' T'' f f')) h) (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' T'' S f') (CategoryTheory.Functor.obj.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S f) h))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {T' : D} {T'' : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {f : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T T'} {f' : Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) T' T''} {h : CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T}, Eq.{max (succ u3) (succ u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T''))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T'' S (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) T T' T'' f f'))) h) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T''))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T' T'' S f')) (Prefunctor.obj.{max (succ u2) (succ u1), max (succ u2) (succ u1), max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T'))) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, max u2 u1, max u2 u3, max u2 u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T') (CategoryTheory.CostructuredArrow.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 T T' S f)) h))
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_compₓ'. -/
@[simp]
theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
(map (f ≫ f')).obj h = (map f').obj ((map f).obj h) :=
@@ -381,15 +593,23 @@ theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
simp
#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_comp
+#print CategoryTheory.CostructuredArrow.proj_reflects_iso /-
instance proj_reflects_iso : ReflectsIsomorphisms (proj S T)
where reflects Y Z f t :=
⟨⟨costructured_arrow.hom_mk (inv ((proj S T).map f)) (by simp), by tidy⟩⟩
#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflects_iso
+-/
open CategoryTheory.Limits
attribute [local tidy] tactic.discrete_cases
+/- warning: category_theory.costructured_arrow.mk_id_terminal -> CategoryTheory.CostructuredArrow.mkIdTerminal is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 S] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 S], CategoryTheory.Limits.IsTerminal.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y)) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y) Y S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S Y)))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {Y : C} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u1, u2, u3, u4} C _inst_1 D _inst_2 S] [_inst_4 : CategoryTheory.Faithful.{u1, u2, u3, u4} C _inst_1 D _inst_2 S], CategoryTheory.Limits.IsTerminal.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y)) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y)) (CategoryTheory.CostructuredArrow.mk.{u1, u2, u3, u4} C _inst_1 D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y) Y S (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 S) Y)))
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.mk_id_terminal CategoryTheory.CostructuredArrow.mkIdTerminalₓ'. -/
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
where
@@ -407,12 +627,20 @@ def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
variable {A : Type u₃} [Category.{v₃} A] {B : Type u₄} [Category.{v₄} B]
+#print CategoryTheory.CostructuredArrow.pre /-
/-- The functor `(F ⋙ G, S) ⥤ (G, S)`. -/
@[simps]
def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤ CostructuredArrow G S :=
Comma.preLeft F G _
#align category_theory.costructured_arrow.pre CategoryTheory.CostructuredArrow.pre
+-/
+/- warning: category_theory.costructured_arrow.post -> CategoryTheory.CostructuredArrow.post is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2) (S : C), CategoryTheory.Functor.{max u3 u1, max u3 u2, max u6 u1, max u6 u2} (CategoryTheory.CostructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 F S) (CategoryTheory.CostructuredArrow.category.{u1, u4, u6, u3} B _inst_4 C _inst_1 F S) (CategoryTheory.CostructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S)) (CategoryTheory.CostructuredArrow.category.{u2, u5, u6, u3} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (CategoryTheory.Functor.obj.{u1, u2, u4, u5} C _inst_1 D _inst_2 G S))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} D] {B : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} B] (F : CategoryTheory.Functor.{u3, u1, u6, u4} B _inst_4 C _inst_1) (G : CategoryTheory.Functor.{u1, u2, u4, u5} C _inst_1 D _inst_2) (S : C), CategoryTheory.Functor.{max u1 u3, max u2 u3, max u6 u1, max u6 u2} (CategoryTheory.CostructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 F S) (CategoryTheory.instCategoryCostructuredArrow.{u3, u1, u6, u4} B _inst_4 C _inst_1 F S) (CategoryTheory.CostructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S)) (CategoryTheory.instCategoryCostructuredArrow.{u3, u2, u6, u5} B _inst_4 D _inst_2 (CategoryTheory.Functor.comp.{u3, u1, u2, u6, u4, u5} B _inst_4 C _inst_1 D _inst_2 F G) (Prefunctor.obj.{succ u1, succ u2, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u4} C (CategoryTheory.Category.toCategoryStruct.{u1, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u5} D (CategoryTheory.Category.toCategoryStruct.{u2, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u4, u5} C _inst_1 D _inst_2 G) S))
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.postₓ'. -/
/-- The functor `(F, S) ⥤ (F ⋙ G, G(S))`. -/
@[simps]
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
@@ -422,6 +650,12 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
map X Y f := CostructuredArrow.homMk f.left (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
+/- warning: category_theory.costructured_arrow.small_proj_preimage_of_locally_small -> CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} C) Type.{u3} (Set.hasCoeToSort.{u3} C) 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) (Set.preimage.{max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (CategoryTheory.Functor.obj.{max u1 u2, u1, max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.CostructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T)) 𝒢))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] {T : D} {S : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2} {𝒢 : Set.{u3} C} [_inst_5 : Small.{u1, u3} (Set.Elem.{u3} C 𝒢)] [_inst_6 : CategoryTheory.LocallySmall.{u1, u2, u4} D _inst_2], Small.{u1, max u3 u2} (Set.Elem.{max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (Set.preimage.{max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C (Prefunctor.obj.{max (succ u1) (succ u2), succ u1, max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u1 u2, u1, max u3 u2, u3} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T) C _inst_1 (CategoryTheory.CostructuredArrow.proj.{u1, u2, u3, u4} C _inst_1 D _inst_2 S T))) 𝒢))
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow.small_proj_preimage_of_locally_small CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmallₓ'. -/
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) :=
by
@@ -438,6 +672,7 @@ open Opposite
namespace StructuredArrow
+#print CategoryTheory.StructuredArrow.toCostructuredArrow /-
/-- For a functor `F : C ⥤ D` and an object `d : D`, we obtain a contravariant functor from the
category of structured arrows `d ⟶ F.obj c` to the category of costructured arrows
`F.op.obj c ⟶ (op d)`.
@@ -454,7 +689,9 @@ def toCostructuredArrow (F : C ⥤ D) (d : D) :
rw [← op_comp, ← f.unop.w, functor.const_obj_map]
erw [category.id_comp])
#align category_theory.structured_arrow.to_costructured_arrow CategoryTheory.StructuredArrow.toCostructuredArrow
+-/
+#print CategoryTheory.StructuredArrow.toCostructuredArrow' /-
/-- For a functor `F : C ⥤ D` and an object `d : D`, we obtain a contravariant functor from the
category of structured arrows `op d ⟶ F.op.obj c` to the category of costructured arrows
`F.obj c ⟶ d`.
@@ -472,11 +709,13 @@ def toCostructuredArrow' (F : C ⥤ D) (d : D) :
f.unop.w, functor.const_obj_map]
erw [category.id_comp])
#align category_theory.structured_arrow.to_costructured_arrow' CategoryTheory.StructuredArrow.toCostructuredArrow'
+-/
end StructuredArrow
namespace CostructuredArrow
+#print CategoryTheory.CostructuredArrow.toStructuredArrow /-
/-- For a functor `F : C ⥤ D` and an object `d : D`, we obtain a contravariant functor from the
category of costructured arrows `F.obj c ⟶ d` to the category of structured arrows
`op d ⟶ F.op.obj c`.
@@ -492,7 +731,9 @@ def toStructuredArrow (F : C ⥤ D) (d : D) : (CostructuredArrow F d)ᵒᵖ ⥤
rw [← op_comp, f.unop.w, functor.const_obj_map]
erw [category.comp_id])
#align category_theory.costructured_arrow.to_structured_arrow CategoryTheory.CostructuredArrow.toStructuredArrow
+-/
+#print CategoryTheory.CostructuredArrow.toStructuredArrow' /-
/-- For a functor `F : C ⥤ D` and an object `d : D`, we obtain a contravariant functor from the
category of costructured arrows `F.op.obj c ⟶ op d` to the category of structured arrows
`d ⟶ F.obj c`.
@@ -509,9 +750,16 @@ def toStructuredArrow' (F : C ⥤ D) (d : D) : (CostructuredArrow F.op (op d))
functor.const_obj_map]
erw [category.comp_id])
#align category_theory.costructured_arrow.to_structured_arrow' CategoryTheory.CostructuredArrow.toStructuredArrow'
+-/
end CostructuredArrow
+/- warning: category_theory.structured_arrow_op_equivalence -> CategoryTheory.structuredArrowOpEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u2 u1, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.Category.opposite.{max u2 u1, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 d F)) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (Opposite.op.{succ u4} D d))
+Case conversion may be inaccurate. Consider using '#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalenceₓ'. -/
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of structured arrows `d ⟶ F.obj c`
is contravariantly equivalent to the category of costructured arrows `F.op.obj c ⟶ op d`.
-/
@@ -530,6 +778,12 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
fun X Y f => by ext; dsimp; simp)
#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalence
+/- warning: category_theory.costructured_arrow_op_equivalence -> CategoryTheory.costructuredArrowOpEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u2 u1, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.CostructuredArrow.category.{u2, u4, u3, u1} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.StructuredArrow.category.{u2, u4, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (d : D), CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u3 u2, max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.StructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F)) (CategoryTheory.Category.opposite.{max u1 u2, max u3 u2} (CategoryTheory.CostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d) (CategoryTheory.instCategoryCostructuredArrow.{u1, u2, u3, u4} C _inst_1 D _inst_2 F d)) (CategoryTheory.instCategoryStructuredArrow.{u1, u2, u3, u4} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u1, u3} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u2, u4} D _inst_2) (Opposite.op.{succ u4} D d) (CategoryTheory.Functor.op.{u1, u2, u3, u4} C _inst_1 D _inst_2 F))
+Case conversion may be inaccurate. Consider using '#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalenceₓ'. -/
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
`F.obj c ⟶ d` is contravariantly equivalent to the category of structured arrows
`op d ⟶ F.op.obj c`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -200,7 +200,7 @@ attribute [local tidy] tactic.discrete_cases
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
where
desc c :=
- homMk (T.preimage c.x.Hom)
+ homMk (T.preimage c.pt.Hom)
(by
dsimp
simp)
@@ -394,7 +394,7 @@ attribute [local tidy] tactic.discrete_cases
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
where
lift c :=
- homMk (S.preimage c.x.Hom)
+ homMk (S.preimage c.pt.Hom)
(by
dsimp
simp)
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -204,7 +204,7 @@ def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y)))
(by
dsimp
simp)
- uniq' c m _ := by
+ uniq c m _ := by
ext
apply T.map_injective
simpa only [hom_mk_right, T.image_preimage, ← w m] using (category.id_comp _).symm
@@ -398,7 +398,7 @@ def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y)))
(by
dsimp
simp)
- uniq' := by
+ uniq := by
rintro c m -
ext
apply S.map_injective
mathlib commit https://github.com/leanprover-community/mathlib/commit/22131150f88a2d125713ffa0f4693e3355b1eb49
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
! This file was ported from Lean 3 source module category_theory.structured_arrow
-! leanprover-community/mathlib commit fef8efdf78f223294c34a41875923ab1272322d4
+! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -94,7 +94,9 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.Hom ≫
structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
-/
def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right ⟶ Y) :
- U ⟶ mk (U.Hom ≫ F.map f) where right := f
+ U ⟶ mk (U.Hom ≫ F.map f) where
+ left := eqToHom (by ext)
+ right := f
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
/-- To construct an isomorphism of structured arrows,
@@ -220,12 +222,8 @@ def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ St
@[simps]
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
where
- obj X :=
- { right := X.right
- Hom := G.map X.Hom }
- map X Y f :=
- { right := f.right
- w' := by simp [functor.comp_map, ← G.map_comp, ← f.w] }
+ obj X := StructuredArrow.mk (G.map X.Hom)
+ map X Y f := StructuredArrow.homMk f.right (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
@@ -420,12 +418,8 @@ def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
CostructuredArrow F S ⥤ CostructuredArrow (F ⋙ G) (G.obj S)
where
- obj X :=
- { left := X.left
- Hom := G.map X.Hom }
- map X Y f :=
- { left := f.left
- w' := by simp [functor.comp_map, ← G.map_comp, ← f.w] }
+ obj X := CostructuredArrow.mk (G.map X.Hom)
+ map X Y f := CostructuredArrow.homMk f.left (by simp [functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -38,7 +38,7 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
@[nolint has_nonempty_instance]
def StructuredArrow (S : D) (T : C ⥤ D) :=
- Comma (Functor.fromPunit S) T deriving Category
+ Comma (Functor.fromPUnit S) T deriving Category
#align category_theory.structured_arrow CategoryTheory.StructuredArrow
namespace StructuredArrow
@@ -246,7 +246,7 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
@[nolint has_nonempty_instance]
def CostructuredArrow (S : C ⥤ D) (T : D) :=
- Comma S (Functor.fromPunit T)deriving Category
+ Comma S (Functor.fromPUnit T)deriving Category
#align category_theory.costructured_arrow CategoryTheory.CostructuredArrow
namespace CostructuredArrow
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>
@@ -275,7 +275,7 @@ instance proj_reflectsIsomorphisms : (proj S T).ReflectsIsomorphisms where
open CategoryTheory.Limits
/-- The identity structured arrow is initial. -/
-def mkIdInitial [T.Full] [T.Faithful] : IsInitial (mk (𝟙 (T.obj Y))) where
+noncomputable def mkIdInitial [T.Full] [T.Faithful] : IsInitial (mk (𝟙 (T.obj Y))) where
desc c := homMk (T.preimage c.pt.hom)
uniq c m _ := by
apply CommaMorphism.ext
@@ -318,7 +318,7 @@ instance (S : C) (F : B ⥤ C) (G : C ⥤ D) : (post S F G).Faithful where
map_injective {_ _} _ _ h := by simpa [ext_iff] using h
instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [G.Faithful] : (post S F G).Full where
- preimage {_ _} f := homMk f.right (G.map_injective (by simpa using f.w.symm))
+ map_surjective f := ⟨homMk f.right (G.map_injective (by simpa using f.w.symm)), by aesop_cat⟩
instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [G.Full] : (post S F G).EssSurj where
mem_essImage h := ⟨mk (G.preimage h.hom), ⟨isoMk (Iso.refl _) (by simp)⟩⟩
@@ -613,7 +613,7 @@ instance proj_reflectsIsomorphisms : (proj S T).ReflectsIsomorphisms where
open CategoryTheory.Limits
/-- The identity costructured arrow is terminal. -/
-def mkIdTerminal [S.Full] [S.Faithful] : IsTerminal (mk (𝟙 (S.obj Y))) where
+noncomputable def mkIdTerminal [S.Full] [S.Faithful] : IsTerminal (mk (𝟙 (S.obj Y))) where
lift c := homMk (S.preimage c.pt.hom)
uniq := by
rintro c m -
@@ -656,7 +656,7 @@ instance (F : B ⥤ C) (G : C ⥤ D) (S : C) : (post F G S).Faithful where
map_injective {_ _} _ _ h := by simpa [ext_iff] using h
instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [G.Faithful] : (post F G S).Full where
- preimage {_ _} f := homMk f.left (G.map_injective (by simpa using f.w))
+ map_surjective f := ⟨homMk f.left (G.map_injective (by simpa using f.w)), by aesop_cat⟩
instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [G.Full] : (post F G S).EssSurj where
mem_essImage h := ⟨mk (G.preimage h.hom), ⟨isoMk (Iso.refl _) (by simp)⟩⟩
@@ -36,6 +36,7 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
-- We explicitly come from `PUnit.{1}` here to obtain the correct universe for morphisms of
-- structured arrows.
+-- Porting note(#5171): linter not ported yet
-- @[nolint has_nonempty_instance]
def StructuredArrow (S : D) (T : C ⥤ D) :=
Comma (Functor.fromPUnit.{0} S) T
@@ -380,7 +381,7 @@ and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
-- We explicitly come from `PUnit.{1}` here to obtain the correct universe for morphisms of
-- costructured arrows.
--- @[nolint has_nonempty_instance] -- Porting note: removed
+-- @[nolint has_nonempty_instance] -- Porting note(#5171): linter not ported yet
def CostructuredArrow (S : C ⥤ D) (T : D) :=
Comma S (Functor.fromPUnit.{0} T)
#align category_theory.costructured_arrow CategoryTheory.CostructuredArrow
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -182,7 +182,7 @@ theorem ext_iff {A B : StructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.right
⟨fun h => h ▸ rfl, ext f g⟩
#align category_theory.structured_arrow.ext_iff CategoryTheory.StructuredArrow.ext_iff
-instance proj_faithful : Faithful (proj S T) where
+instance proj_faithful : (proj S T).Faithful where
map_injective {_ _} := ext
#align category_theory.structured_arrow.proj_faithful CategoryTheory.StructuredArrow.proj_faithful
@@ -263,7 +263,7 @@ def mapIso (i : S ≅ S') : StructuredArrow S T ≌ StructuredArrow S' T :=
def mapNatIso (i : T ≅ T') : StructuredArrow S T ≌ StructuredArrow S T' :=
Comma.mapRightIso _ i
-instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
+instance proj_reflectsIsomorphisms : (proj S T).ReflectsIsomorphisms where
reflects {Y Z} f t :=
⟨⟨StructuredArrow.homMk
(inv ((proj S T).map f))
@@ -274,7 +274,7 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
open CategoryTheory.Limits
/-- The identity structured arrow is initial. -/
-def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y))) where
+def mkIdInitial [T.Full] [T.Faithful] : IsInitial (mk (𝟙 (T.obj Y))) where
desc c := homMk (T.preimage c.pt.hom)
uniq c m _ := by
apply CommaMorphism.ext
@@ -291,18 +291,18 @@ def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ St
Comma.preRight _ F G
#align category_theory.structured_arrow.pre CategoryTheory.StructuredArrow.pre
-instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [Faithful F] : Faithful (pre S F G) :=
- show Faithful (Comma.preRight _ _ _) from inferInstance
+instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [F.Faithful] : (pre S F G).Faithful :=
+ show (Comma.preRight _ _ _).Faithful from inferInstance
-instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [Full F] : Full (pre S F G) :=
- show Full (Comma.preRight _ _ _) from inferInstance
+instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [F.Full] : (pre S F G).Full :=
+ show (Comma.preRight _ _ _).Full from inferInstance
-instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [EssSurj F] : EssSurj (pre S F G) :=
- show EssSurj (Comma.preRight _ _ _) from inferInstance
+instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [F.EssSurj] : (pre S F G).EssSurj :=
+ show (Comma.preRight _ _ _).EssSurj from inferInstance
/-- If `F` is an equivalence, then so is the functor `(S, F ⋙ G) ⥤ (S, G)`. -/
-noncomputable def isEquivalencePre (S : D) (F : B ⥤ C) (G : C ⥤ D) [IsEquivalence F] :
- IsEquivalence (pre S F G) :=
+noncomputable def isEquivalencePre (S : D) (F : B ⥤ C) (G : C ⥤ D) [F.IsEquivalence] :
+ (pre S F G).IsEquivalence :=
Comma.isEquivalencePreRight _ _ _
/-- The functor `(S, F) ⥤ (G(S), F ⋙ G)`. -/
@@ -313,19 +313,19 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
map f := StructuredArrow.homMk f.right (by simp [Functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
-instance (S : C) (F : B ⥤ C) (G : C ⥤ D) : Faithful (post S F G) where
+instance (S : C) (F : B ⥤ C) (G : C ⥤ D) : (post S F G).Faithful where
map_injective {_ _} _ _ h := by simpa [ext_iff] using h
-instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [Faithful G] : Full (post S F G) where
+instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [G.Faithful] : (post S F G).Full where
preimage {_ _} f := homMk f.right (G.map_injective (by simpa using f.w.symm))
-instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [Full G] : EssSurj (post S F G) where
+instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [G.Full] : (post S F G).EssSurj where
mem_essImage h := ⟨mk (G.preimage h.hom), ⟨isoMk (Iso.refl _) (by simp)⟩⟩
/-- If `G` is fully faithful, then `post S F G : (S, F) ⥤ (G(S), F ⋙ G)` is an equivalence. -/
-noncomputable def isEquivalencePost (S : C) (F : B ⥤ C) (G : C ⥤ D) [Full G] [Faithful G] :
- IsEquivalence (post S F G) :=
- Equivalence.ofFullyFaithfullyEssSurj _
+noncomputable def isEquivalencePost (S : C) (F : B ⥤ C) (G : C ⥤ D) [G.Full] [G.Faithful] :
+ (post S F G).IsEquivalence :=
+ Functor.IsEquivalence.ofFullyFaithfullyEssSurj _
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) := by
@@ -520,7 +520,7 @@ theorem ext_iff {A B : CostructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.left
⟨fun h => h ▸ rfl, ext f g⟩
#align category_theory.costructured_arrow.ext_iff CategoryTheory.CostructuredArrow.ext_iff
-instance proj_faithful : Faithful (proj S T) where map_injective {_ _} := ext
+instance proj_faithful : (proj S T).Faithful where map_injective {_ _} := ext
#align category_theory.costructured_arrow.proj_faithful CategoryTheory.CostructuredArrow.proj_faithful
theorem mono_of_mono_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Mono f.left] : Mono f :=
@@ -601,7 +601,7 @@ def mapIso (i : T ≅ T') : CostructuredArrow S T ≌ CostructuredArrow S T' :=
def mapNatIso (i : S ≅ S') : CostructuredArrow S T ≌ CostructuredArrow S' T :=
Comma.mapLeftIso _ i
-instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
+instance proj_reflectsIsomorphisms : (proj S T).ReflectsIsomorphisms where
reflects {Y Z} f t :=
⟨⟨CostructuredArrow.homMk
(inv ((proj S T).map f))
@@ -612,7 +612,7 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
open CategoryTheory.Limits
/-- The identity costructured arrow is terminal. -/
-def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y))) where
+def mkIdTerminal [S.Full] [S.Faithful] : IsTerminal (mk (𝟙 (S.obj Y))) where
lift c := homMk (S.preimage c.pt.hom)
uniq := by
rintro c m -
@@ -629,18 +629,18 @@ def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤
Comma.preLeft F G _
#align category_theory.costructured_arrow.pre CategoryTheory.CostructuredArrow.pre
-instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [Faithful F] : Faithful (pre F G S) :=
- show Faithful (Comma.preLeft _ _ _) from inferInstance
+instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [F.Faithful] : (pre F G S).Faithful :=
+ show (Comma.preLeft _ _ _).Faithful from inferInstance
-instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [Full F] : Full (pre F G S) :=
- show Full (Comma.preLeft _ _ _) from inferInstance
+instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [F.Full] : (pre F G S).Full :=
+ show (Comma.preLeft _ _ _).Full from inferInstance
-instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [EssSurj F] : EssSurj (pre F G S) :=
- show EssSurj (Comma.preLeft _ _ _) from inferInstance
+instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [F.EssSurj] : (pre F G S).EssSurj :=
+ show (Comma.preLeft _ _ _).EssSurj from inferInstance
/-- If `F` is an equivalence, then so is the functor `(F ⋙ G, S) ⥤ (G, S)`. -/
-noncomputable def isEquivalencePre (F : B ⥤ C) (G : C ⥤ D) (S : D) [IsEquivalence F] :
- IsEquivalence (pre F G S) :=
+noncomputable def isEquivalencePre (F : B ⥤ C) (G : C ⥤ D) (S : D) [F.IsEquivalence] :
+ (pre F G S).IsEquivalence :=
Comma.isEquivalencePreLeft _ _ _
/-- The functor `(F, S) ⥤ (F ⋙ G, G(S))`. -/
@@ -651,19 +651,19 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
map f := CostructuredArrow.homMk f.left (by simp [Functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
-instance (F : B ⥤ C) (G : C ⥤ D) (S : C) : Faithful (post F G S) where
+instance (F : B ⥤ C) (G : C ⥤ D) (S : C) : (post F G S).Faithful where
map_injective {_ _} _ _ h := by simpa [ext_iff] using h
-instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [Faithful G] : Full (post F G S) where
+instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [G.Faithful] : (post F G S).Full where
preimage {_ _} f := homMk f.left (G.map_injective (by simpa using f.w))
-instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [Full G] : EssSurj (post F G S) where
+instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [G.Full] : (post F G S).EssSurj where
mem_essImage h := ⟨mk (G.preimage h.hom), ⟨isoMk (Iso.refl _) (by simp)⟩⟩
/-- If `G` is fully faithful, then `post F G S : (F, S) ⥤ (F ⋙ G, G(S))` is an equivalence. -/
-noncomputable def isEquivalencePost (S : C) (F : B ⥤ C) (G : C ⥤ D) [Full G] [Faithful G] :
- IsEquivalence (post F G S) :=
- Equivalence.ofFullyFaithfullyEssSurj _
+noncomputable def isEquivalencePost (S : C) (F : B ⥤ C) (G : C ⥤ D) [G.Full] [G.Faithful] :
+ (post F G S).IsEquivalence :=
+ Functor.IsEquivalence.ofFullyFaithfullyEssSurj _
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) := by
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -258,7 +258,7 @@ def mapIso (i : S ≅ S') : StructuredArrow S T ≌ StructuredArrow S' T :=
Comma.mapLeftIso _ ((Functor.const _).mapIso i)
/-- A natural isomorphism `T ≅ T'` induces an equivalence
- `StructuredArrow S T ≌ StructuredArrow S T'`.-/
+ `StructuredArrow S T ≌ StructuredArrow S T'`. -/
@[simp]
def mapNatIso (i : T ≅ T') : StructuredArrow S T ≌ StructuredArrow S T' :=
Comma.mapRightIso _ i
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -54,7 +54,7 @@ def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
variable {S S' S'' : D} {Y Y' Y'' : C} {T T' : C ⥤ D}
--- porting note: this lemma was added because `Comma.hom_ext`
+-- Porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
-- See https://github.com/leanprover-community/mathlib4/issues/5229
@[ext]
@@ -397,7 +397,7 @@ def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
variable {T T' T'' : D} {Y Y' Y'' : C} {S S' : C ⥤ D}
--- porting note: this lemma was added because `Comma.hom_ext`
+-- Porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
-- See https://github.com/leanprover-community/mathlib4/issues/5229
@[ext]
small_iUnion
and small_sUnion
(#10921)
Also moves the other results about Small
on sets to their own file.
@@ -7,6 +7,7 @@ import Mathlib.CategoryTheory.Comma.Basic
import Mathlib.CategoryTheory.PUnit
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
import Mathlib.CategoryTheory.EssentiallySmall
+import Mathlib.Logic.Small.Set
#align_import category_theory.structured_arrow from "leanprover-community/mathlib"@"8a318021995877a44630c898d0b2bc376fceef3b"
In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:
) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.
@@ -119,7 +119,7 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right)
simpa using w.symm
#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
+/- Porting note: it appears the simp lemma is not getting generated but the linter
picks up on it (seems like a bug). Either way simp solves it. -/
attribute [-simp, nolint simpNF] homMk_left
@@ -169,7 +169,7 @@ def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right)
Comma.isoMk (eqToIso (by ext)) g (by simpa using w.symm)
#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
+/- Porting note: it appears the simp lemma is not getting generated but the linter
picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] isoMk_hom_left_down_down isoMk_inv_left_down_down
@@ -216,7 +216,7 @@ def eta (f : StructuredArrow S T) : f ≅ mk f.hom :=
isoMk (Iso.refl _)
#align category_theory.structured_arrow.eta CategoryTheory.StructuredArrow.eta
-/- Porting note : it appears the simp lemma is not getting generated but the linter
+/- Porting note: it appears the simp lemma is not getting generated but the linter
picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] eta_hom_left_down_down eta_inv_left_down_down
@@ -507,7 +507,7 @@ def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left)
Comma.isoMk g (eqToIso (by ext)) (by simpa using w)
#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
+/- Porting note: it appears the simp lemma is not getting generated but the linter
picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] isoMk_hom_right_down_down isoMk_inv_right_down_down
@@ -553,7 +553,7 @@ def eta (f : CostructuredArrow S T) : f ≅ mk f.hom :=
isoMk (Iso.refl _)
#align category_theory.costructured_arrow.eta CategoryTheory.CostructuredArrow.eta
-/- Porting note : it appears the simp lemma is not getting generated but the linter
+/- Porting note: it appears the simp lemma is not getting generated but the linter
picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] eta_hom_right_down_down eta_inv_right_down_down
@@ -459,7 +459,7 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left)
right := 𝟙 _
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
+/- Porting note: it appears the simp lemma is not getting generated but the linter
picks up on it. Either way simp can prove this -/
attribute [-simp, nolint simpNF] homMk_right_down_down
@@ -112,7 +112,7 @@ and to check that the triangle commutes.
@[simps]
def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right)
(w : f.hom ≫ T.map g = f'.hom := by aesop_cat) : f ⟶ f' where
- left := eqToHom (by ext)
+ left := 𝟙 _
right := g
w := by
dsimp
@@ -127,7 +127,7 @@ attribute [-simp, nolint simpNF] homMk_left
structured arrows given by `(X ⟶ T(Y)) ⟶ (X ⟶ T(Y) ⟶ T(Y'))`. -/
@[simps]
def homMk' (f : StructuredArrow S T) (g : f.right ⟶ Y') : f ⟶ mk (f.hom ≫ T.map g) where
- left := eqToHom (by ext)
+ left := 𝟙 _
right := g
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
@@ -147,6 +147,17 @@ lemma homMk'_mk_comp (f : S ⟶ T.obj Y) (g : Y ⟶ Y') (g' : Y' ⟶ Y'') :
homMk' (mk f) (g ≫ g') = homMk' (mk f) g ≫ homMk' (mk (f ≫ T.map g)) g' ≫ eqToHom (by simp) :=
homMk'_comp _ _ _
+/-- Variant of `homMk'` where both objects are applications of `mk`. -/
+@[simps]
+def mkPostcomp (f : S ⟶ T.obj Y) (g : Y ⟶ Y') : mk f ⟶ mk (f ≫ T.map g) where
+ left := 𝟙 _
+ right := g
+
+lemma mkPostcomp_id (f : S ⟶ T.obj Y) : mkPostcomp f (𝟙 Y) = eqToHom (by aesop_cat) := by aesop_cat
+lemma mkPostcomp_comp (f : S ⟶ T.obj Y) (g : Y ⟶ Y') (g' : Y' ⟶ Y'') :
+ mkPostcomp f (g ≫ g') = mkPostcomp f g ≫ mkPostcomp (f ≫ T.map g) g' ≫ eqToHom (by simp) := by
+ aesop_cat
+
/-- To construct an isomorphism of structured arrows,
we need an isomorphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -155,7 +166,7 @@ and to check that the triangle commutes.
def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right)
(w : f.hom ≫ T.map g.hom = f'.hom := by aesop_cat) :
f ≅ f' :=
- Comma.isoMk (eqToIso (by ext)) g (by simpa [eqToHom_map] using w.symm)
+ Comma.isoMk (eqToIso (by ext)) g (by simpa using w.symm)
#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMk
/- Porting note : it appears the simp lemma is not getting generated but the linter
@@ -445,8 +456,7 @@ and to check that the triangle commutes.
def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left)
(w : S.map g ≫ f'.hom = f.hom := by aesop_cat) : f ⟶ f' where
left := g
- right := eqToHom (by ext)
- w := by simpa [eqToHom_map] using w
+ right := 𝟙 _
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
/- Porting note : it appears the simp lemma is not getting generated but the linter
@@ -458,7 +468,7 @@ attribute [-simp, nolint simpNF] homMk_right_down_down
@[simps]
def homMk' (f : CostructuredArrow S T) (g : Y' ⟶ f.left) : mk (S.map g ≫ f.hom) ⟶ f where
left := g
- right := eqToHom (by ext)
+ right := 𝟙 _
lemma homMk'_id (f : CostructuredArrow S T) : homMk' f (𝟙 f.left) = eqToHom (by aesop_cat) := by
ext
@@ -476,6 +486,17 @@ lemma homMk'_mk_comp (f : S.obj Y ⟶ T) (g : Y' ⟶ Y) (g' : Y'' ⟶ Y') :
homMk' (mk f) (g' ≫ g) = eqToHom (by simp) ≫ homMk' (mk (S.map g ≫ f)) g' ≫ homMk' (mk f) g :=
homMk'_comp _ _ _
+/-- Variant of `homMk'` where both objects are applications of `mk`. -/
+@[simps]
+def mkPrecomp (f : S.obj Y ⟶ T) (g : Y' ⟶ Y) : mk (S.map g ≫ f) ⟶ mk f where
+ left := g
+ right := 𝟙 _
+
+lemma mkPrecomp_id (f : S.obj Y ⟶ T) : mkPrecomp f (𝟙 Y) = eqToHom (by aesop_cat) := by aesop_cat
+lemma mkPrecomp_comp (f : S.obj Y ⟶ T) (g : Y' ⟶ Y) (g' : Y'' ⟶ Y') :
+ mkPrecomp f (g' ≫ g) = eqToHom (by simp) ≫ mkPrecomp (S.map g ≫ f) g' ≫ mkPrecomp f g := by
+ aesop_cat
+
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -483,7 +504,7 @@ and to check that the triangle commutes.
@[simps!]
def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left)
(w : S.map g.hom ≫ f'.hom = f.hom := by aesop_cat) : f ≅ f' :=
- Comma.isoMk g (eqToIso (by ext)) (by simpa [eqToHom_map] using w)
+ Comma.isoMk g (eqToIso (by ext)) (by simpa using w)
#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMk
/- Porting note : it appears the simp lemma is not getting generated but the linter
@@ -3,8 +3,8 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
-/
+import Mathlib.CategoryTheory.Comma.Basic
import Mathlib.CategoryTheory.PUnit
-import Mathlib.CategoryTheory.Comma
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
import Mathlib.CategoryTheory.EssentiallySmall
@@ -298,7 +298,7 @@ noncomputable def isEquivalencePre (S : D) (F : B ⥤ C) (G : C ⥤ D) [IsEquiva
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
where
obj X := StructuredArrow.mk (G.map X.hom)
- map f := StructuredArrow.homMk f.right (by simp [Functor.comp_map, ←G.map_comp, ← f.w])
+ map f := StructuredArrow.homMk f.right (by simp [Functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
instance (S : C) (F : B ⥤ C) (G : C ⥤ D) : Faithful (post S F G) where
@@ -626,7 +626,7 @@ noncomputable def isEquivalencePre (F : B ⥤ C) (G : C ⥤ D) (S : D) [IsEquiva
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
CostructuredArrow F S ⥤ CostructuredArrow (F ⋙ G) (G.obj S) where
obj X := CostructuredArrow.mk (G.map X.hom)
- map f := CostructuredArrow.homMk f.left (by simp [Functor.comp_map, ←G.map_comp, ← f.w])
+ map f := CostructuredArrow.homMk f.left (by simp [Functor.comp_map, ← G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
instance (F : B ⥤ C) (G : C ⥤ D) (S : C) : Faithful (post F G S) where
There are two things going on here: the change in behaviour in simp
(currently, but not for much longer, requiring zeta := false
), and some defeq abuse that I'm resolving here by adding additional simp
lemmas.
This will slightly clarify one of the changes required in #7847
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -96,6 +96,7 @@ theorem comp_right {X Y Z : StructuredArrow S T} (f : X ⟶ Y) (g : Y ⟶ Z) :
@[simp]
theorem id_right (X : StructuredArrow S T) : (𝟙 X : X ⟶ X).right = 𝟙 X.right := rfl
+@[simp]
theorem eqToHom_right {X Y : StructuredArrow S T} (h : X = Y) :
(eqToHom h).right = eqToHom (by rw [h]) := by
subst h
@@ -427,6 +428,7 @@ theorem comp_left {X Y Z : CostructuredArrow S T} (f : X ⟶ Y) (g : Y ⟶ Z) :
@[simp]
theorem id_left (X : CostructuredArrow S T) : (𝟙 X : X ⟶ X).left = 𝟙 X.left := rfl
+@[simp]
theorem eqToHom_left {X Y : CostructuredArrow S T} (h : X = Y) :
(eqToHom h).left = eqToHom (by rw [h]) := by
subst h
@@ -832,12 +832,12 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
(fun X => (StructuredArrow.isoMk (Iso.refl _)).op)
fun {X Y} f => Quiver.Hom.unop_inj <| by
apply CommaMorphism.ext <;>
- dsimp [StructuredArrow.isoMk, Comma.isoMk,StructuredArrow.homMk]; simp )
+ dsimp [StructuredArrow.isoMk, Comma.isoMk,StructuredArrow.homMk]; simp)
(NatIso.ofComponents
(fun X => CostructuredArrow.isoMk (Iso.refl _))
fun {X Y} f => by
apply CommaMorphism.ext <;>
- dsimp [CostructuredArrow.isoMk, Comma.isoMk, CostructuredArrow.homMk]; simp )
+ dsimp [CostructuredArrow.isoMk, Comma.isoMk, CostructuredArrow.homMk]; simp)
#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalence
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
@@ -852,12 +852,12 @@ def costructuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
(fun X => (CostructuredArrow.isoMk (Iso.refl _)).op)
fun {X Y} f => Quiver.Hom.unop_inj <| by
apply CommaMorphism.ext <;>
- dsimp [CostructuredArrow.isoMk, CostructuredArrow.homMk, Comma.isoMk]; simp )
+ dsimp [CostructuredArrow.isoMk, CostructuredArrow.homMk, Comma.isoMk]; simp)
(NatIso.ofComponents
(fun X => StructuredArrow.isoMk (Iso.refl _))
fun {X Y} f => by
apply CommaMorphism.ext <;>
- dsimp [StructuredArrow.isoMk, StructuredArrow.homMk, Comma.isoMk]; simp )
+ dsimp [StructuredArrow.isoMk, StructuredArrow.homMk, Comma.isoMk]; simp)
#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalence
end CategoryTheory
@@ -91,11 +91,10 @@ theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.hom ≫ T.map f.right =
@[simp]
theorem comp_right {X Y Z : StructuredArrow S T} (f : X ⟶ Y) (g : Y ⟶ Z) :
- (f ≫ g).right = f.right ≫ g.right := rfl
+ (f ≫ g).right = f.right ≫ g.right := rfl
@[simp]
-theorem id_right (X : StructuredArrow S T) :
- (𝟙 X : X ⟶ X).right = 𝟙 X.right := rfl
+theorem id_right (X : StructuredArrow S T) : (𝟙 X : X ⟶ X).right = 𝟙 X.right := rfl
theorem eqToHom_right {X Y : StructuredArrow S T} (h : X = Y) :
(eqToHom h).right = eqToHom (by rw [h]) := by
@@ -103,8 +102,7 @@ theorem eqToHom_right {X Y : StructuredArrow S T} (h : X = Y) :
simp only [eqToHom_refl, id_right]
@[simp]
-theorem left_eq_id {X Y : StructuredArrow S T} (f : X ⟶ Y) :
- f.left = 𝟙 _ := rfl
+theorem left_eq_id {X Y : StructuredArrow S T} (f : X ⟶ Y) : f.left = 𝟙 _ := rfl
/-- To construct a morphism of structured arrows,
we need a morphism of the objects underlying the target,
@@ -424,11 +422,10 @@ theorem w {A B : CostructuredArrow S T} (f : A ⟶ B) : S.map f.left ≫ B.hom =
@[simp]
theorem comp_left {X Y Z : CostructuredArrow S T} (f : X ⟶ Y) (g : Y ⟶ Z) :
- (f ≫ g).left = f.left ≫ g.left := rfl
+ (f ≫ g).left = f.left ≫ g.left := rfl
@[simp]
-theorem id_left (X : CostructuredArrow S T) :
- (𝟙 X : X ⟶ X).left = 𝟙 X.left := rfl
+theorem id_left (X : CostructuredArrow S T) : (𝟙 X : X ⟶ X).left = 𝟙 X.left := rfl
theorem eqToHom_left {X Y : CostructuredArrow S T} (h : X = Y) :
(eqToHom h).left = eqToHom (by rw [h]) := by
@@ -436,8 +433,7 @@ theorem eqToHom_left {X Y : CostructuredArrow S T} (h : X = Y) :
simp only [eqToHom_refl, id_left]
@[simp]
-theorem right_eq_id {X Y : CostructuredArrow S T} (f : X ⟶ Y) :
- f.right = 𝟙 _ := rfl
+theorem right_eq_id {X Y : CostructuredArrow S T} (f : X ⟶ Y) : f.right = 𝟙 _ := rfl
/-- To construct a morphism of costructured arrows,
we need a morphism of the objects underlying the source,
@@ -692,6 +692,62 @@ end IsUniversal
end CostructuredArrow
+namespace Functor
+
+variable {E : Type u₃} [Category.{v₃} E]
+
+/-- Given `X : D` and `F : C ⥤ D`, to upgrade a functor `G : E ⥤ C` to a functor
+ `E ⥤ StructuredArrow X F`, it suffices to provide maps `X ⟶ F.obj (G.obj Y)` for all `Y` making
+ the obvious triangles involving all `F.map (G.map g)` commute.
+
+ This is of course the same as providing a cone over `F ⋙ G` with cone point `X`, see
+ `Functor.toStructuredArrowIsoToStructuredArrow`. -/
+@[simps]
+def toStructuredArrow (G : E ⥤ C) (X : D) (F : C ⥤ D) (f : (Y : E) → X ⟶ F.obj (G.obj Y))
+ (h : ∀ {Y Z : E} (g : Y ⟶ Z), f Y ≫ F.map (G.map g) = f Z) : E ⥤ StructuredArrow X F where
+ obj Y := StructuredArrow.mk (f Y)
+ map g := StructuredArrow.homMk (G.map g) (h g)
+
+/-- Upgrading a functor `E ⥤ C` to a functor `E ⥤ StructuredArrow X F` and composing with the
+ forgetful functor `StructuredArrow X F ⥤ C` recovers the original functor. -/
+def toStructuredArrowCompProj (G : E ⥤ C) (X : D) (F : C ⥤ D) (f : (Y : E) → X ⟶ F.obj (G.obj Y))
+ (h : ∀ {Y Z : E} (g : Y ⟶ Z), f Y ≫ F.map (G.map g) = f Z) :
+ G.toStructuredArrow X F f h ⋙ StructuredArrow.proj _ _ ≅ G :=
+ Iso.refl _
+
+@[simp]
+lemma toStructuredArrow_comp_proj (G : E ⥤ C) (X : D) (F : C ⥤ D)
+ (f : (Y : E) → X ⟶ F.obj (G.obj Y)) (h : ∀ {Y Z : E} (g : Y ⟶ Z), f Y ≫ F.map (G.map g) = f Z) :
+ G.toStructuredArrow X F f h ⋙ StructuredArrow.proj _ _ = G :=
+ rfl
+
+/-- Given `F : C ⥤ D` and `X : D`, to upgrade a functor `G : E ⥤ C` to a functor
+ `E ⥤ CostructuredArrow F X`, it suffices to provide maps `F.obj (G.obj Y) ⟶ X` for all `Y`
+ making the obvious triangles involving all `F.map (G.map g)` commute.
+
+ This is of course the same as providing a cocone over `F ⋙ G` with cocone point `X`, see
+ `Functor.toCostructuredArrowIsoToCostructuredArrow`. -/
+@[simps]
+def toCostructuredArrow (G : E ⥤ C) (F : C ⥤ D) (X : D) (f : (Y : E) → F.obj (G.obj Y) ⟶ X)
+ (h : ∀ {Y Z : E} (g : Y ⟶ Z), F.map (G.map g) ≫ f Z = f Y) : E ⥤ CostructuredArrow F X where
+ obj Y := CostructuredArrow.mk (f Y)
+ map g := CostructuredArrow.homMk (G.map g) (h g)
+
+/-- Upgrading a functor `E ⥤ C` to a functor `E ⥤ CostructuredArrow F X` and composing with the
+ forgetful functor `CostructuredArrow F X ⥤ C` recovers the original functor. -/
+def toCostructuredArrowCompProj (G : E ⥤ C) (F : C ⥤ D) (X : D)
+ (f : (Y : E) → F.obj (G.obj Y) ⟶ X) (h : ∀ {Y Z : E} (g : Y ⟶ Z), F.map (G.map g) ≫ f Z = f Y) :
+ G.toCostructuredArrow F X f h ⋙ CostructuredArrow.proj _ _ ≅ G :=
+ Iso.refl _
+
+@[simp]
+lemma toCostructuredArrow_comp_proj (G : E ⥤ C) (F : C ⥤ D) (X : D)
+ (f : (Y : E) → F.obj (G.obj Y) ⟶ X) (h : ∀ {Y Z : E} (g : Y ⟶ Z), F.map (G.map g) ≫ f Z = f Y) :
+ G.toCostructuredArrow F X f h ⋙ CostructuredArrow.proj _ _ = G :=
+rfl
+
+end Functor
+
open Opposite
namespace StructuredArrow
This PR changes the definition
abbrev fromPUnit (X : C) : Discrete PUnit.{v + 1} ⥤ C :=
(Functor.const _).obj X
to
abbrev fromPUnit (X : C) : Discrete PUnit.{w + 1} ⥤ C :=
(Functor.const _).obj X
and then redefines
def StructuredArrow (S : D) (T : C ⥤ D) :=
Comma (Functor.fromPUnit S) T
to
def StructuredArrow (S : D) (T : C ⥤ D) :=
Comma (Functor.fromPUnit.{0} S) T
The effect of this is that given {C : Type u₁} [Category.{v₁} C] {D : Type u₂} [Category.{v₂} D] (S : D) (T : C ⥤ D)
, the morphisms of StructuredArrow S T
no longer live in max v₁ v₂
, but in v₁
, as they should. Thus, this PR is basically a better version of #6388.
My guess for why we used to have the larger universe is that back in the day, the universes for limits were much more restricted, so stating the results of Limits/Comma.lean
was not possible if the morphisms of StructuredArrow
live in v₁
. Luckily, by now it is possible to state everything correctly, and this PR adjusts Limits/Comma.lean
and Limits/Over.lean
accordingly.
@@ -33,9 +33,11 @@ variable {C : Type u₁} [Category.{v₁} C] {D : Type u₂} [Category.{v₂} D]
has as its objects `D`-morphisms of the form `S ⟶ T Y`, for some `Y : C`,
and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
+-- We explicitly come from `PUnit.{1}` here to obtain the correct universe for morphisms of
+-- structured arrows.
-- @[nolint has_nonempty_instance]
def StructuredArrow (S : D) (T : C ⥤ D) :=
- Comma (Functor.fromPUnit S) T
+ Comma (Functor.fromPUnit.{0} S) T
#align category_theory.structured_arrow CategoryTheory.StructuredArrow
-- Porting note: not found by inferInstance
@@ -173,9 +175,6 @@ instance proj_faithful : Faithful (proj S T) where
map_injective {_ _} := ext
#align category_theory.structured_arrow.proj_faithful CategoryTheory.StructuredArrow.proj_faithful
-instance : LocallySmall.{v₁} (StructuredArrow S T) where
- hom_small _ _ := small_of_injective ext
-
/-- The converse of this is true with additional assumptions, see `mono_iff_mono_right`. -/
theorem mono_of_mono_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Mono f.right] : Mono f :=
(proj S T).mono_of_mono_map h
@@ -368,9 +367,11 @@ end StructuredArrow
has as its objects `D`-morphisms of the form `S Y ⟶ T`, for some `Y : C`,
and morphisms `C`-morphisms `Y ⟶ Y'` making the obvious triangle commute.
-/
+-- We explicitly come from `PUnit.{1}` here to obtain the correct universe for morphisms of
+-- costructured arrows.
-- @[nolint has_nonempty_instance] -- Porting note: removed
def CostructuredArrow (S : C ⥤ D) (T : D) :=
- Comma S (Functor.fromPUnit T)
+ Comma S (Functor.fromPUnit.{0} T)
#align category_theory.costructured_arrow CategoryTheory.CostructuredArrow
instance (S : C ⥤ D) (T : D) : Category (CostructuredArrow S T) := commaCategory
@@ -502,9 +503,6 @@ theorem ext_iff {A B : CostructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.left
instance proj_faithful : Faithful (proj S T) where map_injective {_ _} := ext
#align category_theory.costructured_arrow.proj_faithful CategoryTheory.CostructuredArrow.proj_faithful
-instance : LocallySmall.{v₁} (CostructuredArrow S T) where
- hom_small _ _ := small_of_injective ext
-
theorem mono_of_mono_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Mono f.left] : Mono f :=
(proj S T).mono_of_mono_map h
#align category_theory.costructured_arrow.mono_of_mono_left CategoryTheory.CostructuredArrow.mono_of_mono_left
@@ -49,7 +49,7 @@ def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
Comma.snd _ _
#align category_theory.structured_arrow.proj CategoryTheory.StructuredArrow.proj
-variable {S S' S'' : D} {Y Y' : C} {T T' : C ⥤ D}
+variable {S S' S'' : D} {Y Y' Y'' : C} {T T' : C ⥤ D}
-- porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
@@ -95,6 +95,11 @@ theorem comp_right {X Y Z : StructuredArrow S T} (f : X ⟶ Y) (g : Y ⟶ Z) :
theorem id_right (X : StructuredArrow S T) :
(𝟙 X : X ⟶ X).right = 𝟙 X.right := rfl
+theorem eqToHom_right {X Y : StructuredArrow S T} (h : X = Y) :
+ (eqToHom h).right = eqToHom (by rw [h]) := by
+ subst h
+ simp only [eqToHom_refl, id_right]
+
@[simp]
theorem left_eq_id {X Y : StructuredArrow S T} (f : X ⟶ Y) :
f.left = 𝟙 _ := rfl
@@ -125,6 +130,22 @@ def homMk' (f : StructuredArrow S T) (g : f.right ⟶ Y') : f ⟶ mk (f.hom ≫
right := g
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
+lemma homMk'_id (f : StructuredArrow S T) : homMk' f (𝟙 f.right) = eqToHom (by aesop_cat) := by
+ ext
+ simp [eqToHom_right]
+
+lemma homMk'_mk_id (f : S ⟶ T.obj Y) : homMk' (mk f) (𝟙 Y) = eqToHom (by aesop_cat) :=
+ homMk'_id _
+
+lemma homMk'_comp (f : StructuredArrow S T) (g : f.right ⟶ Y') (g' : Y' ⟶ Y'') :
+ homMk' f (g ≫ g') = homMk' f g ≫ homMk' (mk (f.hom ≫ T.map g)) g' ≫ eqToHom (by simp) := by
+ ext
+ simp [eqToHom_right]
+
+lemma homMk'_mk_comp (f : S ⟶ T.obj Y) (g : Y ⟶ Y') (g' : Y' ⟶ Y'') :
+ homMk' (mk f) (g ≫ g') = homMk' (mk f) g ≫ homMk' (mk (f ≫ T.map g)) g' ≫ eqToHom (by simp) :=
+ homMk'_comp _ _ _
+
/-- To construct an isomorphism of structured arrows,
we need an isomorphism of the objects underlying the target,
and to check that the triangle commutes.
@@ -362,7 +383,7 @@ def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
Comma.fst _ _
#align category_theory.costructured_arrow.proj CategoryTheory.CostructuredArrow.proj
-variable {T T' T'' : D} {Y Y' : C} {S S' : C ⥤ D}
+variable {T T' T'' : D} {Y Y' Y'' : C} {S S' : C ⥤ D}
-- porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
@@ -409,7 +430,7 @@ theorem id_left (X : CostructuredArrow S T) :
(𝟙 X : X ⟶ X).left = 𝟙 X.left := rfl
theorem eqToHom_left {X Y : CostructuredArrow S T} (h : X = Y) :
- (eqToHom h).left = eqToHom (by rw [h]) := by
+ (eqToHom h).left = eqToHom (by rw [h]) := by
subst h
simp only [eqToHom_refl, id_left]
@@ -440,6 +461,22 @@ def homMk' (f : CostructuredArrow S T) (g : Y' ⟶ f.left) : mk (S.map g ≫ f.h
left := g
right := eqToHom (by ext)
+lemma homMk'_id (f : CostructuredArrow S T) : homMk' f (𝟙 f.left) = eqToHom (by aesop_cat) := by
+ ext
+ simp [eqToHom_left]
+
+lemma homMk'_mk_id (f : S.obj Y ⟶ T) : homMk' (mk f) (𝟙 Y) = eqToHom (by aesop_cat) :=
+ homMk'_id _
+
+lemma homMk'_comp (f : CostructuredArrow S T) (g : Y' ⟶ f.left) (g' : Y'' ⟶ Y') :
+ homMk' f (g' ≫ g) = eqToHom (by simp) ≫ homMk' (mk (S.map g ≫ f.hom)) g' ≫ homMk' f g := by
+ ext
+ simp [eqToHom_left]
+
+lemma homMk'_mk_comp (f : S.obj Y ⟶ T) (g : Y' ⟶ Y) (g' : Y'' ⟶ Y') :
+ homMk' (mk f) (g' ≫ g) = eqToHom (by simp) ≫ homMk' (mk (S.map g ≫ f)) g' ≫ homMk' (mk f) g :=
+ homMk'_comp _ _ _
+
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
The basic design follows the API for colimits in the category theory library.
The dictionary looks like:
Current PR
LeftExtension
<-> Limits.Cocone
LeftExtension.IsKan
<-> Limits.IsColimit
Future PR
LeftExtension.HasKan
<-> Limits.HasColimit
lan
<-> Limits.colimit
The diagrams in the docs are far from ideal, but I hope it helps for the time being. I would be very happy to have a graphical visualization by e.g. the widgets.
@@ -58,6 +58,10 @@ variable {S S' S'' : D} {Y Y' : C} {T T' : C ⥤ D}
lemma hom_ext {X Y : StructuredArrow S T} (f g : X ⟶ Y) (h : f.right = g.right) : f = g :=
CommaMorphism.ext _ _ (Subsingleton.elim _ _) h
+@[simp]
+theorem hom_eq_iff {X Y : StructuredArrow S T} (f g : X ⟶ Y) : f = g ↔ f.right = g.right :=
+ ⟨fun h ↦ by rw [h], hom_ext _ _⟩
+
/-- Construct a structured arrow from a morphism. -/
def mk (f : S ⟶ T.obj Y) : StructuredArrow S T :=
⟨⟨⟨⟩⟩, Y, f⟩
@@ -300,6 +304,43 @@ instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢]
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.hom⟩, (eq_mk _).symm⟩, by aesop_cat⟩
#align category_theory.structured_arrow.small_proj_preimage_of_locally_small CategoryTheory.StructuredArrow.small_proj_preimage_of_locallySmall
+/-- A structured arrow is called universal if it is initial. -/
+abbrev IsUniversal (f : StructuredArrow S T) := IsInitial f
+
+namespace IsUniversal
+
+variable {f g : StructuredArrow S T}
+
+theorem uniq (h : IsUniversal f) (η : f ⟶ g) : η = h.to g :=
+ h.hom_ext η (h.to g)
+
+/-- The family of morphisms out of a universal arrow. -/
+def desc (h : IsUniversal f) (g : StructuredArrow S T) : f.right ⟶ g.right :=
+ (h.to g).right
+
+/-- Any structured arrow factors through a universal arrow. -/
+@[reassoc (attr := simp)]
+theorem fac (h : IsUniversal f) (g : StructuredArrow S T) :
+ f.hom ≫ T.map (h.desc g) = g.hom :=
+ Category.id_comp g.hom ▸ (h.to g).w.symm
+
+theorem hom_desc (h : IsUniversal f) {c : C} (η : f.right ⟶ c) :
+ η = h.desc (mk <| f.hom ≫ T.map η) :=
+ let g := mk <| f.hom ≫ T.map η
+ congrArg CommaMorphism.right (h.hom_ext (homMk η rfl : f ⟶ g) (h.to g))
+
+/-- Two morphisms out of a universal `T`-structured arrow are equal if their image under `T` are
+equal after precomposing the universal arrow. -/
+theorem hom_ext (h : IsUniversal f) {c : C} {η η' : f.right ⟶ c}
+ (w : f.hom ≫ T.map η = f.hom ≫ T.map η') : η = η' := by
+ rw [h.hom_desc η, h.hom_desc η', w]
+
+theorem existsUnique (h : IsUniversal f) (g : StructuredArrow S T) :
+ ∃! η : f.right ⟶ g.right, f.hom ≫ T.map η = g.hom :=
+ ⟨h.desc g, h.fac g, fun f w ↦ h.hom_ext <| by simp [w]⟩
+
+end IsUniversal
+
end StructuredArrow
/-- The category of `S`-costructured arrows with target `T : D` (here `S : C ⥤ D`),
@@ -330,6 +371,10 @@ variable {T T' T'' : D} {Y Y' : C} {S S' : C ⥤ D}
lemma hom_ext {X Y : CostructuredArrow S T} (f g : X ⟶ Y) (h : f.left = g.left) : f = g :=
CommaMorphism.ext _ _ h (Subsingleton.elim _ _)
+@[simp]
+theorem hom_eq_iff {X Y : CostructuredArrow S T} (f g : X ⟶ Y) : f = g ↔ f.left = g.left :=
+ ⟨fun h ↦ by rw [h], hom_ext _ _⟩
+
/-- Construct a costructured arrow from a morphism. -/
def mk (f : S.obj Y ⟶ T) : CostructuredArrow S T :=
⟨Y, ⟨⟨⟩⟩, f⟩
@@ -573,6 +618,43 @@ instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢]
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.hom⟩, (eq_mk _).symm⟩, by aesop_cat⟩
#align category_theory.costructured_arrow.small_proj_preimage_of_locally_small CategoryTheory.CostructuredArrow.small_proj_preimage_of_locallySmall
+/-- A costructured arrow is called universal if it is terminal. -/
+abbrev IsUniversal (f : CostructuredArrow S T) := IsTerminal f
+
+namespace IsUniversal
+
+variable {f g : CostructuredArrow S T}
+
+theorem uniq (h : IsUniversal f) (η : g ⟶ f) : η = h.from g :=
+ h.hom_ext η (h.from g)
+
+/-- The family of morphisms into a universal arrow. -/
+def lift (h : IsUniversal f) (g : CostructuredArrow S T) : g.left ⟶ f.left :=
+ (h.from g).left
+
+/-- Any costructured arrow factors through a universal arrow. -/
+@[reassoc (attr := simp)]
+theorem fac (h : IsUniversal f) (g : CostructuredArrow S T) :
+ S.map (h.lift g) ≫ f.hom = g.hom :=
+ Category.comp_id g.hom ▸ (h.from g).w
+
+theorem hom_desc (h : IsUniversal f) {c : C} (η : c ⟶ f.left) :
+ η = h.lift (mk <| S.map η ≫ f.hom) :=
+ let g := mk <| S.map η ≫ f.hom
+ congrArg CommaMorphism.left (h.hom_ext (homMk η rfl : g ⟶ f) (h.from g))
+
+/-- Two morphisms into a universal `S`-costructured arrow are equal if their image under `S` are
+equal after postcomposing the universal arrow. -/
+theorem hom_ext (h : IsUniversal f) {c : C} {η η' : c ⟶ f.left}
+ (w : S.map η ≫ f.hom = S.map η' ≫ f.hom) : η = η' := by
+ rw [h.hom_desc η, h.hom_desc η', w]
+
+theorem existsUnique (h : IsUniversal f) (g : CostructuredArrow S T) :
+ ∃! η : g.left ⟶ f.left, S.map η ≫ f.hom = g.hom :=
+ ⟨h.lift g, h.fac g, fun f w ↦ h.hom_ext <| by simp [w]⟩
+
+end IsUniversal
+
end CostructuredArrow
open Opposite
@@ -113,13 +113,12 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right)
picks up on it (seems like a bug). Either way simp solves it. -/
attribute [-simp, nolint simpNF] homMk_left
-/-- Given a structured arrow `X ⟶ F(U)`, and an arrow `U ⟶ Y`, we can construct a morphism of
-structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
--/
-def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right ⟶ Y) :
- U ⟶ mk (U.hom ≫ F.map f) where
+/-- Given a structured arrow `X ⟶ T(Y)`, and an arrow `Y ⟶ Y'`, we can construct a morphism of
+ structured arrows given by `(X ⟶ T(Y)) ⟶ (X ⟶ T(Y) ⟶ T(Y'))`. -/
+@[simps]
+def homMk' (f : StructuredArrow S T) (g : f.right ⟶ Y') : f ⟶ mk (f.hom ≫ T.map g) where
left := eqToHom (by ext)
- right := f
+ right := g
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
/-- To construct an isomorphism of structured arrows,
@@ -171,11 +170,10 @@ instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h
(proj S T).epi_of_epi_map h
#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMk
-/-- Eta rule for structured arrows. Prefer `StructuredArrow.eta`, since equality of objects tends
- to cause problems. -/
-theorem eq_mk (f : StructuredArrow S T) : f = mk f.hom := by
- cases f
- congr
+/-- Eta rule for structured arrows. Prefer `StructuredArrow.eta` for rewriting, since equality of
+ objects tends to cause problems. -/
+theorem eq_mk (f : StructuredArrow S T) : f = mk f.hom :=
+ rfl
#align category_theory.structured_arrow.eq_mk CategoryTheory.StructuredArrow.eq_mk
/-- Eta rule for structured arrows. -/
@@ -390,6 +388,13 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left)
picks up on it. Either way simp can prove this -/
attribute [-simp, nolint simpNF] homMk_right_down_down
+/-- Given a costructured arrow `S(Y) ⟶ X`, and an arrow `Y' ⟶ Y'`, we can construct a morphism of
+ costructured arrows given by `(S(Y) ⟶ X) ⟶ (S(Y') ⟶ S(Y) ⟶ X)`. -/
+@[simps]
+def homMk' (f : CostructuredArrow S T) (g : Y' ⟶ f.left) : mk (S.map g ≫ f.hom) ⟶ f where
+ left := g
+ right := eqToHom (by ext)
+
/-- To construct an isomorphism of costructured arrows,
we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
@@ -437,11 +442,10 @@ instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h
(proj S T).epi_of_epi_map h
#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMk
-/-- Eta rule for costructured arrows. Prefer `CostructuredArrow.eta`, as equality of objects tends
- to cause problems. -/
-theorem eq_mk (f : CostructuredArrow S T) : f = mk f.hom := by
- cases f
- congr
+/-- Eta rule for costructured arrows. Prefer `CostructuredArrow.eta` for rewriting, as equality of
+ objects tends to cause problems. -/
+theorem eq_mk (f : CostructuredArrow S T) : f = mk f.hom :=
+ rfl
#align category_theory.costructured_arrow.eq_mk CategoryTheory.CostructuredArrow.eq_mk
/-- Eta rule for costructured arrows. -/
@@ -149,6 +149,9 @@ instance proj_faithful : Faithful (proj S T) where
map_injective {_ _} := ext
#align category_theory.structured_arrow.proj_faithful CategoryTheory.StructuredArrow.proj_faithful
+instance : LocallySmall.{v₁} (StructuredArrow S T) where
+ hom_small _ _ := small_of_injective ext
+
/-- The converse of this is true with additional assumptions, see `mono_iff_mono_right`. -/
theorem mono_of_mono_right {A B : StructuredArrow S T} (f : A ⟶ B) [h : Mono f.right] : Mono f :=
(proj S T).mono_of_mono_map h
@@ -412,6 +415,9 @@ theorem ext_iff {A B : CostructuredArrow S T} (f g : A ⟶ B) : f = g ↔ f.left
instance proj_faithful : Faithful (proj S T) where map_injective {_ _} := ext
#align category_theory.costructured_arrow.proj_faithful CategoryTheory.CostructuredArrow.proj_faithful
+instance : LocallySmall.{v₁} (CostructuredArrow S T) where
+ hom_small _ _ := small_of_injective ext
+
theorem mono_of_mono_left {A B : CostructuredArrow S T} (f : A ⟶ B) [h : Mono f.left] : Mono f :=
(proj S T).mono_of_mono_map h
#align category_theory.costructured_arrow.mono_of_mono_left CategoryTheory.CostructuredArrow.mono_of_mono_left
@@ -49,7 +49,7 @@ def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
Comma.snd _ _
#align category_theory.structured_arrow.proj CategoryTheory.StructuredArrow.proj
-variable {S S' S'' : D} {Y Y' : C} {T : C ⥤ D}
+variable {S S' S'' : D} {Y Y' : C} {T T' : C ⥤ D}
-- porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
@@ -216,6 +216,17 @@ theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
simp
#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_comp
+/-- An isomorphism `S ≅ S'` induces an equivalence `StructuredArrow S T ≌ StructuredArrow S' T`. -/
+@[simp]
+def mapIso (i : S ≅ S') : StructuredArrow S T ≌ StructuredArrow S' T :=
+ Comma.mapLeftIso _ ((Functor.const _).mapIso i)
+
+/-- A natural isomorphism `T ≅ T'` induces an equivalence
+ `StructuredArrow S T ≌ StructuredArrow S T'`.-/
+@[simp]
+def mapNatIso (i : T ≅ T') : StructuredArrow S T ≌ StructuredArrow S T' :=
+ Comma.mapRightIso _ i
+
instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
reflects {Y Z} f t :=
⟨⟨StructuredArrow.homMk
@@ -309,7 +320,7 @@ def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
Comma.fst _ _
#align category_theory.costructured_arrow.proj CategoryTheory.CostructuredArrow.proj
-variable {T T' T'' : D} {Y Y' : C} {S : C ⥤ D}
+variable {T T' T'' : D} {Y Y' : C} {S S' : C ⥤ D}
-- porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
@@ -468,6 +479,18 @@ theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
simp
#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_comp
+/-- An isomorphism `T ≅ T'` induces an equivalence
+ `CostructuredArrow S T ≌ CostructuredArrow S T'`. -/
+@[simp]
+def mapIso (i : T ≅ T') : CostructuredArrow S T ≌ CostructuredArrow S T' :=
+ Comma.mapRightIso _ ((Functor.const _).mapIso i)
+
+/-- A natural isomorphism `S ≅ S'` induces an equivalence
+ `CostrucutredArrow S T ≌ CostructuredArrow S' T`. -/
+@[simp]
+def mapNatIso (i : S ≅ S') : CostructuredArrow S T ≌ CostructuredArrow S' T :=
+ Comma.mapLeftIso _ i
+
instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
reflects {Y Z} f t :=
⟨⟨CostructuredArrow.homMk
@@ -244,6 +244,20 @@ def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ St
Comma.preRight _ F G
#align category_theory.structured_arrow.pre CategoryTheory.StructuredArrow.pre
+instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [Faithful F] : Faithful (pre S F G) :=
+ show Faithful (Comma.preRight _ _ _) from inferInstance
+
+instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [Full F] : Full (pre S F G) :=
+ show Full (Comma.preRight _ _ _) from inferInstance
+
+instance (S : D) (F : B ⥤ C) (G : C ⥤ D) [EssSurj F] : EssSurj (pre S F G) :=
+ show EssSurj (Comma.preRight _ _ _) from inferInstance
+
+/-- If `F` is an equivalence, then so is the functor `(S, F ⋙ G) ⥤ (S, G)`. -/
+noncomputable def isEquivalencePre (S : D) (F : B ⥤ C) (G : C ⥤ D) [IsEquivalence F] :
+ IsEquivalence (pre S F G) :=
+ Comma.isEquivalencePreRight _ _ _
+
/-- The functor `(S, F) ⥤ (G(S), F ⋙ G)`. -/
@[simps]
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
@@ -482,6 +496,20 @@ def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤
Comma.preLeft F G _
#align category_theory.costructured_arrow.pre CategoryTheory.CostructuredArrow.pre
+instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [Faithful F] : Faithful (pre F G S) :=
+ show Faithful (Comma.preLeft _ _ _) from inferInstance
+
+instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [Full F] : Full (pre F G S) :=
+ show Full (Comma.preLeft _ _ _) from inferInstance
+
+instance (F : B ⥤ C) (G : C ⥤ D) (S : D) [EssSurj F] : EssSurj (pre F G S) :=
+ show EssSurj (Comma.preLeft _ _ _) from inferInstance
+
+/-- If `F` is an equivalence, then so is the functor `(F ⋙ G, S) ⥤ (G, S)`. -/
+noncomputable def isEquivalencePre (F : B ⥤ C) (G : C ⥤ D) (S : D) [IsEquivalence F] :
+ IsEquivalence (pre F G S) :=
+ Comma.isEquivalencePreLeft _ _ _
+
/-- The functor `(F, S) ⥤ (F ⋙ G, G(S))`. -/
@[simps]
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
@@ -252,6 +252,20 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
map f := StructuredArrow.homMk f.right (by simp [Functor.comp_map, ←G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
+instance (S : C) (F : B ⥤ C) (G : C ⥤ D) : Faithful (post S F G) where
+ map_injective {_ _} _ _ h := by simpa [ext_iff] using h
+
+instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [Faithful G] : Full (post S F G) where
+ preimage {_ _} f := homMk f.right (G.map_injective (by simpa using f.w.symm))
+
+instance (S : C) (F : B ⥤ C) (G : C ⥤ D) [Full G] : EssSurj (post S F G) where
+ mem_essImage h := ⟨mk (G.preimage h.hom), ⟨isoMk (Iso.refl _) (by simp)⟩⟩
+
+/-- If `G` is fully faithful, then `post S F G : (S, F) ⥤ (G(S), F ⋙ G)` is an equivalence. -/
+noncomputable def isEquivalencePost (S : C) (F : B ⥤ C) (G : C ⥤ D) [Full G] [Faithful G] :
+ IsEquivalence (post S F G) :=
+ Equivalence.ofFullyFaithfullyEssSurj _
+
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) := by
suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S ⟶ T.obj G => mk f.2 by
@@ -476,6 +490,20 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
map f := CostructuredArrow.homMk f.left (by simp [Functor.comp_map, ←G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
+instance (F : B ⥤ C) (G : C ⥤ D) (S : C) : Faithful (post F G S) where
+ map_injective {_ _} _ _ h := by simpa [ext_iff] using h
+
+instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [Faithful G] : Full (post F G S) where
+ preimage {_ _} f := homMk f.left (G.map_injective (by simpa using f.w))
+
+instance (F : B ⥤ C) (G : C ⥤ D) (S : C) [Full G] : EssSurj (post F G S) where
+ mem_essImage h := ⟨mk (G.preimage h.hom), ⟨isoMk (Iso.refl _) (by simp)⟩⟩
+
+/-- If `G` is fully faithful, then `post F G S : (F, S) ⥤ (F ⋙ G, G(S))` is an equivalence. -/
+noncomputable def isEquivalencePost (S : C) (F : B ⥤ C) (G : C ⥤ D) [Full G] [Faithful G] :
+ IsEquivalence (post F G S) :=
+ Equivalence.ofFullyFaithfullyEssSurj _
+
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) := by
suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S.obj G ⟶ T => mk f.2 by
@@ -2,17 +2,14 @@
Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.structured_arrow
-! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.PUnit
import Mathlib.CategoryTheory.Comma
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
import Mathlib.CategoryTheory.EssentiallySmall
+#align_import category_theory.structured_arrow from "leanprover-community/mathlib"@"8a318021995877a44630c898d0b2bc376fceef3b"
+
/-!
# The category of "structured arrows"
This is the second half of the changes originally in #5699, removing all occurrences of ;
after a space and implementing a linter rule to enforce it.
In most cases this 2-character substring has a space after it, so the following command was run first:
find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;
The remaining cases were few enough in number that they were done manually.
@@ -83,7 +83,7 @@ theorem mk_hom_eq_self (f : S ⟶ T.obj Y) : (mk f).hom = f :=
@[reassoc (attr := simp)]
theorem w {A B : StructuredArrow S T} (f : A ⟶ B) : A.hom ≫ T.map f.right = B.hom := by
- have := f.w ; aesop_cat
+ have := f.w; aesop_cat
#align category_theory.structured_arrow.w CategoryTheory.StructuredArrow.w
@[simp]
@@ -577,12 +577,12 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
(fun X => (StructuredArrow.isoMk (Iso.refl _)).op)
fun {X Y} f => Quiver.Hom.unop_inj <| by
apply CommaMorphism.ext <;>
- dsimp [StructuredArrow.isoMk, Comma.isoMk,StructuredArrow.homMk] ; simp )
+ dsimp [StructuredArrow.isoMk, Comma.isoMk,StructuredArrow.homMk]; simp )
(NatIso.ofComponents
(fun X => CostructuredArrow.isoMk (Iso.refl _))
fun {X Y} f => by
apply CommaMorphism.ext <;>
- dsimp [CostructuredArrow.isoMk, Comma.isoMk, CostructuredArrow.homMk] ; simp )
+ dsimp [CostructuredArrow.isoMk, Comma.isoMk, CostructuredArrow.homMk]; simp )
#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalence
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
@@ -597,12 +597,12 @@ def costructuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
(fun X => (CostructuredArrow.isoMk (Iso.refl _)).op)
fun {X Y} f => Quiver.Hom.unop_inj <| by
apply CommaMorphism.ext <;>
- dsimp [CostructuredArrow.isoMk, CostructuredArrow.homMk, Comma.isoMk] ; simp )
+ dsimp [CostructuredArrow.isoMk, CostructuredArrow.homMk, Comma.isoMk]; simp )
(NatIso.ofComponents
(fun X => StructuredArrow.isoMk (Iso.refl _))
fun {X Y} f => by
apply CommaMorphism.ext <;>
- dsimp [StructuredArrow.isoMk, StructuredArrow.homMk, Comma.isoMk] ; simp )
+ dsimp [StructuredArrow.isoMk, StructuredArrow.homMk, Comma.isoMk]; simp )
#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalence
end CategoryTheory
Adds a global Aesop cases
rule for the Discrete
category. This rule was previously added locally in several places.
@@ -229,8 +229,6 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
open CategoryTheory.Limits
-attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
-
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y))) where
desc c := homMk (T.preimage c.pt.hom)
@@ -455,8 +453,6 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
open CategoryTheory.Limits
-attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
-
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y))) where
lift c := homMk (S.preimage c.pt.hom)
@@ -56,6 +56,7 @@ variable {S S' S'' : D} {Y Y' : C} {T : C ⥤ D}
-- porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
+-- See https://github.com/leanprover-community/mathlib4/issues/5229
@[ext]
lemma hom_ext {X Y : StructuredArrow S T} (f g : X ⟶ Y) (h : f.right = g.right) : f = g :=
CommaMorphism.ext _ _ (Subsingleton.elim _ _) h
@@ -289,6 +290,7 @@ variable {T T' T'' : D} {Y Y' : C} {S : C ⥤ D}
-- porting note: this lemma was added because `Comma.hom_ext`
-- was not triggered automatically
+-- See https://github.com/leanprover-community/mathlib4/issues/5229
@[ext]
lemma hom_ext {X Y : CostructuredArrow S T} (f g : X ⟶ Y) (h : f.left = g.left) : f = g :=
CommaMorphism.ext _ _ h (Subsingleton.elim _ _)
@@ -448,7 +450,7 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
⟨⟨CostructuredArrow.homMk
(inv ((proj S T).map f))
(by rw [Functor.map_inv, IsIso.inv_comp_eq]; simp),
- by constructor <;> apply Comma.hom_ext <;> dsimp at t ⊢ <;> simp⟩⟩
+ by constructor <;> ext <;> dsimp at t ⊢ <;> simp⟩⟩
#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms
open CategoryTheory.Limits
@@ -460,10 +462,9 @@ def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y))) where
lift c := homMk (S.preimage c.pt.hom)
uniq := by
rintro c m -
- apply CommaMorphism.ext
- · apply S.map_injective
- simpa only [homMk_left, S.image_preimage, ← w m] using (Category.comp_id _).symm
- · aesop_cat
+ ext
+ apply S.map_injective
+ simpa only [homMk_left, S.image_preimage, ← w m] using (Category.comp_id _).symm
#align category_theory.costructured_arrow.mk_id_terminal CategoryTheory.CostructuredArrow.mkIdTerminal
variable {A : Type u₃} [Category.{v₃} A] {B : Type u₄} [Category.{v₄} B]
@@ -276,6 +276,7 @@ def CostructuredArrow (S : C ⥤ D) (T : D) :=
#align category_theory.costructured_arrow CategoryTheory.CostructuredArrow
instance (S : C ⥤ D) (T : D) : Category (CostructuredArrow S T) := commaCategory
+
namespace CostructuredArrow
/-- The obvious projection functor from costructured arrows. -/
@@ -102,8 +102,8 @@ we need a morphism of the objects underlying the target,
and to check that the triangle commutes.
-/
@[simps]
-def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.hom ≫ T.map g = f'.hom) :
- f ⟶ f' where
+def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right)
+ (w : f.hom ≫ T.map g = f'.hom := by aesop_cat) : f ⟶ f' where
left := eqToHom (by ext)
right := g
w := by
@@ -129,7 +129,8 @@ we need an isomorphism of the objects underlying the target,
and to check that the triangle commutes.
-/
@[simps!]
-def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right) (w : f.hom ≫ T.map g.hom = f'.hom) :
+def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right)
+ (w : f.hom ≫ T.map g.hom = f'.hom := by aesop_cat) :
f ≅ f' :=
Comma.isoMk (eqToIso (by ext)) g (by simpa [eqToHom_map] using w.symm)
#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMk
@@ -179,7 +180,7 @@ theorem eq_mk (f : StructuredArrow S T) : f = mk f.hom := by
/-- Eta rule for structured arrows. -/
@[simps!]
def eta (f : StructuredArrow S T) : f ≅ mk f.hom :=
- isoMk (Iso.refl _) (by aesop_cat)
+ isoMk (Iso.refl _)
#align category_theory.structured_arrow.eta CategoryTheory.StructuredArrow.eta
/- Porting note : it appears the simp lemma is not getting generated but the linter
@@ -231,7 +232,7 @@ attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y))) where
- desc c := homMk (T.preimage c.pt.hom) (by simp)
+ desc c := homMk (T.preimage c.pt.hom)
uniq c m _ := by
apply CommaMorphism.ext
· aesop_cat
@@ -338,8 +339,8 @@ we need a morphism of the objects underlying the source,
and to check that the triangle commutes.
-/
@[simps!]
-def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left) (w : S.map g ≫ f'.hom = f.hom) :
- f ⟶ f' where
+def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left)
+ (w : S.map g ≫ f'.hom = f.hom := by aesop_cat) : f ⟶ f' where
left := g
right := eqToHom (by ext)
w := by simpa [eqToHom_map] using w
@@ -354,8 +355,8 @@ we need an isomorphism of the objects underlying the source,
and to check that the triangle commutes.
-/
@[simps!]
-def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left) (w : S.map g.hom ≫ f'.hom = f.hom) :
- f ≅ f' :=
+def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left)
+ (w : S.map g.hom ≫ f'.hom = f.hom := by aesop_cat) : f ≅ f' :=
Comma.isoMk g (eqToIso (by ext)) (by simpa [eqToHom_map] using w)
#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMk
@@ -403,7 +404,7 @@ theorem eq_mk (f : CostructuredArrow S T) : f = mk f.hom := by
/-- Eta rule for costructured arrows. -/
@[simps!]
def eta (f : CostructuredArrow S T) : f ≅ mk f.hom :=
- isoMk (Iso.refl _) (by aesop_cat)
+ isoMk (Iso.refl _)
#align category_theory.costructured_arrow.eta CategoryTheory.CostructuredArrow.eta
/- Porting note : it appears the simp lemma is not getting generated but the linter
@@ -455,7 +456,7 @@ attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y))) where
- lift c := homMk (S.preimage c.pt.hom) (by simp)
+ lift c := homMk (S.preimage c.pt.hom)
uniq := by
rintro c m -
apply CommaMorphism.ext
@@ -575,18 +576,15 @@ def structuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
Equivalence.mk (StructuredArrow.toCostructuredArrow F d)
(CostructuredArrow.toStructuredArrow' F d).rightOp
(NatIso.ofComponents
- (fun X =>
- (@StructuredArrow.isoMk _ _ _ _ _ _ (StructuredArrow.mk (unop X).hom) (unop X) (Iso.refl _)
- (by aesop_cat)).op)
+ (fun X => (StructuredArrow.isoMk (Iso.refl _)).op)
fun {X Y} f => Quiver.Hom.unop_inj <| by
apply CommaMorphism.ext <;>
- dsimp [StructuredArrow.isoMk,Comma.isoMk,StructuredArrow.homMk] ; simp )
+ dsimp [StructuredArrow.isoMk, Comma.isoMk,StructuredArrow.homMk] ; simp )
(NatIso.ofComponents
- (fun X =>
- @CostructuredArrow.isoMk _ _ _ _ _ _ (CostructuredArrow.mk X.hom) X (Iso.refl _)
- (by aesop_cat)) fun {X Y} f => by
- apply CommaMorphism.ext <;>
- dsimp [CostructuredArrow.isoMk, Comma.isoMk, CostructuredArrow.homMk] ; simp )
+ (fun X => CostructuredArrow.isoMk (Iso.refl _))
+ fun {X Y} f => by
+ apply CommaMorphism.ext <;>
+ dsimp [CostructuredArrow.isoMk, Comma.isoMk, CostructuredArrow.homMk] ; simp )
#align category_theory.structured_arrow_op_equivalence CategoryTheory.structuredArrowOpEquivalence
/-- For a functor `F : C ⥤ D` and an object `d : D`, the category of costructured arrows
@@ -598,18 +596,15 @@ def costructuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
Equivalence.mk (CostructuredArrow.toStructuredArrow F d)
(StructuredArrow.toCostructuredArrow' F d).rightOp
(NatIso.ofComponents
- (fun X =>
- (@CostructuredArrow.isoMk _ _ _ _ _ _ (CostructuredArrow.mk (unop X).hom) (unop X)
- (Iso.refl _) (by aesop_cat)).op)
+ (fun X => (CostructuredArrow.isoMk (Iso.refl _)).op)
fun {X Y} f => Quiver.Hom.unop_inj <| by
apply CommaMorphism.ext <;>
dsimp [CostructuredArrow.isoMk, CostructuredArrow.homMk, Comma.isoMk] ; simp )
(NatIso.ofComponents
- (fun X =>
- @StructuredArrow.isoMk _ _ _ _ _ _ (StructuredArrow.mk X.hom) X (Iso.refl _)
- (by aesop_cat)) fun {X Y} f => by
- apply CommaMorphism.ext <;>
- dsimp [StructuredArrow.isoMk, StructuredArrow.homMk, Comma.isoMk] ; simp )
+ (fun X => StructuredArrow.isoMk (Iso.refl _))
+ fun {X Y} f => by
+ apply CommaMorphism.ext <;>
+ dsimp [StructuredArrow.isoMk, StructuredArrow.homMk, Comma.isoMk] ; simp )
#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalence
end CategoryTheory
@@ -227,12 +227,11 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
open CategoryTheory.Limits
--- attribute [local tidy] tactic.discrete_cases
+attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y))) where
desc c := homMk (T.preimage c.pt.hom) (by simp)
- fac := fun _ ⟨a⟩ => by cases a
uniq c m _ := by
apply CommaMorphism.ext
· aesop_cat
@@ -452,12 +451,11 @@ instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
open CategoryTheory.Limits
--- attribute [local tidy] tactic.discrete_cases -- Porting note: removed
+attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y))) where
lift c := homMk (S.preimage c.pt.hom) (by simp)
- fac := fun _ ⟨a⟩ => by cases a
uniq := by
rintro c m -
apply CommaMorphism.ext
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -484,8 +484,7 @@ def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) := by
- suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S.obj G ⟶ T => mk f.2
- by
+ suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S.obj G ⟶ T => mk f.2 by
rw [this]
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.hom⟩, (eq_mk _).symm⟩, by aesop_cat⟩
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Topaz, Scott Morrison
! This file was ported from Lean 3 source module category_theory.structured_arrow
-! leanprover-community/mathlib commit fef8efdf78f223294c34a41875923ab1272322d4
+! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -120,7 +120,7 @@ structured arrow given by `(X ⟶ F(U)) ⟶ (X ⟶ F(U) ⟶ F(Y))`.
-/
def homMk' {F : C ⥤ D} {X : D} {Y : C} (U : StructuredArrow X F) (f : U.right ⟶ Y) :
U ⟶ mk (U.hom ≫ F.map f) where
- left := by cases U.left; exact 𝟙 _
+ left := eqToHom (by ext)
right := f
#align category_theory.structured_arrow.hom_mk' CategoryTheory.StructuredArrow.homMk'
@@ -252,14 +252,8 @@ def pre (S : D) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S (F ⋙ G) ⥤ St
@[simps]
def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ StructuredArrow (G.obj S) (F ⋙ G)
where
- obj X :=
- { left := ⟨⟨⟩⟩
- right := X.right
- hom := G.map X.hom }
- map f :=
- { left := 𝟙 ⟨⟨⟩⟩
- right := f.right
- w := by simp [Functor.comp_map, ← G.map_comp, ← f.w] }
+ obj X := StructuredArrow.mk (G.map X.hom)
+ map f := StructuredArrow.homMk f.right (by simp [Functor.comp_map, ←G.map_comp, ← f.w])
#align category_theory.structured_arrow.post CategoryTheory.StructuredArrow.post
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
@@ -484,14 +478,8 @@ def pre (F : B ⥤ C) (G : C ⥤ D) (S : D) : CostructuredArrow (F ⋙ G) S ⥤
@[simps]
def post (F : B ⥤ C) (G : C ⥤ D) (S : C) :
CostructuredArrow F S ⥤ CostructuredArrow (F ⋙ G) (G.obj S) where
- obj X :=
- { left := X.left
- right := ⟨⟨⟩⟩
- hom := G.map X.hom }
- map f :=
- { left := f.left
- right := 𝟙 _
- w := by simp [Functor.comp_map, ← G.map_comp, ← f.w] }
+ obj X := CostructuredArrow.mk (G.map X.hom)
+ map f := CostructuredArrow.homMk f.left (by simp [Functor.comp_map, ←G.map_comp, ← f.w])
#align category_theory.costructured_arrow.post CategoryTheory.CostructuredArrow.post
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Co-authored-by: Calvin Lee <calvins.lee@utah.edu> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>
@@ -54,6 +54,12 @@ def proj (S : D) (T : C ⥤ D) : StructuredArrow S T ⥤ C :=
variable {S S' S'' : D} {Y Y' : C} {T : C ⥤ D}
+-- porting note: this lemma was added because `Comma.hom_ext`
+-- was not triggered automatically
+@[ext]
+lemma hom_ext {X Y : StructuredArrow S T} (f g : X ⟶ Y) (h : f.right = g.right) : f = g :=
+ CommaMorphism.ext _ _ (Subsingleton.elim _ _) h
+
/-- Construct a structured arrow from a morphism. -/
def mk (f : S ⟶ T.obj Y) : StructuredArrow S T :=
⟨⟨⟨⟩⟩, Y, f⟩
@@ -286,6 +292,12 @@ def proj (S : C ⥤ D) (T : D) : CostructuredArrow S T ⥤ C :=
variable {T T' T'' : D} {Y Y' : C} {S : C ⥤ D}
+-- porting note: this lemma was added because `Comma.hom_ext`
+-- was not triggered automatically
+@[ext]
+lemma hom_ext {X Y : CostructuredArrow S T} (f g : X ⟶ Y) (h : f.left = g.left) : f = g :=
+ CommaMorphism.ext _ _ h (Subsingleton.elim _ _)
+
/-- Construct a costructured arrow from a morphism. -/
def mk (f : S.obj Y ⟶ T) : CostructuredArrow S T :=
⟨Y, ⟨⟨⟩⟩, f⟩
@@ -319,6 +331,11 @@ theorem comp_left {X Y Z : CostructuredArrow S T} (f : X ⟶ Y) (g : Y ⟶ Z) :
theorem id_left (X : CostructuredArrow S T) :
(𝟙 X : X ⟶ X).left = 𝟙 X.left := rfl
+theorem eqToHom_left {X Y : CostructuredArrow S T} (h : X = Y) :
+ (eqToHom h).left = eqToHom (by rw [h]) := by
+ subst h
+ simp only [eqToHom_refl, id_left]
+
@[simp]
theorem right_eq_id {X Y : CostructuredArrow S T} (f : X ⟶ Y) :
f.right = 𝟙 _ := rfl
@@ -105,8 +105,8 @@ def homMk {f f' : StructuredArrow S T} (g : f.right ⟶ f'.right) (w : f.hom ≫
simpa using w.symm
#align category_theory.structured_arrow.hom_mk CategoryTheory.StructuredArrow.homMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
-picks up on it (seems like a bug). Either way simp solves it. -/
+/- Porting note : it appears the simp lemma is not getting generated but the linter
+picks up on it (seems like a bug). Either way simp solves it. -/
attribute [-simp, nolint simpNF] homMk_left
/-- Given a structured arrow `X ⟶ F(U)`, and an arrow `U ⟶ Y`, we can construct a morphism of
@@ -128,12 +128,11 @@ def isoMk {f f' : StructuredArrow S T} (g : f.right ≅ f'.right) (w : f.hom ≫
Comma.isoMk (eqToIso (by ext)) g (by simpa [eqToHom_map] using w.symm)
#align category_theory.structured_arrow.iso_mk CategoryTheory.StructuredArrow.isoMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
-picks up on it. Either way simp solves these. -/
+/- Porting note : it appears the simp lemma is not getting generated but the linter
+picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] isoMk_hom_left_down_down isoMk_inv_left_down_down
theorem ext {A B : StructuredArrow S T} (f g : A ⟶ B) : f.right = g.right → f = g :=
- --have : Subsingleton (A.left ⟶ B.left) := sorry
CommaMorphism.ext _ _ (Subsingleton.elim _ _)
#align category_theory.structured_arrow.ext CategoryTheory.StructuredArrow.ext
@@ -164,7 +163,7 @@ instance epi_homMk {A B : StructuredArrow S T} (f : A.right ⟶ B.right) (w) [h
(proj S T).epi_of_epi_map h
#align category_theory.structured_arrow.epi_hom_mk CategoryTheory.StructuredArrow.epi_homMk
-/-- Eta rule for structured arrows. Prefer `structured_arrow.eta`, since equality of objects tends
+/-- Eta rule for structured arrows. Prefer `StructuredArrow.eta`, since equality of objects tends
to cause problems. -/
theorem eq_mk (f : StructuredArrow S T) : f = mk f.hom := by
cases f
@@ -177,13 +176,13 @@ def eta (f : StructuredArrow S T) : f ≅ mk f.hom :=
isoMk (Iso.refl _) (by aesop_cat)
#align category_theory.structured_arrow.eta CategoryTheory.StructuredArrow.eta
-/- Porting note : it appears the simp lemma is not getting generated but the linter
-picks up on it. Either way simp solves these. -/
+/- Porting note : it appears the simp lemma is not getting generated but the linter
+picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] eta_hom_left_down_down eta_inv_left_down_down
/-- A morphism between source objects `S ⟶ S'`
contravariantly induces a functor between structured arrows,
-`structured_arrow S' T ⥤ structured_arrow S T`.
+`StructuredArrow S' T ⥤ StructuredArrow S T`.
Ideally this would be described as a 2-functor from `D`
(promoted to a 2-category with equations as 2-morphisms)
@@ -212,15 +211,13 @@ theorem map_comp {f : S ⟶ S'} {f' : S' ⟶ S''} {h : StructuredArrow S'' T} :
simp
#align category_theory.structured_arrow.map_comp CategoryTheory.StructuredArrow.map_comp
-instance proj_reflects_iso : ReflectsIsomorphisms (proj S T) where
+instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
reflects {Y Z} f t :=
- ⟨⟨StructuredArrow.homMk (inv ((proj S T).map f))
- (by rw [Functor.map_inv, IsIso.comp_inv_eq] ; simp), by
- --split <-- fails!?
- refine ⟨?_,?_⟩ -- works
- · apply CommaMorphism.ext <;> dsimp at t ⊢ ; simp
- · apply CommaMorphism.ext <;> dsimp at t ⊢ ; simp ⟩⟩
-#align category_theory.structured_arrow.proj_reflects_iso CategoryTheory.StructuredArrow.proj_reflects_iso
+ ⟨⟨StructuredArrow.homMk
+ (inv ((proj S T).map f))
+ (by rw [Functor.map_inv, IsIso.comp_inv_eq]; simp),
+ by constructor <;> apply CommaMorphism.ext <;> dsimp at t ⊢ <;> simp⟩⟩
+#align category_theory.structured_arrow.proj_reflects_iso CategoryTheory.StructuredArrow.proj_reflectsIsomorphisms
open CategoryTheory.Limits
@@ -228,11 +225,7 @@ open CategoryTheory.Limits
/-- The identity structured arrow is initial. -/
def mkIdInitial [Full T] [Faithful T] : IsInitial (mk (𝟙 (T.obj Y))) where
- desc c :=
- homMk (T.preimage c.pt.hom)
- (by
- dsimp
- simp)
+ desc c := homMk (T.preimage c.pt.hom) (by simp)
fac := fun _ ⟨a⟩ => by cases a
uniq c m _ := by
apply CommaMorphism.ext
@@ -265,8 +258,7 @@ def post (S : C) (F : B ⥤ C) (G : C ⥤ D) : StructuredArrow S F ⥤ Structure
instance small_proj_preimage_of_locallySmall {𝒢 : Set C} [Small.{v₁} 𝒢] [LocallySmall.{v₁} D] :
Small.{v₁} ((proj S T).obj ⁻¹' 𝒢) := by
- suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S ⟶ T.obj G => mk f.2
- by
+ suffices (proj S T).obj ⁻¹' 𝒢 = Set.range fun f : ΣG : 𝒢, S ⟶ T.obj G => mk f.2 by
rw [this]
infer_instance
exact Set.ext fun X => ⟨fun h => ⟨⟨⟨_, h⟩, X.hom⟩, (eq_mk _).symm⟩, by aesop_cat⟩
@@ -343,8 +335,8 @@ def homMk {f f' : CostructuredArrow S T} (g : f.left ⟶ f'.left) (w : S.map g
w := by simpa [eqToHom_map] using w
#align category_theory.costructured_arrow.hom_mk CategoryTheory.CostructuredArrow.homMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
-picks up on it. Either way simp can prove this -/
+/- Porting note : it appears the simp lemma is not getting generated but the linter
+picks up on it. Either way simp can prove this -/
attribute [-simp, nolint simpNF] homMk_right_down_down
/-- To construct an isomorphism of costructured arrows,
@@ -357,8 +349,8 @@ def isoMk {f f' : CostructuredArrow S T} (g : f.left ≅ f'.left) (w : S.map g.h
Comma.isoMk g (eqToIso (by ext)) (by simpa [eqToHom_map] using w)
#align category_theory.costructured_arrow.iso_mk CategoryTheory.CostructuredArrow.isoMk
-/- Porting note : it appears the simp lemma is not getting generated but the linter
-picks up on it. Either way simp solves these. -/
+/- Porting note : it appears the simp lemma is not getting generated but the linter
+picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] isoMk_hom_right_down_down isoMk_inv_right_down_down
theorem ext {A B : CostructuredArrow S T} (f g : A ⟶ B) (h : f.left = g.left) : f = g :=
@@ -391,7 +383,7 @@ instance epi_homMk {A B : CostructuredArrow S T} (f : A.left ⟶ B.left) (w) [h
(proj S T).epi_of_epi_map h
#align category_theory.costructured_arrow.epi_hom_mk CategoryTheory.CostructuredArrow.epi_homMk
-/-- Eta rule for costructured arrows. Prefer `costructured_arrow.eta`, as equality of objects tends
+/-- Eta rule for costructured arrows. Prefer `CostructuredArrow.eta`, as equality of objects tends
to cause problems. -/
theorem eq_mk (f : CostructuredArrow S T) : f = mk f.hom := by
cases f
@@ -404,13 +396,13 @@ def eta (f : CostructuredArrow S T) : f ≅ mk f.hom :=
isoMk (Iso.refl _) (by aesop_cat)
#align category_theory.costructured_arrow.eta CategoryTheory.CostructuredArrow.eta
-/- Porting note : it appears the simp lemma is not getting generated but the linter
-picks up on it. Either way simp solves these. -/
+/- Porting note : it appears the simp lemma is not getting generated but the linter
+picks up on it. Either way simp solves these. -/
attribute [-simp, nolint simpNF] eta_hom_right_down_down eta_inv_right_down_down
/-- A morphism between target objects `T ⟶ T'`
covariantly induces a functor between costructured arrows,
-`costructured_arrow S T ⥤ costructured_arrow S T'`.
+`CostructuredArrow S T ⥤ CostructuredArrow S T'`.
Ideally this would be described as a 2-functor from `D`
(promoted to a 2-category with equations as 2-morphisms)
@@ -439,14 +431,13 @@ theorem map_comp {f : T ⟶ T'} {f' : T' ⟶ T''} {h : CostructuredArrow S T} :
simp
#align category_theory.costructured_arrow.map_comp CategoryTheory.CostructuredArrow.map_comp
-instance proj_reflects_iso : ReflectsIsomorphisms (proj S T) where
+instance proj_reflectsIsomorphisms : ReflectsIsomorphisms (proj S T) where
reflects {Y Z} f t :=
- ⟨⟨CostructuredArrow.homMk (inv ((proj S T).map f))
- (by rw [Functor.map_inv, IsIso.inv_comp_eq] ; simp), by
- refine ⟨?_,?_⟩
- · apply Comma.hom_ext <;> dsimp at t ⊢ ; simp
- · apply Comma.hom_ext <;> dsimp at t ⊢ ; simp ⟩⟩
-#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflects_iso
+ ⟨⟨CostructuredArrow.homMk
+ (inv ((proj S T).map f))
+ (by rw [Functor.map_inv, IsIso.inv_comp_eq]; simp),
+ by constructor <;> apply Comma.hom_ext <;> dsimp at t ⊢ <;> simp⟩⟩
+#align category_theory.costructured_arrow.proj_reflects_iso CategoryTheory.CostructuredArrow.proj_reflectsIsomorphisms
open CategoryTheory.Limits
@@ -454,11 +445,7 @@ open CategoryTheory.Limits
/-- The identity costructured arrow is terminal. -/
def mkIdTerminal [Full S] [Faithful S] : IsTerminal (mk (𝟙 (S.obj Y))) where
- lift c :=
- homMk (S.preimage c.pt.hom)
- (by
- dsimp
- simp)
+ lift c := homMk (S.preimage c.pt.hom) (by simp)
fac := fun _ ⟨a⟩ => by cases a
uniq := by
rintro c m -
@@ -624,4 +611,3 @@ def costructuredArrowOpEquivalence (F : C ⥤ D) (d : D) :
#align category_theory.costructured_arrow_op_equivalence CategoryTheory.costructuredArrowOpEquivalence
end CategoryTheory
-
Co-authored-by: adamtopaz <github@adamtopaz.com>
All dependencies are ported!