Dependent sums of functors #
def
CategoryTheory.Functor.Sigma
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{F : Functor π (Type w)}
(G : Functor F.Elements (Functor π (Type v)))
:
Given functors F : π β₯€ Type v and G : β«F β₯€ π β₯€ Type v,
produce the functor (C, D) β¦ (a : F(C)) Γ G((C, a))(D).
This is a dependent sum that varies naturally
in a parameter C of the first component,
and a parameter D of the second component.
We use this to package and compose natural equivalences where one side (or both) is a dependent sum, e.g.
H(C) βΆ I(D)
=========================
(a : F(C)) Γ (G(C, a)(D))
is a natural isomorphism of bifunctors πα΅α΅ β₯€ π β₯€ Type v
given by (C, D) β¦ H(C) βΆ I(D) and G.Sigma.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
CategoryTheory.Functor.Sigma_map_app_fst
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{F : Functor π (Type w)}
(G : Functor F.Elements (Functor π (Type v)))
{Xβ Yβ : π}
(f : Xβ βΆ Yβ)
(Y : π)
(aβ :
{ obj := fun (x : π Γ π) =>
match x with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D,
map :=
fun {X Y : π Γ π} (x : X βΆ Y)
(x_1 :
match X with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D) =>
match x with
| (f, g) =>
match x_1 with
| β¨a, bβ© => β¨F.map f a, (G.map β¨f, β―β©).app Y.2 ((G.obj β¨X.1, aβ©).map g b)β©,
map_id := β―, map_comp := β― }.obj
(Xβ, Y))
:
@[simp]
theorem
CategoryTheory.Functor.Sigma_obj_map_snd
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{F : Functor π (Type w)}
(G : Functor F.Elements (Functor π (Type v)))
(X : π)
{Xβ Yβ : π}
(g : Xβ βΆ Yβ)
(aβ :
{ obj := fun (x : π Γ π) =>
match x with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D,
map :=
fun {X Y : π Γ π} (x : X βΆ Y)
(x_1 :
match X with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D) =>
match x with
| (f, g) =>
match x_1 with
| β¨a, bβ© => β¨F.map f a, (G.map β¨f, β―β©).app Y.2 ((G.obj β¨X.1, aβ©).map g b)β©,
map_id := β―, map_comp := β― }.obj
(X, Xβ))
:
@[simp]
theorem
CategoryTheory.Functor.Sigma_map_app_snd
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{F : Functor π (Type w)}
(G : Functor F.Elements (Functor π (Type v)))
{Xβ Yβ : π}
(f : Xβ βΆ Yβ)
(Y : π)
(aβ :
{ obj := fun (x : π Γ π) =>
match x with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D,
map :=
fun {X Y : π Γ π} (x : X βΆ Y)
(x_1 :
match X with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D) =>
match x with
| (f, g) =>
match x_1 with
| β¨a, bβ© => β¨F.map f a, (G.map β¨f, β―β©).app Y.2 ((G.obj β¨X.1, aβ©).map g b)β©,
map_id := β―, map_comp := β― }.obj
(Xβ, Y))
:
@[simp]
@[simp]
theorem
CategoryTheory.Functor.Sigma_obj_map_fst
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{F : Functor π (Type w)}
(G : Functor F.Elements (Functor π (Type v)))
(X : π)
{Xβ Yβ : π}
(g : Xβ βΆ Yβ)
(aβ :
{ obj := fun (x : π Γ π) =>
match x with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D,
map :=
fun {X Y : π Γ π} (x : X βΆ Y)
(x_1 :
match X with
| (C, D) => (a : F.obj C) Γ (G.obj β¨C, aβ©).obj D) =>
match x with
| (f, g) =>
match x_1 with
| β¨a, bβ© => β¨F.map f a, (G.map β¨f, β―β©).app Y.2 ((G.obj β¨X.1, aβ©).map g b)β©,
map_id := β―, map_comp := β― }.obj
(X, Xβ))
:
def
CategoryTheory.Functor.Sigma.isoCongrLeft
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{Fβ Fβ : Functor π (Type w)}
(G : Functor Fβ.Elements (Functor π (Type v)))
(i : Fβ β
Fβ)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
CategoryTheory.Functor.Sigma.isoCongrRight
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{F : Functor π (Type w)}
{Gβ Gβ : Functor F.Elements (Functor π (Type v))}
(i : Gβ β
Gβ)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
CategoryTheory.Functor.compβ_Sigma
{π : Type t}
[Category.{u, t} π]
{π : Type r}
[Category.{s, r} π]
{π' : Type u_1}
[Category.{u_2, u_1} π']
{F : Functor π (Type w)}
(G : Functor π' π)
(P : Functor F.Elements (Functor π (Type v)))
:
Over categories #
@[simp]
theorem
CategoryTheory.Over.equiv_Sigma_apply_snd
{π : Type u}
[Category.{v, u} π]
{A : π}
(X : π)
(U : Over A)
(g : X βΆ U.left)
:
@[simp]
theorem
CategoryTheory.Over.equiv_Sigma_symm_apply
{π : Type u}
[Category.{v, u} π]
{A : π}
(X : π)
(U : Over A)
(p : (b : X βΆ A) Γ (mk b βΆ U))
:
@[simp]
theorem
CategoryTheory.Over.equiv_Sigma_apply_fst
{π : Type u}
[Category.{v, u} π]
{A : π}
(X : π)
(U : Over A)
(g : X βΆ U.left)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_inverse_map_coe
{π : Type u}
[Category.{v, u} π]
(A : π)
{Xβ Yβ : (Over A)α΅α΅}
(f : Xβ βΆ Yβ)
:
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_functor_map
{π : Type u}
[Category.{v, u} π]
(A : π)
{Xβ Yβ : (yoneda.obj A).Elements}
(f : Xβ βΆ Yβ)
:
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_unitIso
{π : Type u}
[Category.{v, u} π]
(A : π)
:
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_inverse_obj_fst
{π : Type u}
[Category.{v, u} π]
(A : π)
(U : (Over A)α΅α΅)
:
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_functor_obj
{π : Type u}
[Category.{v, u} π]
(A : π)
(x : (yoneda.obj A).Elements)
:
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_counitIso
{π : Type u}
[Category.{v, u} π]
(A : π)
:
@[simp]
theorem
CategoryTheory.Over.equivalence_Elements_inverse_obj_snd
{π : Type u}
[Category.{v, u} π]
(A : π)
(U : (Over A)α΅α΅)
:
For X β π and f β π/A, π(X, Over.forget f) β
Ξ£(g: X βΆ A), π/A(g, f).
Equations
- CategoryTheory.Over.forget_iso_Sigma A = CategoryTheory.NatIso.ofComponentsβ (fun (X : πα΅α΅) (U : CategoryTheory.Over A) => (CategoryTheory.Over.equiv_Sigma (Opposite.unop X) U).toIso) β― β―