Documentation

GroupoidModel.ForMathlib

This file contains declarations missing from mathlib, to be upstreamed.

@[simp]
theorem CategoryTheory.Limits.IsTerminal.comp_from_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (t : IsTerminal Z) {X Y : C} (f : X Y) {Z✝ : C} (h : Z Z✝) :
@[simp]
theorem CategoryTheory.Limits.IsInitial.to_comp_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X : C} (t : IsInitial X) {Y Z : C} (f : Y Z) {Z✝ : C} (h : Z Z✝) :
theorem CategoryTheory.Limits.PullbackCone.IsLimit.comp_lift {C : Type u_1} [Category.{u_2, u_1} C] {X Y Z W' W : C} {f : X Z} {g : Y Z} {t : PullbackCone f g} (σ : W' W) (ht : IsLimit t) (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) :
theorem CategoryTheory.Limits.PullbackCone.IsLimit.comp_lift_assoc {C : Type u_1} [Category.{u_2, u_1} C] {X Y Z W' W : C} {f : X Z} {g : Y Z} {t : PullbackCone f g} (σ : W' W) (ht : IsLimit t) (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) {Z✝ : C} (h✝ : t.pt Z✝) :
@[simp]
theorem Part.assert_dom {α : Type u_1} (P : Prop) (x : PPart α) :
(assert P x).Dom ∃ (h : P), (x h).Dom
theorem CategoryTheory.Cat.eqToHom_hom_aux {C1 C2 : Cat} (x y : C1) (eq : C1 = C2) :
(x y) = ((eqToHom eq).obj x (eqToHom eq).obj y)

This is the proof of equality used in the eqToHom in Cat.eqToHom_hom

theorem CategoryTheory.Cat.eqToHom_hom {C1 C2 : Cat} {x y : C1} (f : x y) (eq : C1 = C2) :
(eqToHom eq).map f = cast f

This is the turns the hom part of eqToHom functors into a cast

theorem CategoryTheory.Cat.eqToHom_obj {C1 C2 : Cat} (x : C1) (eq : C1 = C2) :
(eqToHom eq).obj x = cast x

This turns the object part of eqToHom functors into casts

