File: Mathlib/CategoryTheory/Bicategory/Functor/Prelax.lean

full_name: CategoryTheory.PrelaxFunctorStruct
code: /-- A `PrelaxFunctorStruct` between bicategories consists of functions between objects,
1-morphisms, and 2-morphisms. This structure will be extended to define `PrelaxFunctor`.
-/
structure PrelaxFunctorStruct extends Prefunctor B C where
  /-- The action of a lax prefunctor on 2-morphisms. -/
  map₂ {a b : B} {f g : a ⟶ b} : (f ⟶ g) → (map f ⟶ map g)
goal: Type (max (max (max (max (max u₁ u₂) v₁) v₂) w₁) w₂)

full_name: CategoryTheory.PrelaxFunctorStruct.map₂
code: /-- A `PrelaxFunctorStruct` between bicategories consists of functions between objects,
1-morphisms, and 2-morphisms. This structure will be extended to define `PrelaxFunctor`.
-/
structure PrelaxFunctorStruct extends Prefunctor B C where
  /-- The action of a lax prefunctor on 2-morphisms. -/
  map₂ {a b : B} {f g : a ⟶ b} : (f ⟶ g) → (map f ⟶ map g)
goal: (f ⟶ g) → (self.map f ⟶ self.map g)

full_name: CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors_toPrefunctor_map
code: /-- Construct a lax prefunctor from a map on objects, and prefunctors between the corresponding
hom types. -/
@[simps]
def mkOfHomPrefunctors (F : B → C) (F' : (a : B) → (b : B) → Prefunctor (a ⟶ b) (F a ⟶ F b)) :
    PrelaxFunctorStruct B C 
goal: ∀ (a_1 : a ⟶ b), (CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors F F').map a_1 = (F' a b).obj a_1

full_name: CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors_map₂
code: /-- Construct a lax prefunctor from a map on objects, and prefunctors between the corresponding
hom types. -/
@[simps]
def mkOfHomPrefunctors (F : B → C) (F' : (a : B) → (b : B) → Prefunctor (a ⟶ b) (F a ⟶ F b)) :
    PrelaxFunctorStruct B C 
goal: ∀ {f g : a ⟶ b} (a_1 : f ⟶ g), (CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors F F').map₂ a_1 = (F' a b).map a_1

full_name: CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors_toPrefunctor_obj
code: /-- Construct a lax prefunctor from a map on objects, and prefunctors between the corresponding
hom types. -/
@[simps]
def mkOfHomPrefunctors (F : B → C) (F' : (a : B) → (b : B) → Prefunctor (a ⟶ b) (F a ⟶ F b)) :
    PrelaxFunctorStruct B C 
goal: ∀ (a : B), (CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors F F').obj a = F a

full_name: CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors
code: /-- Construct a lax prefunctor from a map on objects, and prefunctors between the corresponding
hom types. -/
@[simps]
def mkOfHomPrefunctors (F : B → C) (F' : (a : B) → (b : B) → Prefunctor (a ⟶ b) (F a ⟶ F b)) :
    PrelaxFunctorStruct B C 
goal: CategoryTheory.PrelaxFunctorStruct B C

full_name: CategoryTheory.PrelaxFunctorStruct.id_toPrefunctor
code: /-- The identity lax prefunctor. -/
@[simps]
def id (B : Type u₁) [Quiver.{v₁ + 1} B] [∀ a b : B, Quiver.{w₁ + 1} (a ⟶ b)] :
    PrelaxFunctorStruct B B 
goal: (CategoryTheory.PrelaxFunctorStruct.id B).toPrefunctor = 𝟭q B

full_name: CategoryTheory.PrelaxFunctorStruct.id
code: /-- The identity lax prefunctor. -/
@[simps]
def id (B : Type u₁) [Quiver.{v₁ + 1} B] [∀ a b : B, Quiver.{w₁ + 1} (a ⟶ b)] :
    PrelaxFunctorStruct B B 
goal: CategoryTheory.PrelaxFunctorStruct B B

full_name: CategoryTheory.PrelaxFunctorStruct.id_map₂
code: /-- The identity lax prefunctor. -/
@[simps]
def id (B : Type u₁) [Quiver.{v₁ + 1} B] [∀ a b : B, Quiver.{w₁ + 1} (a ⟶ b)] :
    PrelaxFunctorStruct B B 
goal: ∀ {a b : B} {f g : a ⟶ b} (η : f ⟶ g), (CategoryTheory.PrelaxFunctorStruct.id B).map₂ η = η

full_name: CategoryTheory.PrelaxFunctorStruct.instInhabited
code: instance : Inhabited (PrelaxFunctorStruct B B) 
goal: Inhabited (CategoryTheory.PrelaxFunctorStruct B B)

full_name: CategoryTheory.PrelaxFunctorStruct.comp_map₂
code: /-- Composition of lax prefunctors. -/
@[simps]
def comp (F : PrelaxFunctorStruct B C) (G : PrelaxFunctorStruct C D) : PrelaxFunctorStruct B D 
goal: ∀ {a b : B} {f g : a ⟶ b} (η : f ⟶ g), (F.comp G).map₂ η = G.map₂ (F.map₂ η)

full_name: CategoryTheory.PrelaxFunctorStruct.comp_toPrefunctor
code: /-- Composition of lax prefunctors. -/
@[simps]
def comp (F : PrelaxFunctorStruct B C) (G : PrelaxFunctorStruct C D) : PrelaxFunctorStruct B D 
goal: (F.comp G).toPrefunctor = F.toPrefunctor ⋙q G.toPrefunctor

full_name: CategoryTheory.PrelaxFunctorStruct.comp
code: /-- Composition of lax prefunctors. -/
@[simps]
def comp (F : PrelaxFunctorStruct B C) (G : PrelaxFunctorStruct C D) : PrelaxFunctorStruct B D 
goal: CategoryTheory.PrelaxFunctorStruct B D

full_name: CategoryTheory.PrelaxFunctor.map₂_id
code: /-- A prelax functor between bicategories is a lax prefunctor such that `map₂` is a functor.
This structure will be extended to define `LaxFunctor` and `OplaxFunctor`.
-/
structure PrelaxFunctor (B : Type u₁) [Bicategory.{w₁, v₁} B] (C : Type u₂) [Bicategory.{w₂, v₂} C]
    extends PrelaxFunctorStruct B C where
  /-- Prelax functors preserves identity 2-morphisms. -/
  map₂_id : ∀ {a b : B} (f : a ⟶ b), map₂ (𝟙 f) = 𝟙 (map f) := by aesop -- TODO: why not aesop_cat?
  /-- Prelax functors preserves compositions of 2-morphisms. -/
  map₂_comp : ∀ {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h),
      map₂ (η ≫ θ) = map₂ η ≫ map₂ θ := by aesop_cat
goal: self.map₂ (CategoryTheory.CategoryStruct.id f) = CategoryTheory.CategoryStruct.id (self.map f)

full_name: CategoryTheory.PrelaxFunctor.map₂_comp
code: /-- A prelax functor between bicategories is a lax prefunctor such that `map₂` is a functor.
This structure will be extended to define `LaxFunctor` and `OplaxFunctor`.
-/
structure PrelaxFunctor (B : Type u₁) [Bicategory.{w₁, v₁} B] (C : Type u₂) [Bicategory.{w₂, v₂} C]
    extends PrelaxFunctorStruct B C where
  /-- Prelax functors preserves identity 2-morphisms. -/
  map₂_id : ∀ {a b : B} (f : a ⟶ b), map₂ (𝟙 f) = 𝟙 (map f) := by aesop -- TODO: why not aesop_cat?
  /-- Prelax functors preserves compositions of 2-morphisms. -/
  map₂_comp : ∀ {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h),
      map₂ (η ≫ θ) = map₂ η ≫ map₂ θ := by aesop_cat
goal: self.map₂ (CategoryTheory.CategoryStruct.comp η θ) = CategoryTheory.CategoryStruct.comp (self.map₂ η) (self.map₂ θ)

full_name: CategoryTheory.PrelaxFunctor
code: /-- A prelax functor between bicategories is a lax prefunctor such that `map₂` is a functor.
This structure will be extended to define `LaxFunctor` and `OplaxFunctor`.
-/
structure PrelaxFunctor (B : Type u₁) [Bicategory.{w₁, v₁} B] (C : Type u₂) [Bicategory.{w₂, v₂} C]
    extends PrelaxFunctorStruct B C where
  /-- Prelax functors preserves identity 2-morphisms. -/
  map₂_id : ∀ {a b : B} (f : a ⟶ b), map₂ (𝟙 f) = 𝟙 (map f) := by aesop -- TODO: why not aesop_cat?
  /-- Prelax functors preserves compositions of 2-morphisms. -/
  map₂_comp : ∀ {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h),
      map₂ (η ≫ θ) = map₂ η ≫ map₂ θ := by aesop_cat
goal: Type (max (max (max (max (max u₁ u₂) v₁) v₂) w₁) w₂)

full_name: CategoryTheory.PrelaxFunctor.mkOfHomFunctors_toPrelaxFunctorStruct
code: /-- Construct a prelax functor from a map on objects, and functors between the corresponding
hom types. -/
@[simps]
def mkOfHomFunctors (F : B → C) (F' : (a : B) → (b : B) → (a ⟶ b) ⥤ (F a ⟶ F b)) :
    PrelaxFunctor B C 
goal: (CategoryTheory.PrelaxFunctor.mkOfHomFunctors F F').toPrelaxFunctorStruct =
  CategoryTheory.PrelaxFunctorStruct.mkOfHomPrefunctors F fun a b => (F' a b).toPrefunctor

full_name: CategoryTheory.PrelaxFunctor.mkOfHomFunctors
code: /-- Construct a prelax functor from a map on objects, and functors between the corresponding
hom types. -/
@[simps]
def mkOfHomFunctors (F : B → C) (F' : (a : B) → (b : B) → (a ⟶ b) ⥤ (F a ⟶ F b)) :
    PrelaxFunctor B C 
goal: CategoryTheory.PrelaxFunctor B C

full_name: CategoryTheory.PrelaxFunctor.id_toPrelaxFunctorStruct
code: /-- The identity prelax functor. -/
@[simps]
def id (B : Type u₁) [Bicategory.{w₁, v₁} B] : PrelaxFunctor B B 
goal: (CategoryTheory.PrelaxFunctor.id B).toPrelaxFunctorStruct = CategoryTheory.PrelaxFunctorStruct.id B

full_name: CategoryTheory.PrelaxFunctor.id
code: /-- The identity prelax functor. -/
@[simps]
def id (B : Type u₁) [Bicategory.{w₁, v₁} B] : PrelaxFunctor B B 
goal: CategoryTheory.PrelaxFunctor B B

full_name: CategoryTheory.PrelaxFunctor.instInhabitedPrelaxFunctorStruct
code: instance : Inhabited (PrelaxFunctorStruct B B) 
goal: Inhabited (CategoryTheory.PrelaxFunctorStruct B B)

full_name: CategoryTheory.PrelaxFunctor.comp
code: /-- Composition of prelax functors. -/
@[simps]
def comp (G : PrelaxFunctor C D) : PrelaxFunctor B D 
goal: CategoryTheory.PrelaxFunctor B D

full_name: CategoryTheory.PrelaxFunctor.comp_toPrelaxFunctorStruct
code: /-- Composition of prelax functors. -/
@[simps]
def comp (G : PrelaxFunctor C D) : PrelaxFunctor B D 
goal: (F.comp G).toPrelaxFunctorStruct = F.comp G.toPrelaxFunctorStruct

full_name: CategoryTheory.PrelaxFunctor.mapFunctor
code: /-- Function between 1-morphisms as a functor. -/
@[simps]
def mapFunctor (a b : B) : (a ⟶ b) ⥤ (F.obj a ⟶ F.obj b) 
goal: CategoryTheory.Functor (a ⟶ b) (F.obj a ⟶ F.obj b)

full_name: CategoryTheory.PrelaxFunctor.mapFunctor_map
code: /-- Function between 1-morphisms as a functor. -/
@[simps]
def mapFunctor (a b : B) : (a ⟶ b) ⥤ (F.obj a ⟶ F.obj b) 
goal: ∀ {X Y : a ⟶ b} (η : X ⟶ Y), (F.mapFunctor a b).map η = F.map₂ η

full_name: CategoryTheory.PrelaxFunctor.mapFunctor_obj
code: /-- Function between 1-morphisms as a functor. -/
@[simps]
def mapFunctor (a b : B) : (a ⟶ b) ⥤ (F.obj a ⟶ F.obj b) 
goal: (F.mapFunctor a b).obj f = F.map f

full_name: CategoryTheory.PrelaxFunctor.mkOfHomFunctors_mapFunctor
code: @[simp]
lemma mkOfHomFunctors_mapFunctor (F : B → C) (F' : (a : B) → (b : B) → (a ⟶ b) ⥤ (F a ⟶ F b))
    (a b : B) : (mkOfHomFunctors F F').mapFunctor a b = F' a b 
goal: (CategoryTheory.PrelaxFunctor.mkOfHomFunctors F F').mapFunctor a b = F' a b

full_name: CategoryTheory.PrelaxFunctor.map₂Iso
code: /-- A prelaxfunctor `F` sends 2-isomorphisms `η : f ≅ f` to 2-isomorphisms `F.map f ≅ F.map g`. -/
@[simps!]
abbrev map₂Iso {f g : a ⟶ b} (η : f ≅ g) : F.map f ≅ F.map g 
goal: F.map f ≅ F.map g

full_name: CategoryTheory.PrelaxFunctor.map₂Iso_inv
code: /-- A prelaxfunctor `F` sends 2-isomorphisms `η : f ≅ f` to 2-isomorphisms `F.map f ≅ F.map g`. -/
@[simps!]
abbrev map₂Iso {f g : a ⟶ b} (η : f ≅ g) : F.map f ≅ F.map g 
goal: (F.map₂Iso η).inv = F.map₂ η.inv

full_name: CategoryTheory.PrelaxFunctor.map₂Iso_hom
code: /-- A prelaxfunctor `F` sends 2-isomorphisms `η : f ≅ f` to 2-isomorphisms `F.map f ≅ F.map g`. -/
@[simps!]
abbrev map₂Iso {f g : a ⟶ b} (η : f ≅ g) : F.map f ≅ F.map g 
goal: (F.map₂Iso η).hom = F.map₂ η.hom

full_name: CategoryTheory.PrelaxFunctor.map₂_isIso
code: instance map₂_isIso {f g : a ⟶ b} (η : f ⟶ g) [IsIso η] : IsIso (F.map₂ η) 
goal: CategoryTheory.IsIso (F.map₂ η)

full_name: CategoryTheory.PrelaxFunctor.map₂_inv
code: @[simp]
lemma map₂_inv {f g : a ⟶ b} (η : f ⟶ g) [IsIso η] : F.map₂ (inv η) = inv (F.map₂ η) 
goal: F.map₂ (CategoryTheory.inv η) = CategoryTheory.inv (F.map₂ η)

full_name: CategoryTheory.PrelaxFunctor.map₂_hom_inv
code: @[reassoc, simp]
lemma map₂_hom_inv {f g : a ⟶ b} (η : f ≅ g) :
    F.map₂ η.hom ≫ F.map₂ η.inv = 𝟙 (F.map f) 
goal: CategoryTheory.CategoryStruct.comp (F.map₂ η.hom) (F.map₂ η.inv) = CategoryTheory.CategoryStruct.id (F.map f)

full_name: CategoryTheory.PrelaxFunctor.map₂_hom_inv_isIso
code: @[reassoc]
lemma map₂_hom_inv_isIso {f g : a ⟶ b} (η : f ⟶ g) [IsIso η] :
    F.map₂ η ≫ F.map₂ (inv η) = 𝟙 (F.map f) 
goal: CategoryTheory.CategoryStruct.comp (F.map₂ η) (F.map₂ (CategoryTheory.inv η)) =
  CategoryTheory.CategoryStruct.id (F.map f)

full_name: CategoryTheory.PrelaxFunctor.map₂_inv_hom
code: @[reassoc, simp]
lemma map₂_inv_hom {f g : a ⟶ b} (η : f ≅ g) :
    F.map₂ η.inv ≫ F.map₂ η.hom = 𝟙 (F.map g) 
goal: CategoryTheory.CategoryStruct.comp (F.map₂ η.inv) (F.map₂ η.hom) = CategoryTheory.CategoryStruct.id (F.map g)

full_name: CategoryTheory.PrelaxFunctor.map₂_inv_hom_isIso
code: @[reassoc]
lemma map₂_inv_hom_isIso {f g : a ⟶ b} (η : f ⟶ g) [IsIso η] :
    F.map₂ (inv η) ≫ F.map₂ η = 𝟙 (F.map g) 
goal: CategoryTheory.CategoryStruct.comp (F.map₂ (CategoryTheory.inv η)) (F.map₂ η) =
  CategoryTheory.CategoryStruct.id (F.map g)