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.
(* Typeclass instances to allow rewriting in categories. Examples are given later in the file. *)(* Init.Tactics contains the definition of the Coq stdlib typeclass_inferences database. It must be imported before Basics.Overture. *)(** Warning: This imports Coq.Setoids.Setoid from the standard library. Currently the setoid rewriting machinery requires this to work, it depends on this file explicitly. This imports the whole standard library into the namespace.All files that import WildCat/SetoidRewrite.v will also recursively import the entire Coq.Init standard library. *)(** Because of this, this file needs to be the *first* file Require'd in any file that uses it. Otherwise, the typeclasses hintdb is cleared, breaking typeclass inference. Moreover, if Foo Requires this file, then Foo must also be the first file Require'd in any file that Requires Foo, and so on. In the long term it would be good if this could be avoided.*)#[warnings="-deprecated-from-Coq"]
From Coq Require Init.Tactics.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
From HoTT Require Import Types.Forall.
[Loading ML file tauto_plugin.cmxs (using legacy method) ... done]
[Loading ML file cc_plugin.cmxs (using legacy method) ... done]
[Loading ML file firstorder_plugin.cmxs (using legacy method) ... done]
Import CMorphisms.ProperNotations.From HoTT Require Import WildCat.Core
WildCat.NatTrans WildCat.Equiv.#[export] Instancereflexive_proper_proxy {A : Type}
{R : Relation A} `(Reflexive A R) (x : A)
: CMorphisms.ProperProxy R x := reflexivity x.(* forall (x y : A), x $== y -> forall (a b : A), a $== b -> y $== b -> x $==a *)
A: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A x, y: A eq_xy: x $== y a, b: A eq_ab: a $== b eq_yb: y $== b
x $== a
exact (transitivity eq_xy (transitivity eq_yb
(symmetry _ _ eq_ab))).Defined.(* forall (x y : A), x $== y -> forall (a b : A), a $== b -> x $== a -> y $== b *)
A, B: Type f: A -> B R: Relation A R': Relation B H: Symmetric R H0: CMorphisms.Proper (R ==> R') f
CMorphisms.Proper (R --> R') f
A, B: Type f: A -> B R: Relation A R': Relation B H: Symmetric R H0: CMorphisms.Proper (R ==> R') f
CMorphisms.Proper (R --> R') f
A, B: Type f: A -> B R: Relation A R': Relation B H: Symmetric R H0: CMorphisms.Proper (R ==> R') f a, b: A Rab: CRelationClasses.flip R a b
R' (f a) (f b)
A, B: Type f: A -> B R: Relation A R': Relation B H: Symmetric R H0: CMorphisms.Proper (R ==> R') f a, b: A Rab: CRelationClasses.flip R a b
R a b
A, B: Type f: A -> B R: Relation A R': Relation B H: Symmetric R H0: CMorphisms.Proper (R ==> R') f a, b: A Rab: CRelationClasses.flip R a b
R a b
A, B: Type f: A -> B R: Relation A R': Relation B H: Symmetric R H0: CMorphisms.Proper (R ==> R') f a, b: A Rab: CRelationClasses.flip R a b
R b a
exact Rab.Defined.
A, B, C: Type R: Relation A R': Relation B R'': Relation C H: Symmetric R' f: A -> B -> C H1: CMorphisms.Proper (R ==> R' ==> R'') f
CMorphisms.Proper (R ==> R' --> R'') f
A, B, C: Type R: Relation A R': Relation B R'': Relation C H: Symmetric R' f: A -> B -> C H1: CMorphisms.Proper (R ==> R' ==> R'') f
CMorphisms.Proper (R ==> R' --> R'') f
A, B, C: Type R: Relation A R': Relation B R'': Relation C H: Symmetric R' f: A -> B -> C H1: CMorphisms.Proper (R ==> R' ==> R'') f a, b: A Rab: R a b x, y: B R'yx: CRelationClasses.flip R' x y
R'' (f a x) (f b y)
apply H1; [ assumption | symmetry; assumption ].Defined.#[export] InstanceIsProper_fmap {AB : Type} `{Is1Cat A}
`{Is1Cat A} (F : A -> B) `{Is1Functor _ _ F} (a b : A)
: CMorphisms.Proper (GpdHom ==> GpdHom) (@fmap _ _ _ _ F _ a b) := fun__eq => fmap2 F eq.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A g: b $-> c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A g1, g2: b $-> c eq_g: g1 $== g2 f1, f2: a $-> b eq_f: f1 $== f2
g1 $o f1 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A g1, g2: b $-> c eq_g: g1 $== g2 f1, f2: a $-> b eq_f: f1 $== f2
g1 $o f2 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A g1, g2: b $-> c eq_g: g1 $== g2 f1, f2: a $-> b eq_f: f1 $== f2
g1 $-> g2
exact eq_g.Defined.
A, B: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A R: Relation B F: A -> B H2: CMorphisms.Proper (GpdHom ==> R) F
CMorphisms.Proper (Hom ==> R) F
A, B: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A R: Relation B F: A -> B H2: CMorphisms.Proper (GpdHom ==> R) F
CMorphisms.Proper (Hom ==> R) F
intros a b eq_ab; apply H2; exact eq_ab.Defined.
A: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A
CMorphisms.Proper
(Hom ==> Hom ==> CRelationClasses.arrow) Hom
A: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A
CMorphisms.Proper
(Hom ==> Hom ==> CRelationClasses.arrow) Hom
A: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A x, y: A eq_xy: x $-> y a, b: A eq_ab: a $-> b f: x $-> a
y $-> b
A: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A x, y: A eq_xy: x $-> y a, b: A eq_ab: a $-> b f: x $-> a
y $-> a
A: Type H: IsGraph A H0: Is01Cat A H1: Is0Gpd A x, y: A eq_xy: x $-> y a, b: A eq_ab: a $-> b f: x $-> a
A: Type H: IsGraph A H0: Is01Cat A x, y, z: A g: y $-> z f: x $-> y
x $-> z
exact (g $o f).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b: A f: a $-> b
SectionOf f -> Epic f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b: A f: a $-> b
SectionOf f -> Epic f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b: A f: a $-> b section: SectionOf f c: A g, h: b $-> c eq_gf_hf: g $o f $== h $o f
g $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b: A f: a $-> b right_inverse: b $-> a is_section: f $o right_inverse $== Id b c: A g, h: b $-> c eq_gf_hf: g $o f $== h $o f
g $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b: A f: a $-> b right_inverse: b $-> a is_section: f $o right_inverse $== Id b c: A g, h: b $-> c eq_gf_hf: g $o f $o right_inverse $->
h $o f $o right_inverse
g $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b: A f: a $-> b right_inverse: b $-> a is_section: f $o right_inverse $== Id b c: A g, h: b $-> c eq_gf_hf: g $-> h
g $== h
exact eq_gf_hf.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A b, c: A f: b $-> c
RetractionOf f -> Monic f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A b, c: A f: b $-> c
RetractionOf f -> Monic f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A b, c: A f: b $-> c retraction: RetractionOf f a: A g, h: a $-> b eq_fg_fh: f $o g $== f $o h
g $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A b, c: A f: b $-> c left_inverse: c $-> b is_retraction: left_inverse $o f $== Id b a: A g, h: a $-> b eq_fg_fh: f $o g $== f $o h
g $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A b, c: A f: b $-> c left_inverse: c $-> b is_retraction: left_inverse $o f $== Id b a: A g, h: a $-> b eq_fg_fh: left_inverse $o (f $o g) $->
left_inverse $o (f $o h)
g $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A b, c: A f: b $-> c left_inverse: c $-> b is_retraction: left_inverse $o f $== Id b a: A g, h: a $-> b eq_fg_fh: g $-> h
g $== h
assumption.Defined.
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G
Faithful F -> Faithful G
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G
Faithful F -> Faithful G
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: fmap G f $== fmap G g
f $== g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: cat_precomp (G y) (tau x) (fmap G f) $->
cat_precomp (G y) (tau x) (fmap G g)
f $== g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: cat_precomp (G y) (tau x) (fmap G f) $->
cat_precomp (G y) (tau x) (fmap G g)
f $== g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: fmap G f $o tau x $-> fmap G g $o tau x
f $== g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
f $== g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
fmap F f $== fmap F g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
RetractionOf (tau y)
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g X: RetractionOf (tau y)
fmap F f $== fmap F g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
RetractionOf (tau y)
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
G y $-> F y
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
?comp_left_inverse $o tau y $== Id (F y)
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
G y $-> F y
exact ((tau y)^-1$).
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g
(tau y)^-1$ $o tau y $== Id (F y)
exact (cate_issect _ ).
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g X: RetractionOf (tau y)
fmap F f $== fmap F g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: tau y $o fmap F f $-> tau y $o fmap F g X: Monic (tau y)
fmap F f $== fmap F g
A, B: Type F, G: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F Is0Functor1: Is0Functor G Is1Functor0: Is1Functor G HasEquivs0: HasEquivs B tau: NatEquiv F G faithful_F: Faithful F x, y: A f, g: x $-> y eq_Gf_Gg: fmap F f $== fmap F g X: Monic (tau y)
fmap F f $== fmap F g
assumption.Defined.SectionSetoidRewriteTests.
forall (A : Type) (H0 : IsGraph A) (H1 : Is01Cat A)
(H : Is0Gpd A) (abc : A),
a $== b -> b $== c -> a $== c
forall (A : Type) (H0 : IsGraph A) (H1 : Is01Cat A)
(H : Is0Gpd A) (abc : A),
a $== b -> b $== c -> a $== c
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
a $== c
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
b $== b
Abort.
forall (A : Type) (H0 : IsGraph A) (H1 : Is01Cat A)
(H : Is0Gpd A) (abc : A),
a $== b -> b $== c -> a $== c
forall (A : Type) (H0 : IsGraph A) (H1 : Is01Cat A)
(H : Is0Gpd A) (abc : A),
a $== b -> b $== c -> a $== c
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
a $== c
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
c $== a
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
b $== b
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
c $== c
A: Type H0: IsGraph A H1: Is01Cat A H: Is0Gpd A a, b, c: A eq_ab: a $== b eq_bc: b $== c
b $== b
Abort.
forall (AB : Type) (F : A -> B)
(IsGraph0 : IsGraph A) (Is2Graph0 : Is2Graph A)
(Is01Cat0 : Is01Cat A) (H : Is1Cat A)
(IsGraph1 : IsGraph B) (Is2Graph1 : Is2Graph B)
(Is01Cat1 : Is01Cat B) (H0 : Is1Cat B)
(Is0Functor0 : Is0Functor F),
Is1Functor F ->
forall (ab : A) (fg : a $-> b),
f $== g -> fmap F f $== fmap F g
forall (AB : Type) (F : A -> B)
(IsGraph0 : IsGraph A) (Is2Graph0 : Is2Graph A)
(Is01Cat0 : Is01Cat A) (H : Is1Cat A)
(IsGraph1 : IsGraph B) (Is2Graph1 : Is2Graph B)
(Is01Cat1 : Is01Cat B) (H0 : Is1Cat B)
(Is0Functor0 : Is0Functor F),
Is1Functor F ->
forall (ab : A) (fg : a $-> b),
f $== g -> fmap F f $== fmap F g
A, B: Type F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F a, b: A f, g: a $-> b
f $== g -> fmap F f $== fmap F g
A, B: Type F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F a, b: A f, g: a $-> b eq_fg: f $== g
fmap F f $== fmap F g
A, B: Type F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H0: Is1Cat B Is0Functor0: Is0Functor F H1: Is1Functor F a, b: A f, g: a $-> b eq_fg: f $== g
fmap F g $== fmap F g
Abort.
forall (A : Type) (IsGraph0 : IsGraph A)
(Is2Graph0 : Is2Graph A) (Is01Cat0 : Is01Cat A)
(H : Is1Cat A) (abc : A) (f1f2 : a $-> b)
(g : b $-> c), f1 $== f2 -> g $o f1 $== g $o f2
forall (A : Type) (IsGraph0 : IsGraph A)
(Is2Graph0 : Is2Graph A) (Is01Cat0 : Is01Cat A)
(H : Is1Cat A) (abc : A) (f1f2 : a $-> b)
(g : b $-> c), f1 $== f2 -> g $o f1 $== g $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g: b $-> c
f1 $== f2 -> g $o f1 $== g $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g: b $-> c eq: f1 $== f2
g $o f1 $== g $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g: b $-> c eq: f1 $== f2
g $o f1 $== g $o f1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g: b $-> c eq: f1 $== f2
g $o f2 $== g $o f2
Abort.
forall (A : Type) (IsGraph0 : IsGraph A)
(Is2Graph0 : Is2Graph A) (Is01Cat0 : Is01Cat A)
(H : Is1Cat A) (abc : A) (f : a $-> b)
(g1g2 : b $-> c), g1 $== g2 -> g1 $o f $== g2 $o f
forall (A : Type) (IsGraph0 : IsGraph A)
(Is2Graph0 : Is2Graph A) (Is01Cat0 : Is01Cat A)
(H : Is1Cat A) (abc : A) (f : a $-> b)
(g1g2 : b $-> c), g1 $== g2 -> g1 $o f $== g2 $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f: a $-> b g1, g2: b $-> c
g1 $== g2 -> g1 $o f $== g2 $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f: a $-> b g1, g2: b $-> c eq: g1 $== g2
g1 $o f $== g2 $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f: a $-> b g1, g2: b $-> c eq: g1 $== g2
g1 $o f $== g1 $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f: a $-> b g1, g2: b $-> c eq: g1 $== g2
g2 $o f $== g2 $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f: a $-> b g1, g2: b $-> c eq: g1 $== g2
g1 $o f $== g1 $o f
Abort.
forall (A : Type) (IsGraph0 : IsGraph A)
(Is2Graph0 : Is2Graph A) (Is01Cat0 : Is01Cat A)
(H : Is1Cat A) (abc : A) (f1f2 : a $-> b)
(g1g2 : b $-> c),
g1 $== g2 -> f1 $== f2 -> g1 $o f1 $== g2 $o f2
forall (A : Type) (IsGraph0 : IsGraph A)
(Is2Graph0 : Is2Graph A) (Is01Cat0 : Is01Cat A)
(H : Is1Cat A) (abc : A) (f1f2 : a $-> b)
(g1g2 : b $-> c),
g1 $== g2 -> f1 $== f2 -> g1 $o f1 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g1, g2: b $-> c
g1 $== g2 -> f1 $== f2 -> g1 $o f1 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g1, g2: b $-> c eq_g: g1 $== g2 eq_f: f1 $== f2
g1 $o f1 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g1, g2: b $-> c eq_g: g1 $== g2 eq_f: f1 $== f2
g2 $o f1 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g1, g2: b $-> c eq_g: g1 $== g2 eq_f: f1 $== f2
g2 $o f1 $== g2 $o f1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g1, g2: b $-> c eq_g: g1 $== g2 eq_f: f1 $== f2
g2 $o f2 $== g2 $o f2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, c: A f1, f2: a $-> b g1, g2: b $-> c eq_g: g1 $== g2 eq_f: f1 $== f2