Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Basics.PathGroupoids.Require Import Basics.Tactics.Require Import Types.Sigma.Require Import WildCat.Core.Require Import WildCat.Prod.ClassIsDGraph {A : Type} `{IsGraph A} (D : A -> Type)
:= DHom : forall {ab : A}, (a $-> b) -> D a -> D b -> Type.ClassIsD01Cat {A : Type} `{Is01Cat A} (D : A -> Type) `{!IsDGraph D} :=
{
DId : forall {a : A} (a' : D a), DHom (Id a) a' a';
dcat_comp : forall {abc : A} {g : b $-> c} {f : a $-> b}
{a' : D a} {b' : D b} {c' : D c},
DHom g b' c' -> DHom f a' b' -> DHom (g $o f) a' c';
}.Notation"g '$o'' f" := (dcat_comp g f).Definitiondcat_postcomp {A : Type} {D : A -> Type} `{IsD01Cat A D} {a b c : A}
{g : b $-> c} {a' : D a} {b' : D b} {c' : D c} (g' : DHom g b' c')
: forall (f : a $-> b), DHom f a' b' -> DHom (g $o f) a' c'
:= fun_f' => g' $o' f'.Definitiondcat_precomp {A : Type} {D : A -> Type} `{IsD01Cat A D} {a b c : A}
{f : a $-> b} {a' : D a} {b' : D b} {c' : D c} (f' : DHom f a' b')
: forall (g : b $-> c), DHom g b' c' -> DHom (g $o f) a' c'
:= fun_g' => g' $o' f'.ClassIsD0Gpd {A : Type} `{Is0Gpd A} (D : A -> Type)
`{!IsDGraph D, !IsD01Cat D}
:= dgpd_rev : forall {ab : A} {f : a $== b} {a' : D a} {b' : D b},
DHom f a' b' -> DHom (f^$) b' a'.Notation"p ^$'" := (dgpd_rev p).DefinitionDGpdHom {A : Type} {D : A -> Type} `{IsD0Gpd A D} {a b : A}
(f : a $== b) (a' : D a) (b' : D b)
:= DHom f a' b'.(** Diagrammatic order to match gpd_comp *)Definitiondgpd_comp {A : Type} {D : A -> Type} `{IsD0Gpd A D} {a b c : A}
{f : a $== b} {g : b $== c} {a' : D a} {b' : D b} {c' : D c}
: DGpdHom f a' b' -> DGpdHom g b' c' -> DGpdHom (g $o f) a' c'
:= funf'g' => g' $o' f'.Notation"p '$@'' q" := (dgpd_comp p q).
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D a, b: A p: a = b a': D a b': D b p': transport D p a' = b'
DHom (Hom_path p) a' b'
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D a, b: A p: a = b a': D a b': D b p': transport D p a' = b'
DHom (Hom_path p) a' b'
destruct p, p'; apply DId.Defined.DefinitionDGpdHom_path {A : Type} {D : A -> Type} `{IsD0Gpd A D} {a b : A}
(p : a = b) {a' : D a} {b': D b} (p' : transport D p a' = b')
: DGpdHom (GpdHom_path p) a' b'
:= DHom_path p p'.Instancereflexive_DHom {A} {D : A -> Type} `{IsD01Cat A D} {a : A}
: Reflexive (DHom (Id a))
:= funa' => DId a'.Instancereflexive_DGpdHom {A} {D : A -> Type} `{IsD0Gpd A D} {a : A}
: Reflexive (DGpdHom (Id a))
:= funa' => DId a'.(** A displayed 0-functor [F'] over a 0-functor [F] acts on displayed objects and 1-cells and satisfies no axioms. *)ClassIsD0Functor {A : Type} {B : Type}
{DA : A -> Type} `{IsDGraph A DA} {DB : B -> Type} `{IsDGraph B DB}
(F : A -> B) `{!Is0Functor F} (F' : forall (a : A), DA a -> DB (F a))
:= dfmap : forall {ab : A} {f : a $-> b} {a' : DA a} {b' : DA b},
DHom f a' b' -> DHom (fmap F f) (F' a a') (F' b b').Arguments dfmap {A B DA _ _ DB _ _} F {_} F' {_ _ _ _ _ _} f'.ClassIsD2Graph {A : Type} `{Is2Graph A}
(D : A -> Type) `{!IsDGraph D}
:= isdgraph_hom :: forall {ab} {a'} {b'},
IsDGraph (fun (f:a $-> b) => DHom f a' b').#[global] Typeclasses Transparent IsD2Graph.ClassIsD1Cat {A : Type} `{Is1Cat A}
(D : A -> Type) `{!IsDGraph D, !IsD2Graph D, !IsD01Cat D} :=
{
isd01cat_hom :: forall {ab : A} {a' : D a} {b' : D b},
IsD01Cat (funf => DHom f a' b');
isd0gpd_hom :: forall {ab : A} {a' : D a} {b' : D b},
IsD0Gpd (funf => DHom f a' b');
isd0functor_postcomp :: forall {abc : A} {g : b $-> c} {a' : D a}
{b' : D b} {c' : D c} (g' : DHom g b' c'),
@IsD0Functor _ _ (funf => DHom f a' b')
_ _ (fungf => DHom gf a' c')
_ _ (cat_postcomp a g) _ (dcat_postcomp g');
isd0functor_precomp :: forall {abc : A} {f : a $-> b} {a' : D a}
{b' : D b} {c' : D c} (f' : DHom f a' b'),
@IsD0Functor _ _ (fung => DHom g b' c')
_ _ (fungf => DHom gf a' c')
_ _ (cat_precomp c f) _ (dcat_precomp f');
dcat_assoc : forall {abcd : A} {f : a $-> b} {g : b $-> c} {h : c $-> d}
{a' : D a} {b' : D b} {c' : D c} {d' : D d}
(f' : DHom f a' b') (g' : DHom g b' c') (h' : DHom h c' d'),
DHom (cat_assoc f g h) ((h' $o' g') $o' f')
(h' $o' (g' $o' f'));
dcat_assoc_opp : forall {abcd : A} {f : a $-> b} {g : b $-> c} {h : c $-> d}
{a' : D a} {b' : D b} {c' : D c} {d' : D d}
(f' : DHom f a' b') (g' : DHom g b' c') (h' : DHom h c' d'),
DHom (cat_assoc_opp f g h) (h' $o' (g' $o' f'))
((h' $o' g') $o' f');
dcat_idl : forall {ab : A} {f : a $-> b} {a' : D a} {b' : D b}
(f' : DHom f a' b'), DHom (cat_idl f) (DId b' $o' f') f';
dcat_idr : forall {ab : A} {f : a $-> b} {a' : D a} {b' : D b}
(f' : DHom f a' b'), DHom (cat_idr f) (f' $o' DId a') f';
}.Definitiondcat_postwhisker {A : Type} {D : A -> Type} `{IsD1Cat A D}
{a b c : A} {f g : a $-> b} {h : b $-> c} {p : f $== g}
{a' : D a} {b' : D b} {c' : D c} {f' : DHom f a' b'} {g' : DHom g a' b'}
(h' : DHom h b' c') (p' : DHom p f' g')
: DHom (h $@L p) (h' $o' f') (h' $o' g')
:= dfmap (cat_postcomp a h) (dcat_postcomp h') p'.Notation"h $@L' p" := (dcat_postwhisker h p).Definitiondcat_prewhisker {A : Type} {D : A -> Type} `{IsD1Cat A D}
{a b c : A} {f : a $-> b} {g h : b $-> c} {p : g $== h}
{a' : D a} {b' : D b} {c' : D c} {g' : DHom g b' c'} {h' : DHom h b' c'}
(p' : DHom p g' h') (f' : DHom f a' b')
: DHom (p $@R f) (g' $o' f') (h' $o' f')
:= dfmap (cat_precomp c f) (dcat_precomp f') p'.Notation"p $@R' f" := (dcat_prewhisker p f).Definitiondcat_comp2 {A : Type} {D : A -> Type} `{IsD1Cat A D} {a b c : A}
{f g : a $-> b} {h k : b $-> c} {p : f $== g} {q : h $== k}
{a' : D a} {b' : D b} {c' : D c} {f' : DHom f a' b'} {g' : DHom g a' b'}
{h' : DHom h b' c'} {k' : DHom k b' c'}
(p' : DHom p f' g') (q' : DHom q h' k')
: DHom (p $@@ q) (h' $o' f') (k' $o' g')
:= (k' $@L' p') $o' (q' $@R' f').Notation"q $@@' p" := (dcat_comp2 q p).(** Monomorphisms and epimorphisms. *)DefinitionDMonic {A} {D : A -> Type} `{IsD1Cat A D} {b c : A}
{f : b $-> c} {mon : Monic f} {b' : D b} {c' : D c} (f' : DHom f b' c')
:= forall (a : A) (gh : a $-> b) (p : f $o g $== f $o h) (a' : D a)
(g' : DHom g a' b') (h' : DHom h a' b'),
DGpdHom p (f' $o' g') (f' $o' h') -> DGpdHom (mon a g h p) g' h'.DefinitionDEpic {A} {D : A -> Type} `{IsD1Cat A D} {a b : A}
{f : a $-> b} {epi : Epic f} {a' : D a} {b' : D b} (f' : DHom f a' b')
:= forall (c : A) (gh : b $-> c) (p : g $o f $== h $o f) (c' : D c)
(g' : DHom g b' c') (h' : DHom h b' c'),
DGpdHom p (g' $o' f') (h' $o' f') -> DGpdHom (epi c g h p) g' h'.
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D
IsGraph {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D
IsGraph {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D
{x : _ & D x} -> {x : _ & D x} -> Type
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D a: A a': D a b: A b': D b
Type
exact {f : a $-> b & DHom f a' b'}.Defined.
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D
Is01Cat {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D
Is01Cat {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D
foralla : {x : _ & D x}, a $-> a
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D
forallabc : {x : _ & D x},
(b $-> c) -> (a $-> b) -> a $-> c
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D
foralla : {x : _ & D x}, a $-> a
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D a: A a': D a
(a; a') $-> (a; a')
exact (Id a; DId a').
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D
forallabc : {x : _ & D x},
(b $-> c) -> (a $-> b) -> a $-> c
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph D H1: IsD01Cat D a: A a': D a b: A b': D b c: A c': D c g: b $-> c g': DHom g b' c' f: a $-> b f': DHom f a' b'
(a; a') $-> (c; c')
exact (g $o f; g' $o' f').Defined.
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph D IsD01Cat0: IsD01Cat D H2: IsD0Gpd D
Is0Gpd {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph D IsD01Cat0: IsD01Cat D H2: IsD0Gpd D
Is0Gpd {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph D IsD01Cat0: IsD01Cat D H2: IsD0Gpd D
forallab : {x : _ & D x}, (a $-> b) -> b $-> a
A: Type D: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph D IsD01Cat0: IsD01Cat D H2: IsD0Gpd D a: A a': D a b: A b': D b f: a $-> b f': DHom f a' b'
(b; b') $-> (a; a')
exact (f^$; dgpd_rev f').Defined.
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D
Is0Functor (pr1 : {x : _ & D x} -> A)
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D
Is0Functor (pr1 : {x : _ & D x} -> A)
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D
forallab : {x : _ & D x}, (a $-> b) -> a.1 $-> b.1
A: Type D: A -> Type H: IsGraph A H0: IsDGraph D a: A a': D a b: A b': D b f: a $-> b f': DHom f a' b'
(a; a').1 $-> (b; b').1
exact f.Defined.
A: Type D: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph D H1: IsD2Graph D
Is2Graph {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph D H1: IsD2Graph D
Is2Graph {x : _ & D x}
A: Type D: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph D H1: IsD2Graph D a: A a': D a b: A b': D b
IsGraph ((a; a') $-> (b; b'))
A: Type D: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph D H1: IsD2Graph D a: A a': D a b: A b': D b
A: Type D: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph D H1: IsD2Graph D a: A a': D a b: A b': D b f: a $-> b f': DHom f a' b' g: a $-> b g': DHom g a' b'
Type
exact ({p : f $-> g & DHom p f' g'}).Defined.
A: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA B: Type DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB F: A -> B Is0Functor0: Is0Functor F F': foralla : A, DA a -> DB (F a) IsD0Functor0: IsD0Functor F F'
Is0Functor (functor_sigma F F')
A: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA B: Type DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB F: A -> B Is0Functor0: Is0Functor F F': foralla : A, DA a -> DB (F a) IsD0Functor0: IsD0Functor F F'
Is0Functor (functor_sigma F F')
A: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA B: Type DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB F: A -> B Is0Functor0: Is0Functor F F': foralla : A, DA a -> DB (F a) IsD0Functor0: IsD0Functor F F'
forallab : {x : _ & DA x},
(a $-> b) ->
functor_sigma F F' a $-> functor_sigma F F' b
A: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA B: Type DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB F: A -> B Is0Functor0: Is0Functor F F': foralla : A, DA a -> DB (F a) IsD0Functor0: IsD0Functor F F' a: A a': DA a b: A b': DA b
((a; a') $-> (b; b')) ->
functor_sigma F F' (a; a') $->
functor_sigma F F' (b; b')
A: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA B: Type DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB F: A -> B Is0Functor0: Is0Functor F F': foralla : A, DA a -> DB (F a) IsD0Functor0: IsD0Functor F F' a: A a': DA a b: A b': DA b f: a $-> b f': DHom f a' b'
functor_sigma F F' (a; a') $->
functor_sigma F F' (b; b')
exact (fmap F f; dfmap F F' f').Defined.
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
Is1Cat {x : _ & D x}
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
Is1Cat {x : _ & D x}
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abc : {x : _ & D x}) (g : b $-> c),
Is0Functor (cat_postcomp a g)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abc : {x : _ & D x})
(f : a $-> b), Is0Functor (cat_precomp c f)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abcd : {x : _ & D x})
(f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o g $o f $== h $o (g $o f)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abcd : {x : _ & D x})
(f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o (g $o f) $== h $o g $o f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (ab : {x : _ & D x})
(f : a $-> b), Id b $o f $== f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (ab : {x : _ & D x})
(f : a $-> b), f $o Id a $== f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abc : {x : _ & D x}) (g : b $-> c),
Is0Functor (cat_postcomp a g)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: b $-> c f': DHom f b' c'
Is0Functor (cat_postcomp (a; a') (f; f'))
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: b $-> c f': DHom f b' c'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: b $-> c f': DHom f b' c' g: a $-> b g': DHom g a' b' h: a $-> b h': DHom h a' b' p: g $-> h p': DHom p g' h'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abc : {x : _ & D x}) (f : a $-> b),
Is0Functor (cat_precomp c f)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: a $-> b f': DHom f a' b'
Is0Functor (cat_precomp (c; c') (f; f'))
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: a $-> b f': DHom f a' b'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: a $-> b f': DHom f a' b' g: b $-> c g': DHom g b' c' h: b $-> c h': DHom h b' c' p: g $-> h p': DHom p g' h'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abcd : {x : _ & D x}) (f : a $-> b)
(g : b $-> c) (h : c $-> d),
h $o g $o f $== h $o (g $o f)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c d: A d': D d f: a $-> b f': DHom f a' b' g: b $-> c g': DHom g b' c' h: c $-> d h': DHom h c' d'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abcd : {x : _ & D x}) (f : a $-> b)
(g : b $-> c) (h : c $-> d),
h $o (g $o f) $== h $o g $o f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c d: A d': D d f: a $-> b f': DHom f a' b' g: b $-> c g': DHom g b' c' h: c $-> d h': DHom h c' d'
exact (cat_assoc_opp f g h; dcat_assoc_opp f' g' h').
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (ab : {x : _ & D x}) (f : a $-> b),
Id b $o f $== f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b f: a $-> b f': DHom f a' b'
Id (b; b') $o (f; f') $== (f; f')
exact (cat_idl f; dcat_idl f').
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (ab : {x : _ & D x}) (f : a $-> b),
f $o Id a $== f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b f: a $-> b f': DHom f a' b'
(f; f') $o Id (a; a') $== (f; f')
exact (cat_idr f; dcat_idr f').Defined.
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
Is1Functor (pr1 : {x : _ & D x} -> A)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
Is1Functor (pr1 : {x : _ & D x} -> A)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (ab : {x : _ & D x}) (fg : a $-> b),
f $== g ->
fmap (pr1 : {x : _ & D x} -> A) f $==
fmap (pr1 : {x : _ & D x} -> A) g
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
foralla : {x : _ & D x},
fmap (pr1 : {x : _ & D x} -> A) (Id a) $== Id a.1
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abc : {x : _ & D x})
(f : a $-> b) (g : b $-> c),
fmap (pr1 : {x : _ & D x} -> A) (g $o f) $==
fmap (pr1 : {x : _ & D x} -> A) g $o
fmap (pr1 : {x : _ & D x} -> A) f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (ab : {x : _ & D x}) (fg : a $-> b),
f $== g ->
fmap (pr1 : {x : _ & D x} -> A) f $==
fmap (pr1 : {x : _ & D x} -> A) g
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b f: a $-> b f': DHom f a' b' g: a $-> b g': DHom g a' b' p: f $-> g p': DHom p f' g'
fmap (pr1 : {x : _ & D x} -> A) (f; f') $==
fmap (pr1 : {x : _ & D x} -> A) (g; g')
exact p.
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
foralla : {x : _ & D x},
fmap (pr1 : {x : _ & D x} -> A) (Id a) $== Id a.1
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a
fmap (pr1 : {x : _ & D x} -> A) (Id (a; a')) $==
Id (a; a').1
apply Id.
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D
forall (abc : {x : _ & D x}) (f : a $-> b)
(g : b $-> c),
fmap (pr1 : {x : _ & D x} -> A) (g $o f) $==
fmap (pr1 : {x : _ & D x} -> A) g $o
fmap (pr1 : {x : _ & D x} -> A) f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat D a: A a': D a b: A b': D b c: A c': D c f: a $-> b f': DHom f a' b' g: b $-> c g': DHom g b' c'
fmap (pr1 : {x : _ & D x} -> A) ((g; g') $o (f; f')) $==
fmap (pr1 : {x : _ & D x} -> A) (g; g') $o
fmap (pr1 : {x : _ & D x} -> A) (f; f')
apply Id.Defined.ClassIsD1Cat_Strong {A : Type} `{Is1Cat_Strong A}
(D : A -> Type)
`{!IsDGraph D, !IsD2Graph D, !IsD01Cat D} :=
{
isd01cat_hom_strong :: forall {ab : A} {a' : D a} {b' : D b},
IsD01Cat (funf => DHom f a' b');
isd0gpd_hom_strong :: forall {ab : A} {a' : D a} {b' : D b},
IsD0Gpd (funf => DHom f a' b');
isd0functor_postcomp_strong :: forall {abc : A} {g : b $-> c} {a' : D a}
{b' : D b} {c' : D c} (g' : DHom g b' c'),
@IsD0Functor _ _ (funf => DHom f a' b')
_ _ (fungf => DHom gf a' c')
_ _ (cat_postcomp a g) _ (dcat_postcomp g');
isd0functor_precomp_strong :: forall {abc : A} {f : a $-> b} {a' : D a}
{b' : D b} {c' : D c} (f' : DHom f a' b'),
@IsD0Functor _ _ (fung => DHom g b' c')
_ _ (fungf => DHom gf a' c')
_ _ (cat_precomp c f) _ (dcat_precomp f');
dcat_assoc_strong : forall {abcd : A} {f : a $-> b} {g : b $-> c} {h : c $-> d}
{a' : D a} {b' : D b} {c' : D c} {d' : D d}
(f' : DHom f a' b') (g' : DHom g b' c') (h' : DHom h c' d'),
(transport (funk => DHom k a' d') (cat_assoc_strong f g h)
((h' $o' g') $o' f')) = h' $o' (g' $o' f');
dcat_assoc_opp_strong : forall {abcd : A} {f : a $-> b} {g : b $-> c} {h : c $-> d}
{a' : D a} {b' : D b} {c' : D c} {d' : D d}
(f' : DHom f a' b') (g' : DHom g b' c') (h' : DHom h c' d'),
(transport (funk => DHom k a' d') (cat_assoc_opp_strong f g h)
(h' $o' (g' $o' f'))) = (h' $o' g') $o' f';
dcat_idl_strong : forall {ab : A} {f : a $-> b} {a' : D a} {b' : D b}
(f' : DHom f a' b'),
(transport (funk => DHom k a' b') (cat_idl_strong f)
(DId b' $o' f')) = f';
dcat_idr_strong : forall {ab : A} {f : a $-> b} {a' : D a} {b' : D b}
(f' : DHom f a' b'),
(transport (funk => DHom k a' b') (cat_idr_strong f)
(f' $o' DId a')) = f';
}.(* If in the future we make a [Build_Is1Cat_Strong'] that lets the user omit the second proof of associativity, this shows how it can be recovered from the original proof:Definition dcat_assoc_opp_strong {A : Type} {D : A -> Type} `{IsD1Cat_Strong A D} {a b c d : A} {f : a $-> b} {g : b $-> c} {h : c $-> d} {a' : D a} {b' : D b} {c' : D c} {d' : D d} (f' : DHom f a' b') (g' : DHom g b' c') (h' : DHom h c' d') : (transport (fun k => DHom k a' d') (cat_assoc_opp_strong f g h) (h' $o' (g' $o' f'))) = (h' $o' g') $o' f'.Proof. exact (moveR_transport_V (fun k => DHom k a' d') (cat_assoc_strong f g h) _ _). exact ((dcat_assoc_strong f' g' h')^).Defined.*)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
IsD1Cat D
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
IsD1Cat D
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : D a) (b' : D b) (c' : D c)
(d' : D d) (f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc f g h) (h' $o' g' $o' f')
(h' $o' (g' $o' f'))
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : A) (f : a $-> b)
(g : b $-> c) (h : c $-> d)
(a' : D a) (b' : D b) (c' : D c)
(d' : D d) (f' : DHom f a' b')
(g' : DHom g b' c') (h' : DHom h c' d'),
DHom (cat_assoc_opp f g h)
(h' $o' (g' $o' f'))
(h' $o' g' $o' f')
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : A) (f : a $-> b)
(a' : D a) (b' : D b) (f' : DHom f a' b'),
DHom (cat_idl f) (DId b' $o' f') f'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : A) (f : a $-> b)
(a' : D a) (b' : D b) (f' : DHom f a' b'),
DHom (cat_idr f) (f' $o' DId a') f'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : D a) (b' : D b) (c' : D c)
(d' : D d) (f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc f g h) (h' $o' g' $o' f')
(h' $o' (g' $o' f'))
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D a, b, c, d: A f: a $-> b g: b $-> c h: c $-> d a': D a b': D b c': D c d': D d f': DHom f a' b' g': DHom g b' c' h': DHom h c' d'
DHom (cat_assoc f g h) (h' $o' g' $o' f')
(h' $o' (g' $o' f'))
exact (DHom_path (cat_assoc_strong f g h) (dcat_assoc_strong f' g' h')).
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : D a) (b' : D b) (c' : D c)
(d' : D d) (f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc_opp f g h) (h' $o' (g' $o' f'))
(h' $o' g' $o' f')
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D a, b, c, d: A f: a $-> b g: b $-> c h: c $-> d a': D a b': D b c': D c d': D d f': DHom f a' b' g': DHom g b' c' h': DHom h c' d'
DHom (cat_assoc_opp f g h) (h' $o' (g' $o' f'))
(h' $o' g' $o' f')
exact (DHom_path (cat_assoc_opp_strong f g h) (dcat_assoc_opp_strong f' g' h')).
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : A) (f : a $-> b) (a' : D a) (b' : D b)
(f' : DHom f a' b'),
DHom (cat_idl f) (DId b' $o' f') f'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D a, b: A f: a $-> b a': D a b': D b f': DHom f a' b'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : A) (f : a $-> b) (a' : D a) (b' : D b)
(f' : DHom f a' b'),
DHom (cat_idr f) (f' $o' DId a') f'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D a, b: A f: a $-> b a': D a b': D b f': DHom f a' b'
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
Is1Cat_Strong {x : _ & D x}
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
Is1Cat_Strong {x : _ & D x}
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : {x : _ & D x}) (f : a $-> b)
(g : b $-> c) (h : c $-> d),
h $o g $o f = h $o (g $o f)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : {x : _ & D x})
(f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o (g $o f) = h $o g $o f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : {x : _ & D x})
(f : a $-> b), Id b $o f = f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : {x : _ & D x})
(f : a $-> b), f $o Id a = f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : {x : _ & D x}) (f : a $-> b)
(g : b $-> c) (h : c $-> d),
h $o g $o f = h $o (g $o f)
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D aa', bb', cc', dd': {x : _ & D x} f: aa'.1 $-> bb'.1 f': DHom f aa'.2 bb'.2 g: bb'.1 $-> cc'.1 g': DHom g bb'.2 cc'.2 h: cc'.1 $-> dd'.1 h': DHom h cc'.2 dd'.2
exact (path_sigma' _
(cat_assoc_strong f g h) (dcat_assoc_strong f' g' h')).
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (abcd : {x : _ & D x}) (f : a $-> b)
(g : b $-> c) (h : c $-> d),
h $o (g $o f) = h $o g $o f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D aa', bb', cc', dd': {x : _ & D x} f: aa'.1 $-> bb'.1 f': DHom f aa'.2 bb'.2 g: bb'.1 $-> cc'.1 g': DHom g bb'.2 cc'.2 h: cc'.1 $-> dd'.1 h': DHom h cc'.2 dd'.2
exact (path_sigma' _
(cat_assoc_opp_strong f g h) (dcat_assoc_opp_strong f' g' h')).
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : {x : _ & D x}) (f : a $-> b),
Id b $o f = f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D aa', bb': {x : _ & D x} f: aa'.1 $-> bb'.1 f': DHom f aa'.2 bb'.2
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D
forall (ab : {x : _ & D x}) (f : a $-> b),
f $o Id a = f
A: Type D: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat_Strong A IsDGraph0: IsDGraph D IsD2Graph0: IsD2Graph D IsD01Cat0: IsD01Cat D H0: IsD1Cat_Strong D aa', bb': {x : _ & D x} f: aa'.1 $-> bb'.1 f': DHom f aa'.2 bb'.2
(f; f') $o Id aa' = (f; f')
exact (path_sigma' _ (cat_idr_strong f) (dcat_idr_strong f')).Defined.ClassIsD1Functor
{AB : Type} {DA : A -> Type} `{IsD1Cat A DA} {DB : B -> Type} `{IsD1Cat B DB}
(F : A -> B) `{!Is0Functor F, !Is1Functor F}
(F' : forall (a : A), DA a -> DB (F a)) `{!IsD0Functor F F'} :=
{
dfmap2 : forall {ab : A} {fg : a $-> b} {p : f $== g} {a' : DA a}
{b' : DA b} (f' : DHom f a' b') (g' : DHom g a' b'),
DHom p f' g' -> DHom (fmap2 F p) (dfmap F F' f') (dfmap F F' g');
dfmap_id : forall {a : A} (a' : DA a),
DHom (fmap_id F a) (dfmap F F' (DId a')) (DId (F' a a'));
dfmap_comp : forall {abc : A} {f : a $-> b} {g : b $-> c} {a' : DA a}
{b' : DA b} {c' : DA c} (f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp F f g) (dfmap F F' (g' $o' f'))
(dfmap F F' g' $o' dfmap F F' f');
}.Arguments dfmap2 {A B DA _ _ _ _ _ _ _ _ DB _ _ _ _ _ _ _ _}
F {_ _} F' {_ _ a b f g p a' b' f' g'} p'.Arguments dfmap_id {A B DA _ _ _ _ _ _ _ _ DB _ _ _ _ _ _ _ _}
F {_ _} F' {_ _ a} a'.Arguments dfmap_comp {A B DA _ _ _ _ _ _ _ _ DB _ _ _ _ _ _ _ _}
F {_ _} F' {_ _ a b c f g a' b' c'} f' g'.
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
Is1Functor (functor_sigma F F')
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
Is1Functor (functor_sigma F F')
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
forall (ab : {x : _ & DA x}) (fg : a $-> b),
f $== g ->
fmap (functor_sigma F F') f $==
fmap (functor_sigma F F') g
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
foralla : {x : _ & DA x},
fmap (functor_sigma F F') (Id a) $==
Id (functor_sigma F F' a)
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
forall (abc : {x : _ & DA x})
(f : a $-> b) (g : b $-> c),
fmap (functor_sigma F F') (g $o f) $==
fmap (functor_sigma F F') g $o
fmap (functor_sigma F F') f
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
forall (ab : {x : _ & DA x}) (fg : a $-> b),
f $== g ->
fmap (functor_sigma F F') f $==
fmap (functor_sigma F F') g
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F' a: A a': DA a b: A b': DA b f: a $-> b f': DHom f a' b' g: a $-> b g': DHom g a' b' p: f $-> g p': DHom p f' g'
fmap (functor_sigma F F') (f; f') $==
fmap (functor_sigma F F') (g; g')
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F' a: A a': DA a b: A b': DA b f: a $-> b f': DHom f a' b' g: a $-> b g': DHom g a' b' p: f $-> g p': DHom p f' g'
DHom (fmap2 F p) (fmap (functor_sigma F F') (f; f')).2
(fmap (functor_sigma F F') (g; g')).2
exact (dfmap2 F F' p').
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
foralla : {x : _ & DA x},
fmap (functor_sigma F F') (Id a) $==
Id (functor_sigma F F' a)
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F' a: A a': DA a
fmap (functor_sigma F F') (Id (a; a')) $==
Id (functor_sigma F F' (a; a'))
exact (fmap_id F a; dfmap_id F F' a').
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F'
forall (abc : {x : _ & DA x}) (f : a $-> b)
(g : b $-> c),
fmap (functor_sigma F F') (g $o f) $==
fmap (functor_sigma F F') g $o
fmap (functor_sigma F F') f
A, B: Type DA: A -> Type DB: B -> Type F: A -> B F': foralla : A, DA a -> DB (F a) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F IsD0Functor0: IsD0Functor F F' H3: IsD1Functor F F' a: A a': DA a b: A b': DA b c: A c': DA c f: a $-> b f': DHom f a' b' g: b $-> c g': DHom g b' c'
fmap (functor_sigma F F') ((g; g') $o (f; f')) $==
fmap (functor_sigma F F') (g; g') $o
fmap (functor_sigma F F') (f; f')
exact (fmap_comp F f g; dfmap_comp F F' f' g').Defined.SectionIdentityFunctor.
A: Type H: IsGraph A H0: Is01Cat A DA: A -> Type IsDGraph0: IsDGraph DA IsD01Cat0: IsD01Cat DA
IsD0Functor idmap (funa : A => idmap)
A: Type H: IsGraph A H0: Is01Cat A DA: A -> Type IsDGraph0: IsDGraph DA IsD01Cat0: IsD01Cat DA
IsD0Functor idmap (funa : A => idmap)
A: Type H: IsGraph A H0: Is01Cat A DA: A -> Type IsDGraph0: IsDGraph DA IsD01Cat0: IsD01Cat DA a, b: A f: a $-> b a': DA a b': DA b f': DHom f a' b'
DHom (fmap idmap f) a' b'
assumption.Defined.
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
IsD1Functor idmap (funa : A => idmap)
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
IsD1Functor idmap (funa : A => idmap)
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
forall (ab : A) (fg : a $-> b) (p : f $== g)
(a' : DA a) (b' : DA b) (f' : DHom f a' b')
(g' : DHom g a' b'),
DHom p f' g' ->
DHom (fmap2 idmap p)
(dfmap idmap (funa0 : A => idmap) f')
(dfmap idmap (funa0 : A => idmap) g')
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
forall (a : A) (a' : DA a),
DHom (fmap_id idmap a)
(dfmap idmap (funa0 : A => idmap) (DId a'))
(DId a')
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
forall (abc : A) (f : a $-> b)
(g : b $-> c) (a' : DA a)
(b' : DA b) (c' : DA c)
(f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp idmap f g)
(dfmap idmap (funa0 : A => idmap) (g' $o' f'))
(dfmap idmap (funa0 : A => idmap) g' $o'
dfmap idmap (funa0 : A => idmap) f')
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
forall (ab : A) (fg : a $-> b) (p : f $== g)
(a' : DA a) (b' : DA b) (f' : DHom f a' b')
(g' : DHom g a' b'),
DHom p f' g' ->
DHom (fmap2 idmap p)
(dfmap idmap (funa0 : A => idmap) f')
(dfmap idmap (funa0 : A => idmap) g')
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA a, b: A f, g: a $-> b p: f $== g a': DA a b': DA b f': DHom f a' b' g': DHom g a' b' p': DHom p f' g'
DHom (fmap2 idmap p)
(dfmap idmap (funa : A => idmap) f')
(dfmap idmap (funa : A => idmap) g')
assumption.
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
forall (a : A) (a' : DA a),
DHom (fmap_id idmap a)
(dfmap idmap (funa0 : A => idmap) (DId a'))
(DId a')
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA a: A a': DA a
DHom (fmap_id idmap a)
(dfmap idmap (funa : A => idmap) (DId a')) (DId a')
apply DId.
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA
forall (abc : A) (f : a $-> b) (g : b $-> c)
(a' : DA a) (b' : DA b) (c' : DA c)
(f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp idmap f g)
(dfmap idmap (funa0 : A => idmap) (g' $o' f'))
(dfmap idmap (funa0 : A => idmap) g' $o'
dfmap idmap (funa0 : A => idmap) f')
A: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA a, b, c: A f: a $-> b g: b $-> c a': DA a b': DA b c': DA c f': DHom f a' b' g': DHom g b' c'
DHom (fmap_comp idmap f g)
(dfmap idmap (funa : A => idmap) (g' $o' f'))
(dfmap idmap (funa : A => idmap) g' $o'
dfmap idmap (funa : A => idmap) f')
A: Type H: IsGraph A B: Type H0: IsGraph B H1: Is01Cat B DA: A -> Type IsDGraph0: IsDGraph DA DB: B -> Type IsDGraph1: IsDGraph DB IsD01Cat0: IsD01Cat DB x: B x': DB x
IsD0Functor (fun_ : A => x)
(fun (a : A) (_ : DA a) => x')
A: Type H: IsGraph A B: Type H0: IsGraph B H1: Is01Cat B DA: A -> Type IsDGraph0: IsDGraph DA DB: B -> Type IsDGraph1: IsDGraph DB IsD01Cat0: IsD01Cat DB x: B x': DB x
IsD0Functor (fun_ : A => x)
(fun (a : A) (_ : DA a) => x')
A: Type H: IsGraph A B: Type H0: IsGraph B H1: Is01Cat B DA: A -> Type IsDGraph0: IsDGraph DA DB: B -> Type IsDGraph1: IsDGraph DB IsD01Cat0: IsD01Cat DB x: B x': DB x a, b: A f: a $-> b a': DA a b': DA b f': DHom f a' b'
DHom (fmap (fun_ : A => x) f) x' x'
apply DId.Defined.
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
IsD1Functor (fun_ : B => x)
(fun (a : B) (_ : DB a) => x')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
IsD1Functor (fun_ : B => x)
(fun (a : B) (_ : DB a) => x')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
forall (ab : B) (fg : a $-> b) (p : f $== g)
(a' : DB a) (b' : DB b) (f' : DHom f a' b')
(g' : DHom g a' b'),
DHom p f' g' ->
DHom (fmap2 (fun_ : B => x) p)
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') f')
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') g')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
forall (a : B) (a' : DB a),
DHom (fmap_id (fun_ : B => x) a)
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x')
(DId a'))
(DId ((fun (a0 : B) (_ : DB a0) => x') a a'))
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
forall (abc : B) (f : a $-> b)
(g : b $-> c) (a' : DB a)
(b' : DB b) (c' : DB c)
(f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp (fun_ : B => x) f g)
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x')
(g' $o' f'))
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') g' $o'
dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
forall (ab : B) (fg : a $-> b) (p : f $== g)
(a' : DB a) (b' : DB b) (f' : DHom f a' b')
(g' : DHom g a' b'),
DHom p f' g' ->
DHom (fmap2 (fun_ : B => x) p)
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') f')
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') g')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x a, b: B f, g: a $-> b p: f $== g a': DB a b': DB b f': DHom f a' b' g': DHom g a' b' p': DHom p f' g'
DHom (fmap2 (fun_ : B => x) p)
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') f')
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') g')
apply DId.
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
forall (a : B) (a' : DB a),
DHom (fmap_id (fun_ : B => x) a)
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') (DId a'))
(DId ((fun (a0 : B) (_ : DB a0) => x') a a'))
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x a: B a': DB a
DHom (fmap_id (fun_ : B => x) a)
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') (DId a'))
(DId ((fun (a : B) (_ : DB a) => x') a a'))
apply DId.
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x
forall (abc : B) (f : a $-> b) (g : b $-> c)
(a' : DB a) (b' : DB b) (c' : DB c)
(f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp (fun_ : B => x) f g)
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') (g' $o' f'))
(dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') g' $o'
dfmap (fun_ : B => x)
(fun (a0 : B) (_ : DB a0) => x') f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x a, b, c: B f: a $-> b g: b $-> c a': DB a b': DB b c': DB c f': DHom f a' b' g': DHom g b' c'
DHom (fmap_comp (fun_ : B => x) f g)
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') (g' $o' f'))
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') g' $o'
dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB x: B x': DB x a, b, c: B f: a $-> b g: b $-> c a': DB a b': DB b c': DB c f': DHom f a' b' g': DHom g b' c'
DHom (cat_idl (Id x))
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') g' $o'
dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') f')
(dfmap (fun_ : B => x)
(fun (a : B) (_ : DB a) => x') (g' $o' f'))
apply dcat_idl.Defined.EndConstantFunctor.SectionCompositeFunctor.Context {ABC : Type} {DA : A -> Type} {DB : B -> Type} {DC : C -> Type}
(F : A -> B) (G : B -> C)
(F' : forall (a : A), DA a -> DB (F a))
(G' : forall (b : B), DB b -> DC (G b)).
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) H: IsGraph A H0: IsDGraph DA H1: IsGraph B H2: IsDGraph DB H3: IsGraph C H4: IsDGraph DC Is0Functor0: Is0Functor F Is0Functor1: Is0Functor G IsD0Functor0: IsD0Functor F F' IsD0Functor1: IsD0Functor G G'
IsD0Functor (G o F)
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) H: IsGraph A H0: IsDGraph DA H1: IsGraph B H2: IsDGraph DB H3: IsGraph C H4: IsDGraph DC Is0Functor0: Is0Functor F Is0Functor1: Is0Functor G IsD0Functor0: IsD0Functor F F' IsD0Functor1: IsD0Functor G G'
IsD0Functor (G o F)
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) H: IsGraph A H0: IsDGraph DA H1: IsGraph B H2: IsDGraph DB H3: IsGraph C H4: IsDGraph DC Is0Functor0: Is0Functor F Is0Functor1: Is0Functor G IsD0Functor0: IsD0Functor F F' IsD0Functor1: IsD0Functor G G' a, b: A f: a $-> b a': DA a b': DA b f': DHom f a' b'
DHom (fmap (G o F) f) (G' (F a) (F' a a'))
(G' (F b) (F' b b'))
exact (dfmap G G' (dfmap F F' f')).Defined.
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
IsD1Functor (G o F)
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
IsD1Functor (G o F)
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
forall (ab : A) (fg : a $-> b) (p : f $== g)
(a' : DA a) (b' : DA b) (f' : DHom f a' b')
(g' : DHom g a' b'),
DHom p f' g' ->
DHom (fmap2 (G o F) p)
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) f')
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) g')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
forall (a : A) (a' : DA a),
DHom (fmap_id (G o F) a)
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0)
(DId a'))
(DId
((fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) a a'))
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
forall (abc : A) (f : a $-> b)
(g : b $-> c) (a' : DA a)
(b' : DA b) (c' : DA c)
(f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp (G o F) f g)
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0)
(g' $o' f'))
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) g' $o'
dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) f')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
forall (ab : A) (fg : a $-> b) (p : f $== g)
(a' : DA a) (b' : DA b) (f' : DHom f a' b')
(g' : DHom g a' b'),
DHom p f' g' ->
DHom (fmap2 (G o F) p)
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) f')
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) g')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G' a, b: A f, g: a $-> b p: f $== g a': DA a b': DA b f': DHom f a' b' g': DHom g a' b' p': DHom p f' g'
DHom (fmap2 (G o F) p)
(dfmap (funx : A => G (F x))
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
f')
(dfmap (funx : A => G (F x))
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
g')
exact (dfmap2 _ _ (dfmap2 F F' p')).
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
forall (a : A) (a' : DA a),
DHom (fmap_id (G o F) a)
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) (DId a'))
(DId
((fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) a a'))
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G' a: A a': DA a
DHom (fmap_id (G o F) a)
(dfmap (funx : A => G (F x))
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
(DId a'))
(DId
((fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
a a'))
exact (dfmap2 _ _ (dfmap_id F F' a') $@' dfmap_id G G' _).
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G'
forall (abc : A) (f : a $-> b) (g : b $-> c)
(a' : DA a) (b' : DA b) (c' : DA c)
(f' : DHom f a' b') (g' : DHom g b' c'),
DHom (fmap_comp (G o F) f g)
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) (g' $o' f'))
(dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) g' $o'
dfmap (funx : A => G (F x))
(fun (a0 : A) (a'0 : DA a0) =>
(G' (F a0) o F' a0) a'0) f')
A, B, C: Type DA: A -> Type DB: B -> Type DC: C -> Type F: A -> B G: B -> C F': foralla : A, DA a -> DB (F a) G': forallb : B, DB b -> DC (G b) IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB IsGraph2: IsGraph C Is2Graph2: Is2Graph C Is01Cat2: Is01Cat C H3: Is1Cat C IsDGraph2: IsDGraph DC IsD2Graph2: IsD2Graph DC IsD01Cat2: IsD01Cat DC H4: IsD1Cat DC Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F Is0Functor1: Is0Functor G Is1Functor1: Is1Functor G IsD0Functor0: IsD0Functor F F' IsD1Functor0: IsD1Functor F F' IsD0Functor1: IsD0Functor G G' IsD1Functor1: IsD1Functor G G' a, b, c: A f: a $-> b g: b $-> c a': DA a b': DA b c': DA c f': DHom f a' b' g': DHom g b' c'
DHom (fmap_comp (G o F) f g)
(dfmap (funx : A => G (F x))
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
(g' $o' f'))
(dfmap (funx : A => G (F x))
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
g' $o'
dfmap (funx : A => G (F x))
(fun (a : A) (a' : DA a) => (G' (F a) o F' a) a')
f')
exact (dfmap2 _ _ (dfmap_comp F F' f' g') $@' dfmap_comp G G' _ _).Defined.EndCompositeFunctor.Local Definitionpointwise_prod {AB : Type} (DA : A -> Type) (DB : B -> Type)
(x : A * B) := DA (fst x) * DB (snd x).
A, B: Type DA: A -> Type H: IsGraph A H0: IsDGraph DA DB: B -> Type H1: IsGraph B H2: IsDGraph DB
IsDGraph (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: IsDGraph DA DB: B -> Type H1: IsGraph B H2: IsDGraph DB
IsDGraph (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: IsDGraph DA DB: B -> Type H1: IsGraph B H2: IsDGraph DB a1: A b1: B a2: A b2: B f: fst (a1, b1) $-> fst (a2, b2) g: snd (a1, b1) $-> snd (a2, b2) a1': DA (fst (a1, b1)) b1': DB (snd (a1, b1)) a2': DA (fst (a2, b2)) b2': DB (snd (a2, b2))
Type
exact (DHom f a1' a2' * DHom g b1' b2').Defined.
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB
IsD01Cat (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB
IsD01Cat (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB
forall (a : A * B) (a' : pointwise_prod DA DB a),
DHom (Id a) a' a'
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB
forall (abc : A * B)
(g : b $-> c) (f : a $-> b)
(a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c),
DHom g b' c' -> DHom f a' b' -> DHom (g $o f) a' c'
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB
forall (a : A * B) (a' : pointwise_prod DA DB a),
DHom (Id a) a' a'
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB a: A b: B a': DA (fst (a, b)) b': DB (snd (a, b))
DHom (Id (a, b)) (a', b') (a', b')
exact (DId a', DId b').
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB
forall (abc : A * B)
(g : b $-> c) (f : a $-> b)
(a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c),
DHom g b' c' -> DHom f a' b' -> DHom (g $o f) a' c'
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB a1: A b1: B a2: A b2: B a3: A b3: B f2: fst (a2, b2) $-> fst (a3, b3) g2: snd (a2, b2) $-> snd (a3, b3) f1: fst (a1, b1) $-> fst (a2, b2) g1: snd (a1, b1) $-> snd (a2, b2) a1': DA (fst (a1, b1)) b1': DB (snd (a1, b1)) a2': DA (fst (a2, b2)) b2': DB (snd (a2, b2)) a3': DA (fst (a3, b3)) b3': DB (snd (a3, b3))
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A IsDGraph0: IsDGraph DA H1: IsD01Cat DA DB: B -> Type H2: IsGraph B H3: Is01Cat B IsDGraph1: IsDGraph DB H4: IsD01Cat DB a1: A b1: B a2: A b2: B a3: A b3: B f2: fst (a2, b2) $-> fst (a3, b3) g2: snd (a2, b2) $-> snd (a3, b3) f1: fst (a1, b1) $-> fst (a2, b2) g1: snd (a1, b1) $-> snd (a2, b2) a1': DA (fst (a1, b1)) b1': DB (snd (a1, b1)) a2': DA (fst (a2, b2)) b2': DB (snd (a2, b2)) a3': DA (fst (a3, b3)) b3': DB (snd (a3, b3)) f2': DHom f2 a2' a3' g2': DHom g2 b2' b3' f1': DHom f1 a1' a2' g1': DHom g1 b1' b2'
DHom ((f2, g2) $o (f1, g1)) (a1', b1') (a3', b3')
exact (f2' $o' f1', g2' $o' g1').Defined.
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph DA IsD01Cat0: IsD01Cat DA H2: IsD0Gpd DA DB: B -> Type H3: IsGraph B H4: Is01Cat B H5: Is0Gpd B IsDGraph1: IsDGraph DB IsD01Cat1: IsD01Cat DB H6: IsD0Gpd DB
IsD0Gpd (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph DA IsD01Cat0: IsD01Cat DA H2: IsD0Gpd DA DB: B -> Type H3: IsGraph B H4: Is01Cat B H5: Is0Gpd B IsDGraph1: IsDGraph DB IsD01Cat1: IsD01Cat DB H6: IsD0Gpd DB
IsD0Gpd (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A IsDGraph0: IsDGraph DA IsD01Cat0: IsD01Cat DA H2: IsD0Gpd DA DB: B -> Type H3: IsGraph B H4: Is01Cat B H5: Is0Gpd B IsDGraph1: IsDGraph DB IsD01Cat1: IsD01Cat DB H6: IsD0Gpd DB a1: A b1: B a2: A b2: B f: fst (a1, b1) $-> fst (a2, b2) g: snd (a1, b1) $-> snd (a2, b2) a1': DA (fst (a1, b1)) b1': DB (snd (a1, b1)) a2': DA (fst (a2, b2)) b2': DB (snd (a2, b2)) f': DHom f a1' a2' g': DHom g b1' b2'
DHom (f, g)^$ (a2', b2') (a1', b1')
exact (f'^$', g'^$').Defined.
A, B: Type DA: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph DA H1: IsD2Graph DA DB: B -> Type H2: IsGraph B H3: Is2Graph B IsDGraph1: IsDGraph DB H4: IsD2Graph DB
IsD2Graph (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph DA H1: IsD2Graph DA DB: B -> Type H2: IsGraph B H3: Is2Graph B IsDGraph1: IsDGraph DB H4: IsD2Graph DB
IsD2Graph (pointwise_prod DA DB)
A, B: Type DA: A -> Type H: IsGraph A H0: Is2Graph A IsDGraph0: IsDGraph DA H1: IsD2Graph DA DB: B -> Type H2: IsGraph B H3: Is2Graph B IsDGraph1: IsDGraph DB H4: IsD2Graph DB a1: A b1: B a2: A b2: B a1': DA (fst (a1, b1)) b1': DB (snd (a1, b1)) a2': DA (fst (a2, b2)) b2': DB (snd (a2, b2))
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
IsD1Cat (pointwise_prod DA DB)
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
IsD1Cat (pointwise_prod DA DB)
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b),
IsD01Cat (funf : a $-> b => DHom f a' b')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b),
IsD0Gpd (funf : a $-> b => DHom f a' b')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abc : A * B)
(g : b $-> c) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(g' : DHom g b' c'),
IsD0Functor (cat_postcomp a g) (dcat_postcomp g')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abc : A * B)
(f : a $-> b) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(f' : DHom f a' b'),
IsD0Functor (cat_precomp c f) (dcat_precomp f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abcd : A * B)
(f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(d' : pointwise_prod DA DB d)
(f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc f g h)
(h' $o' g' $o' f') (h' $o' (g' $o' f'))
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abcd : A * B)
(f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(d' : pointwise_prod DA DB d)
(f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc_opp f g h)
(h' $o' (g' $o' f'))
(h' $o' g' $o' f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (f : a $-> b)
(a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(f' : DHom f a' b'),
DHom (cat_idl f) (DId b' $o' f') f'
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (f : a $-> b)
(a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(f' : DHom f a' b'),
DHom (cat_idr f) (f' $o' DId a') f'
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b),
IsD01Cat (funf : a $-> b => DHom f a' b')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2: A * B ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2
IsD01Cat (funf : ab1 $-> ab2 => DHom f ab1' ab2')
srapply isd01cat_prod.
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b),
IsD0Gpd (funf : a $-> b => DHom f a' b')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2: A * B ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2
IsD0Gpd (funf : ab1 $-> ab2 => DHom f ab1' ab2')
exact (isd0gpd_prod _ _).
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abc : A * B)
(g : b $-> c) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(g' : DHom g b' c'),
IsD0Functor (cat_postcomp a g) (dcat_postcomp g')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3: A * B fg: ab2 $-> ab3 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 ab3': pointwise_prod DA DB ab3 f': DHom (fst fg) (fst ab2') (fst ab3') g': DHom (snd fg) (snd ab2') (snd ab3')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3: A * B fg: ab2 $-> ab3 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 ab3': pointwise_prod DA DB ab3 f': DHom (fst fg) (fst ab2') (fst ab3') g': DHom (snd fg) (snd ab2') (snd ab3') hk1, hk2: ab1 $-> ab2 pq: hk1 $-> hk2 hk1': DHom hk1 ab1' ab2' hk2': DHom hk2 ab1' ab2' p': DHom (fst pq) (fst hk1') (fst hk2') q': DHom (snd pq) (snd hk1') (snd hk2')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abc : A * B)
(f : a $-> b) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(f' : DHom f a' b'),
IsD0Functor (cat_precomp c f) (dcat_precomp f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3: A * B fg: ab1 $-> ab2 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 ab3': pointwise_prod DA DB ab3 f': DHom (fst fg) (fst ab1') (fst ab2') g': DHom (snd fg) (snd ab1') (snd ab2')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3: A * B fg: ab1 $-> ab2 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 ab3': pointwise_prod DA DB ab3 f': DHom (fst fg) (fst ab1') (fst ab2') g': DHom (snd fg) (snd ab1') (snd ab2') hk1, hk2: ab2 $-> ab3 pq: hk1 $-> hk2 hk1': DHom hk1 ab2' ab3' hk2': DHom hk2 ab2' ab3' p': DHom (fst pq) (fst hk1') (fst hk2') q': DHom (snd pq) (snd hk1') (snd hk2')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abcd : A * B)
(f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(d' : pointwise_prod DA DB d)
(f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc f g h)
(h' $o' g' $o' f') (h' $o' (g' $o' f'))
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3, ab4: A * B fg1: ab1 $-> ab2 fg2: ab2 $-> ab3 fg3: ab3 $-> ab4
forall (a' : pointwise_prod DA DB ab1)
(b' : pointwise_prod DA DB ab2)
(c' : pointwise_prod DA DB ab3)
(d' : pointwise_prod DA DB ab4)
(f' : DHom fg1 a' b') (g' : DHom fg2 b' c')
(h' : DHom fg3 c' d'),
DHom (cat_assoc fg1 fg2 fg3)
(h' $o' g' $o' f') (h' $o' (g' $o' f'))
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3, ab4: A * B fg1: ab1 $-> ab2 fg2: ab2 $-> ab3 fg3: ab3 $-> ab4 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 ab3': pointwise_prod DA DB ab3 ab4': pointwise_prod DA DB ab4 f1': DHom (fst fg1) (fst ab1') (fst ab2') g1': DHom (snd fg1) (snd ab1') (snd ab2') f2': DHom (fst fg2) (fst ab2') (fst ab3') g2': DHom (snd fg2) (snd ab2') (snd ab3') f3': DHom (fst fg3) (fst ab3') (fst ab4') g3': DHom (snd fg3) (snd ab3') (snd ab4')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (abcd : A * B)
(f : a $-> b) (g : b $-> c)
(h : c $-> d) (a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(c' : pointwise_prod DA DB c)
(d' : pointwise_prod DA DB d)
(f' : DHom f a' b') (g' : DHom g b' c')
(h' : DHom h c' d'),
DHom (cat_assoc_opp f g h)
(h' $o' (g' $o' f'))
(h' $o' g' $o' f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3, ab4: A * B fg1: ab1 $-> ab2 fg2: ab2 $-> ab3 fg3: ab3 $-> ab4
forall (a' : pointwise_prod DA DB ab1)
(b' : pointwise_prod DA DB ab2)
(c' : pointwise_prod DA DB ab3)
(d' : pointwise_prod DA DB ab4)
(f' : DHom fg1 a' b') (g' : DHom fg2 b' c')
(h' : DHom fg3 c' d'),
DHom (cat_assoc_opp fg1 fg2 fg3)
(h' $o' (g' $o' f'))
(h' $o' g' $o' f')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2, ab3, ab4: A * B fg1: ab1 $-> ab2 fg2: ab2 $-> ab3 fg3: ab3 $-> ab4 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 ab3': pointwise_prod DA DB ab3 ab4': pointwise_prod DA DB ab4 f1': DHom (fst fg1) (fst ab1') (fst ab2') g1': DHom (snd fg1) (snd ab1') (snd ab2') f2': DHom (fst fg2) (fst ab2') (fst ab3') g2': DHom (snd fg2) (snd ab2') (snd ab3') f3': DHom (fst fg3) (fst ab3') (fst ab4') g3': DHom (snd fg3) (snd ab3') (snd ab4')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (f : a $-> b)
(a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(f' : DHom f a' b'),
DHom (cat_idl f) (DId b' $o' f') f'
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2: A * B fg: ab1 $-> ab2 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 f': DHom (fst fg) (fst ab1') (fst ab2') g': DHom (snd fg) (snd ab1') (snd ab2')
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB
forall (ab : A * B) (f : a $-> b)
(a' : pointwise_prod DA DB a)
(b' : pointwise_prod DA DB b)
(f' : DHom f a' b'),
DHom (cat_idr f) (f' $o' DId a') f'
A, B: Type DA: A -> Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsDGraph0: IsDGraph DA IsD2Graph0: IsD2Graph DA IsD01Cat0: IsD01Cat DA H0: IsD1Cat DA DB: B -> Type IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H1: Is1Cat B IsDGraph1: IsDGraph DB IsD2Graph1: IsD2Graph DB IsD01Cat1: IsD01Cat DB H2: IsD1Cat DB ab1, ab2: A * B fg: ab1 $-> ab2 ab1': pointwise_prod DA DB ab1 ab2': pointwise_prod DA DB ab2 f': DHom (fst fg) (fst ab1') (fst ab2') g': DHom (snd fg) (snd ab1') (snd ab2')
DHom (cat_idr fg) ((f', g') $o' DId ab1') (f', g')