@[reducible, inline]
Equations
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem CategoryTheory.prod.eqToHom_fst (C : Type u_1) [Category.{u_3, u_1} C] (D : Type u_2) [Category.{u_4, u_2} D] (x y : C × D) (h : x = y) :
      (eqToHom h).1 = eqToHom
      @[simp]
      theorem CategoryTheory.prod.eqToHom_snd (C : Type u_1) [Category.{u_4, u_1} C] (D : Type u_2) [Category.{u_3, u_2} D] (x y : C × D) (h : x = y) :
      (eqToHom h).2 = eqToHom
      theorem CategoryTheory.Grothendieck.cast_eq {Γ : Type u_1} [Category.{u_2, u_1} Γ] {F G : Functor Γ Cat} (h : F = G) (p : Grothendieck F) :
      cast p = { base := p.base, fiber := cast p.fiber }
      theorem CategoryTheory.Grothendieck.obj_hext {Γ : Type u_1} [Category.{u_2, u_1} Γ] {A : Functor Γ Cat} {x y : Grothendieck A} (hbase : x.base = y.base) (hfiber : x.fiber y.fiber) :
      x = y
      theorem CategoryTheory.Grothendieck.obj_hext' {Γ : Type u_1} [Category.{u_2, u_1} Γ] {A A' : Functor Γ Cat} (h : A = A') {x : Grothendieck A} {y : Grothendieck A'} (hbase : x.base y.base) (hfiber : x.fiber y.fiber) :
      x y
      theorem CategoryTheory.Grothendieck.hext' {Γ : Type u_1} [Category.{u_2, u_1} Γ] {A A' : Functor Γ Cat} (h : A = A') {X Y : Grothendieck A} {X' Y' : Grothendieck A'} (f : X.Hom Y) (g : X'.Hom Y') (hX : X X') (hY : Y Y') (w_base : f.base g.base) (w_fiber : f.fiber g.fiber) :
      f g
      theorem CategoryTheory.Grothendieck.eqToHom_base {Γ : Type u_1} [Category.{u_3, u_1} Γ] {A : Functor Γ Cat} {x y : Grothendieck A} (eq : x = y) :

      This proves that base of an eqToHom morphism in the category Grothendieck A is an eqToHom morphism

      theorem CategoryTheory.Grothendieck.eqToHom_fiber_aux {Γ : Type u} [Category.{v, u} Γ] {A : Functor Γ Cat} {g1 g2 : Grothendieck A} (eq : g1 = g2) :
      (A.map (eqToHom eq).base).obj g1.fiber = g2.fiber

      This is the proof of equality used in the eqToHom in Grothendieck.eqToHom_fiber

      theorem CategoryTheory.Grothendieck.eqToHom_fiber {Γ : Type u} [Category.{v, u} Γ] {A : Functor Γ Cat} {g1 g2 : Grothendieck A} (eq : g1 = g2) :

      This proves that fiber of an eqToHom morphism in the category Grothendieck A is an eqToHom morphism

      theorem CategoryTheory.Grothendieck.obj_ext_cast {Γ : Type u_1} [Category.{u_2, u_1} Γ] {A : Functor Γ Cat} {x y : Grothendieck A} (hbase : x.base = y.base) (hfiber : cast x.fiber = y.fiber) :
      x = y
      theorem CategoryTheory.Grothendieck.map_eqToHom_base_pf {Γ : Type u_1} [Category.{u_2, u_1} Γ] {A : Functor Γ Cat} {G1 G2 : Grothendieck A} (eq : G1 = G2) :
      A.obj G1.base = A.obj G2.base
      theorem CategoryTheory.Grothendieck.map_eqToHom_base {Γ : Type u_1} [Category.{u_2, u_1} Γ] {A : Functor Γ Cat} {G1 G2 : Grothendieck A} (eq : G1 = G2) :
      A.map (eqToHom eq).base = eqToHom
      theorem CategoryTheory.Grothendieck.map_forget {Γ : Type u_1} [Category.{u_2, u_1} Γ] {F G : Functor Γ Cat} (α : F G) :
      (map α).comp (forget G) = forget F
      def CategoryTheory.Grothendieck.mkIso {C : Type u_2} [Category.{u_3, u_2} C] {G : Functor C Cat} {X Y : Grothendieck G} (s : X.base Y.base) (t : (G.map s.hom).obj X.fiber Y.fiber) :
      X Y

      A morphism in the Grothendieck construction is an isomorphism if

      • the morphism in the base is an isomorphism; and
      • the fiber morphism is an isomorphism.
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem CategoryTheory.Grothendieck.Functor.hext {Γ : Type u_1} [Category.{u_4, u_1} Γ] {A : Functor Γ Cat} {C : Type u_2} [Category.{u_3, u_2} C] (F G : Functor C (Grothendieck A)) (hbase : F.comp (forget A) = G.comp (forget A)) (hfiber_obj : ∀ (x : C), (F.obj x).fiber (G.obj x).fiber) (hfiber_map : ∀ {x y : C} (f : x y), (F.map f).fiber (G.map f).fiber) :
        F = G
        theorem CategoryTheory.Grothendieck.hext_iff {Γ : Type u_1} [Category.{u_3, u_1} Γ] {A : Functor Γ Cat} (x y : Grothendieck A) (f g : x y) :
        f.base = g.base f.fiber g.fiber f = g
        @[simp]
        theorem CategoryTheory.Grothendieck.preNatIso_hom_app_base {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (F : Functor C Cat) {G H : Functor D C} (α : G H) (x : Grothendieck (G.comp F)) :
        ((preNatIso F α).hom.app x).base = α.hom.app x.base
        @[simp]
        theorem CategoryTheory.Grothendieck.preNatIso_hom_app_fiber {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (F : Functor C Cat) {G H : Functor D C} (α : G H) (x : Grothendieck (G.comp F)) :
        ((preNatIso F α).hom.app x).fiber = CategoryStruct.id ((F.map ((preNatIso F α).hom.app x).base).obj ((pre F G).obj x).fiber)
        theorem CategoryTheory.IsPullback.of_iso_isPullback {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) {Q : C} (i : Q P) :
        @[simp]
        theorem CategoryTheory.AsSmall.up_map_down_map {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :
        down.map (up.map f) = f
        @[simp]
        theorem CategoryTheory.AsSmall.down_map_up_map {C : Type u₁} [Category.{v₁, u₁} C] {X Y : AsSmall C} (f : X Y) :
        up.map (down.map f) = f
        theorem CategoryTheory.AsSmall.comp_up_inj {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F G : Functor C D} (h : F.comp up = G.comp up) :
        F = G
        Equations
        • One or more equations did not get rendered due to their size.
        @[reducible, inline]
        abbrev CategoryTheory.Grpd.homOf {C D : Type u} [Groupoid C] [Groupoid D] (F : Functor C D) :
        of C of D
        Equations
        Instances For
          theorem CategoryTheory.Grpd.homOf_comp {A B C : Type u} [Groupoid A] [Groupoid B] [Groupoid C] (F : Functor A B) (G : Functor B C) :
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[reducible, inline]

            The chosen terminal object in D.

            Equations
            Instances For

              The chosen terminal object in D is terminal.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Product cones in D are defined using chosen products in C

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  The chosen product cone in D is a limit.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem CategoryTheory.Cat.map_id_obj {Γ : Type u₂} [Category.{v₂, u₂} Γ] {A : Functor Γ Cat} {x : Γ} {a : (A.obj x)} :
                        theorem CategoryTheory.Cat.map_id_map {Γ : Type u₂} [Category.{v₂, u₂} Γ] {A : Functor Γ Cat} {x : Γ} {a b : (A.obj x)} {f : a b} :
                        theorem CategoryTheory.Grothendieck.ιNatTrans_comp_app {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {X Y Z : C} {f : X Y} {g : Y Z} {a : (F.obj X)} :
                        @[simp]
                        theorem CategoryTheory.Grothendieck.ι_pre {Γ : Type u₂} [Category.{v₂, u₂} Γ] {Δ : Type u₃} [Category.{v₃, u₃} Δ] (σ : Functor Δ Γ) (A : Functor Γ Cat) (x : Δ) :
                        (ι (σ.comp A) x).comp (pre A σ) = ι A (σ.obj x)
                        theorem CategoryTheory.Grothendieck.preNatIso_congr {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (F : Functor C Cat) {G H : Functor D C} {α β : G H} (h : α = β) :
                        @[simp]
                        theorem CategoryTheory.Grothendieck.preNatIso_eqToIso {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (F : Functor C Cat) {G H : Functor D C} {h : G = H} :
                        theorem CategoryTheory.Grothendieck.preNatIso_comp {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (F : Functor C Cat) {G1 G2 G3 : Functor D C} (α : G1 G2) (β : G2 G3) :
                        theorem CategoryTheory.Grothendieck.asFunctorFrom_hom_app {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_2, u_1} E] (K : Functor (Grothendieck F) E) {c c' : C} (f : c c') (p : (F.obj c)) :
                        def CategoryTheory.Grothendieck.functorFrom_comp_fib {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_3, u_1} E] (fib : (c : C) → Functor (↑(F.obj c)) E) {D : Type u_2} [Category.{u_4, u_2} D] (G : Functor E D) (c : C) :
                        Functor (↑(F.obj c)) D
                        Equations
                        Instances For
                          def CategoryTheory.Grothendieck.functorFrom_comp_hom {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_3, u_1} E] (fib : (c : C) → Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c Functor.comp (F.map f) (fib c')) {D : Type u_2} [Category.{u_4, u_2} D] (G : Functor E D) {c c' : C} (f : c c') :
                          Equations
                          Instances For
                            theorem CategoryTheory.Grothendieck.functorFrom_comp_hom_id {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_4, u_1} E] (fib : (c : C) → Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryStruct.id c) = eqToHom ) {D : Type u_2} [Category.{u_3, u_2} D] (G : Functor E D) (c : C) :
                            functorFrom_comp_hom fib (fun {c c' : C} => hom) G (CategoryStruct.id c) = eqToHom
                            theorem CategoryTheory.Grothendieck.functorFrom_comp_hom_comp {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_4, u_1} E] (fib : (c : C) → Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c Functor.comp (F.map f) (fib c')) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryStruct.comp f g) = CategoryStruct.comp (hom f) (CategoryStruct.comp (Functor.whiskerLeft (F.map f) (hom g)) (eqToHom ))) {D : Type u_2} [Category.{u_3, u_2} D] (G : Functor E D) (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃) :
                            functorFrom_comp_hom fib (fun {c c' : C} => hom) G (CategoryStruct.comp f g) = CategoryStruct.comp (functorFrom_comp_hom fib (fun {c c' : C} => hom) G f) (CategoryStruct.comp (Functor.whiskerLeft (F.map f) (functorFrom_comp_hom fib (fun {c c' : C} => hom) G g)) (eqToHom ))
                            theorem CategoryTheory.Grothendieck.functorFrom_comp {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_4, u_1} E] (fib : (c : C) → Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryStruct.id c) = eqToHom ) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryStruct.comp f g) = CategoryStruct.comp (hom f) (CategoryStruct.comp (Functor.whiskerLeft (F.map f) (hom g)) (eqToHom ))) {D : Type u_2} [Category.{u_3, u_2} D] (G : Functor E D) :
                            (functorFrom fib (fun {c c' : C} => hom) hom_id hom_comp).comp G = functorFrom (functorFrom_comp_fib fib G) (fun {c c' : C} => functorFrom_comp_hom fib (fun {c c' : C} => hom) G)
                            theorem CategoryTheory.Grothendieck.functorFrom_eq_of {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_3, u_1} E] (fib : (c : C) → Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryStruct.id c) = eqToHom ) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryStruct.comp f g) = CategoryStruct.comp (hom f) (CategoryStruct.comp (Functor.whiskerLeft (F.map f) (hom g)) (eqToHom ))) (fib' : (c : C) → Functor (↑(F.obj c)) E) (hom' : {c c' : C} → (f : c c') → fib' c Functor.comp (F.map f) (fib' c')) (hom_id' : ∀ (c : C), hom' (CategoryStruct.id c) = eqToHom ) (hom_comp' : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom' (CategoryStruct.comp f g) = CategoryStruct.comp (hom' f) (CategoryStruct.comp (Functor.whiskerLeft (F.map f) (hom' g)) (eqToHom ))) (ef : fib = fib') (hhom : ∀ {c c' : C} (f : c c'), CategoryStruct.comp (hom f) (eqToHom ) = CategoryStruct.comp (eqToHom ) (hom' f)) :
                            functorFrom fib (fun {c c' : C} => hom) hom_id hom_comp = functorFrom fib' (fun {c c' : C} => hom') hom_id' hom_comp'
                            theorem CategoryTheory.Grothendieck.functorFrom_hext {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {E : Type u_1} [Category.{u_3, u_1} E] {K K' : Functor (Grothendieck F) E} (hfib : asFunctorFrom_fib K = asFunctorFrom_fib K') (hhom : ∀ {c c' : C} (f : c c'), asFunctorFrom_hom K f asFunctorFrom_hom K' f) :
                            K = K'
                            theorem CategoryTheory.Grothendieck.hext {C : Type u} [Category.{v, u} C] {F : Functor C Cat} {X Y : Grothendieck F} (f g : X.Hom Y) (w_base : f.base = g.base) (w_fiber : f.fiber g.fiber) :
                            f = g
                            theorem CategoryTheory.Grothendieck.functorTo_map_id_aux {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (x : D) :
                            ((A.comp F).map (CategoryStruct.id x)).obj (fibObj x) = fibObj x
                            theorem CategoryTheory.Grothendieck.functorTo_map_comp_aux {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) {x y z : D} (f : x y) (g : y z) :
                            ((A.comp F).map (CategoryStruct.comp f g)).obj (fibObj x) = (F.map (A.map g)).obj (((A.comp F).map f).obj (fibObj x))
                            def CategoryTheory.Grothendieck.functorTo {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g))) :

                            To define a functor into Grothendieck F we can make use of an existing functor into the base.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              theorem CategoryTheory.Grothendieck.functorTo_obj_base {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g))) (x : D) :
                              ((functorTo A fibObj (fun {x y : D} => fibMap) map_id ).obj x).base = A.obj x
                              @[simp]
                              theorem CategoryTheory.Grothendieck.functorTo_obj_fiber {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g))) (x : D) :
                              ((functorTo A fibObj (fun {x y : D} => fibMap) map_id ).obj x).fiber = fibObj x
                              @[simp]
                              theorem CategoryTheory.Grothendieck.functorTo_map_base {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g))) {x y : D} (f : x y) :
                              ((functorTo A fibObj (fun {x y : D} => fibMap) map_id ).map f).base = A.map f
                              @[simp]
                              theorem CategoryTheory.Grothendieck.functorTo_map_fiber {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g))) {x y : D} (f : x y) :
                              ((functorTo A fibObj (fun {x y : D} => fibMap) map_id ).map f).fiber = fibMap f
                              @[simp]
                              theorem CategoryTheory.Grothendieck.functorTo_forget {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} {A : Functor D C} {fibObj : (x : D) → ((A.comp F).obj x)} {fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y} {map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom } {map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g))} :
                              (functorTo A fibObj fibMap map_id ).comp (forget F) = A
                              def CategoryTheory.Grothendieck.functorTo' {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g)) :

                              To define a functor into Grothendieck F we can make use of an existing functor into the base.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem CategoryTheory.Grothendieck.functorTo'_obj_base {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g)) (x : D) :
                                ((functorTo' A fibObj (fun {x y : D} => fibMap) map_id ).obj x).base = A.obj x
                                @[simp]
                                theorem CategoryTheory.Grothendieck.functorTo'_obj_fiber {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g)) (x : D) :
                                ((functorTo' A fibObj (fun {x y : D} => fibMap) map_id ).obj x).fiber = fibObj x
                                @[simp]
                                theorem CategoryTheory.Grothendieck.functorTo'_map_base {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g)) {x y : D} (f : x y) :
                                ((functorTo' A fibObj (fun {x y : D} => fibMap) map_id ).map f).base = A.map f
                                @[simp]
                                theorem CategoryTheory.Grothendieck.functorTo'_map_fiber {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} (A : Functor D C) (fibObj : (x : D) → ((A.comp F).obj x)) (fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y) (map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom ) (map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g)) {x y : D} (f : x y) :
                                ((functorTo' A fibObj (fun {x y : D} => fibMap) map_id ).map f).fiber = fibMap f
                                @[simp]
                                theorem CategoryTheory.Grothendieck.functorTo'_forget {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {F : Functor C Cat} {A : Functor D C} {fibObj : (x : D) → ((A.comp F).obj x)} {fibMap : {x y : D} → (f : x y) → ((A.comp F).map f).obj (fibObj x) fibObj y} {map_id : ∀ (x : D), fibMap (CategoryStruct.id x) = eqToHom } {map_comp : ∀ {x y z : D} (f : x y) (g : y z), fibMap (CategoryStruct.comp f g) CategoryStruct.comp ((F.map (A.map g)).map (fibMap f)) (fibMap g)} :
                                (functorTo' A fibObj fibMap map_id ).comp (forget F) = A
                                @[simp]
                                theorem CategoryTheory.isoWhiskerLeft_eqToIso {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {E : Type u₃} [Category.{v₃, u₃} E] (F : Functor C D) {G H : Functor D E} (η : G = H) :
                                def Equiv.psigmaCongrProp {α₁ : Sort u_1} {α₂ : Sort u_2} {β₁ : α₁Prop} {β₂ : α₂Prop} (f : α₁ α₂) (F : ∀ (a : α₁), β₁ a β₂ (f a)) :
                                PSigma β₁ PSigma β₂
                                Equations
                                Instances For
                                  @[simp]
                                  theorem Equiv.sigmaCongr_apply_fst {α₁ : Type u_1} {α₂ : Type u_2} {β₁ : α₁Type u_3} {β₂ : α₂Type u_4} (f : α₁ α₂) (F : (a : α₁) → β₁ a β₂ (f a)) (x : Sigma β₁) :
                                  ((f.sigmaCongr F) x).fst = f x.fst
                                  @[simp]
                                  def Equiv.sigmaCongr_apply_snd {α₁ : Type u_1} {α₂ : Type u_2} {β₁ : α₁Type u_3} {β₂ : α₂Type u_4} (f : α₁ α₂) (F : (a : α₁) → β₁ a β₂ (f a)) (x : Sigma β₁) :
                                  ((f.sigmaCongr F) x).snd = (F x.fst) x.snd
                                  Equations
                                  • =
                                  Instances For
                                    noncomputable def CategoryTheory.Limits.pullbackHomEquiv {𝒞 : Type u} [Category.{v, u} 𝒞] {A B C Γ : 𝒞} {f : A C} {g : B C} [HasPullback f g] :
                                    (Γ pullback f g) (fst : Γ A) × (snd : Γ B) ×' CategoryStruct.comp fst f = CategoryStruct.comp snd g
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.IsPullback.lift_fst_snd {C : Type u_1} [Category.{u_2, u_1} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (pb : IsPullback fst snd f g) (w : CategoryStruct.comp fst f = CategoryStruct.comp snd g) :
                                      pb.lift fst snd w = CategoryStruct.id P

                                      A presheaf F on a small category C is isomorphic to the hom-presheaf Hom(y(•),F).

                                      Equations
                                      Instances For
                                        def CategoryTheory.yonedaIsoMap {C : Type u₁} [SmallCategory C] {F G : Functor Cᵒᵖ (Type u₁)} (app : {X : C} → (yoneda.obj X F) → (yoneda.obj X G)) (naturality : ∀ {X Y : C} (f : X Y) (α : yoneda.obj Y F), app (CategoryStruct.comp (yoneda.map f) α) = CategoryStruct.comp (yoneda.map f) (app α)) :
                                        Equations
                                        Instances For
                                          def CategoryTheory.NatTrans.yonedaMk {C : Type u₁} [SmallCategory C] {F G : Functor Cᵒᵖ (Type u₁)} (app : {X : C} → (yoneda.obj X F) → (yoneda.obj X G)) (naturality : ∀ {X Y : C} (f : X Y) (α : yoneda.obj Y F), app (CategoryStruct.comp (yoneda.map f) α) = CategoryStruct.comp (yoneda.map f) (app α)) :
                                          F G

                                          Build natural transformations between presheaves on a small category by defining their action when precomposing by a morphism with representable domain

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            theorem CategoryTheory.NatTrans.yonedaMk_app {C : Type u₁} [SmallCategory C] {F G : Functor Cᵒᵖ (Type u₁)} (app : {X : C} → (yoneda.obj X F) → (yoneda.obj X G)) (naturality : ∀ {X Y : C} (f : X Y) (α : yoneda.obj Y F), app (CategoryStruct.comp (yoneda.map f) α) = CategoryStruct.comp (yoneda.map f) (app α)) {X : C} (α : yoneda.obj X F) :
                                            CategoryStruct.comp α (yonedaMk (fun {X : C} => app) ) = app α