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 WildCat.Core WildCat.TwoOneCat WildCat.NatTrans.(** * Path groupoids as wild categories *)(** Not global instances for now *)(** These are written so that they can be augmented with an existing wildcat structure. For instance, you may partially define a wildcat and ask for paths for the higher cells. *)(** Any type is a graph with morphisms given by the identity type. *)Definitionisgraph_paths (A : Type) : IsGraph A
:= {| Hom := paths |}.(** Any graph is a 2-graph with 2-cells given by the identity type. *)Definitionis2graph_paths (A : Type) `{IsGraph A} : Is2Graph A
:= fun__ => isgraph_paths _.(** Any 2-graph is a 3-graph with 3-cells given by the identity type. *)Definitionis3graph_paths (A : Type) `{Is2Graph A} : Is3Graph A
:= fun__ => is2graph_paths _.(** We assume these as instances for the rest of the file with a low priority. *)Local Existing Instances isgraph_paths is2graph_paths is3graph_paths | 10.(** Any type has composition and identity morphisms given by path concatenation and reflexivity. *)Instanceis01cat_paths (A : Type) : Is01Cat A
:= {| Id := @idpath _ ; cat_comp := fun___xy => concat y x |}.(** Any type has a 0-groupoid structure with inverse morphisms given by path inversion. *)Instanceis0gpd_paths (A : Type) : Is0Gpd A
:= { gpd_rev := @inverse _ }.(** Postcomposition is a 0-functor when the 2-cells are paths. *)
A: Type H: IsGraph A H0: Is01Cat A a, b, c: A g: b $-> c
Is0Functor (cat_postcomp a g)
A: Type H: IsGraph A H0: Is01Cat A a, b, c: A g: b $-> c
Is0Functor (cat_postcomp a g)
A: Type H: IsGraph A H0: Is01Cat A a, b, c: A g: b $-> c
foralla0b0 : a $-> b,
(a0 $-> b0) ->
cat_postcomp a g a0 $-> cat_postcomp a g b0
exact (@ap _ _ (cat_postcomp a g)).Defined.(** Precomposition is a 0-functor when the 2-cells are paths. *)
A: Type H: IsGraph A H0: Is01Cat A a, b, c: A f: a $-> b
Is0Functor (cat_precomp c f)
A: Type H: IsGraph A H0: Is01Cat A a, b, c: A f: a $-> b
Is0Functor (cat_precomp c f)
A: Type H: IsGraph A H0: Is01Cat A a, b, c: A f: a $-> b
foralla0b0 : b $-> c,
(a0 $-> b0) ->
cat_precomp c f a0 $-> cat_precomp c f b0
exact (@ap _ _ (cat_precomp c f)).Defined.(** Any type is a 1-category with n-morphisms given by paths. *)
A: Type
Is1Cat A
A: Type
Is1Cat A
A: Type
forallab : A, Is01Cat (a $-> b)
A: Type
forallab : A, Is0Gpd (a $-> b)
A: Type
forall (abc : A) (g : b $-> c),
Is0Functor (cat_postcomp a g)
A: Type
forall (abc : A) (f : a $-> b),
Is0Functor (cat_precomp c f)
A: Type
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o g $o f $== h $o (g $o f)
A: Type
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o (g $o f) $== h $o g $o f
A: Type
forall (ab : A) (f : a $-> b), Id b $o f $== f
A: Type
forall (ab : A) (f : a $-> b), f $o Id a $== f
A: Type
forallab : A, Is01Cat (a $-> b)
exact _.
A: Type
forallab : A, Is0Gpd (a $-> b)
exact _.
A: Type
forall (abc : A) (g : b $-> c),
Is0Functor (cat_postcomp a g)
exact _.
A: Type
forall (abc : A) (f : a $-> b),
Is0Functor (cat_precomp c f)
exact _.
A: Type
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o g $o f $== h $o (g $o f)
exact (@concat_p_pp A).
A: Type
forall (abcd : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d), h $o (g $o f) $== h $o g $o f
exact (@concat_pp_p A).
A: Type
forall (ab : A) (f : a $-> b), Id b $o f $== f
exact (@concat_p1 A).
A: Type
forall (ab : A) (f : a $-> b), f $o Id a $== f
exact (@concat_1p A).Defined.(** Any type is a 1-groupoid with morphisms given by paths. *)
A: Type
Is1Gpd A
A: Type
Is1Gpd A
A: Type
forall (ab : A) (f : a $-> b), f^$ $o f $== Id a
A: Type
forall (ab : A) (f : a $-> b), f $o f^$ $== Id b
A: Type
forall (ab : A) (f : a $-> b), f^$ $o f $== Id a
exact (@concat_pV A).
A: Type
forall (ab : A) (f : a $-> b), f $o f^$ $== Id b
exact (@concat_Vp A).Defined.(** Any type is a 2-category with higher morphisms given by paths. *)
A: Type
Is21Cat A
A: Type
Is21Cat A
A: Type
forallab : A, Is1Cat (a $-> b)
A: Type
forallab : A, Is1Gpd (a $-> b)
A: Type
forall (abc : A) (g : b $-> c),
Is1Functor (cat_postcomp a g)
A: Type
forall (abc : A) (f : a $-> b),
Is1Functor (cat_precomp c f)
A: Type
forall (abc : A) (ff' : a $-> b) (gg' : b $-> c)
(p : f $== f') (p' : g $== g'),
(p' $@R f) $@ (g' $@L p) $== (g $@L p) $@ (p' $@R f')
A: Type
forall (abcd : A) (f : a $-> b) (g : b $-> c),
Is1Natural (cat_precomp d f o cat_precomp d g)
(cat_precomp d (g $o f)) (cat_assoc f g)
A: Type
forall (abcd : A) (f : a $-> b) (h : c $-> d),
Is1Natural (cat_precomp d f o cat_postcomp b h)
(cat_postcomp a h o cat_precomp c f)
(fung : b $-> c => cat_assoc f g h)
A: Type
forall (abcd : A) (g : b $-> c) (h : c $-> d),
Is1Natural (cat_postcomp a (h $o g))
(cat_postcomp a h o cat_postcomp a g)
(funf : a $-> b => cat_assoc f g h)
A: Type
forallab : A,
Is1Natural (cat_postcomp a (Id b)) idmap cat_idl
A: Type
forallab : A,
Is1Natural (cat_precomp b (Id a)) idmap cat_idr
A: Type
forall (abcde : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d) (k : d $-> e),
k $@L cat_assoc f g h $o cat_assoc f (h $o g) k $o
cat_assoc g h k $@R f $==
cat_assoc (g $o f) h k $o cat_assoc f g (k $o h)
A: Type
forall (abc : A) (f : a $-> b) (g : b $-> c),
g $@L cat_idl f $o cat_assoc f (Id b) g $==
cat_idr g $@R f
A: Type
forallab : A, Is1Cat (a $-> b)
exact _.
A: Type
forallab : A, Is1Gpd (a $-> b)
exact _.
A: Type
forall (abc : A) (g : b $-> c),
Is1Functor (cat_postcomp a g)
A: Type x, y, z: A p: y $-> z
Is1Functor (cat_postcomp x p)
A: Type x, y, z: A p: y $-> z
forall (ab : x $-> y) (fg : a $-> b),
f $== g ->
fmap (cat_postcomp x p) f $==
fmap (cat_postcomp x p) g
A: Type x, y, z: A p: y $-> z
foralla : x $-> y,
fmap (cat_postcomp x p) (Id a) $==
Id (cat_postcomp x p a)
A: Type x, y, z: A p: y $-> z
forall (abc : x $-> y) (f : a $-> b) (g : b $-> c),
fmap (cat_postcomp x p) (g $o f) $==
fmap (cat_postcomp x p) g $o fmap (cat_postcomp x p) f
A: Type x, y, z: A p: y $-> z
forall (ab : x $-> y) (fg : a $-> b),
f $== g ->
fmap (cat_postcomp x p) f $==
fmap (cat_postcomp x p) g
A: Type x, y, z: A p: y $-> z a, b: x $-> y q, r: a $-> b
q $== r ->
fmap (cat_postcomp x p) q $==
fmap (cat_postcomp x p) r
exact (ap (funx => whiskerR x _)).
A: Type x, y, z: A p: y $-> z
foralla : x $-> y,
fmap (cat_postcomp x p) (Id a) $==
Id (cat_postcomp x p a)
reflexivity.
A: Type x, y, z: A p: y $-> z
forall (abc : x $-> y) (f : a $-> b) (g : b $-> c),
fmap (cat_postcomp x p) (g $o f) $==
fmap (cat_postcomp x p) g $o fmap (cat_postcomp x p) f
A: Type x, y, z: A p: y $-> z a, b, c: x $-> y
forall (f : a $-> b) (g : b $-> c),
fmap (cat_postcomp x p) (g $o f) $==
fmap (cat_postcomp x p) g $o fmap (cat_postcomp x p) f
exact (whiskerR_pp p).
A: Type
forall (abc : A) (f : a $-> b),
Is1Functor (cat_precomp c f)
A: Type x, y, z: A p: x $-> y
Is1Functor (cat_precomp z p)
A: Type x, y, z: A p: x $-> y
forall (ab : y $-> z) (fg : a $-> b),
f $== g ->
fmap (cat_precomp z p) f $== fmap (cat_precomp z p) g
A: Type x, y, z: A p: x $-> y
foralla : y $-> z,
fmap (cat_precomp z p) (Id a) $==
Id (cat_precomp z p a)
A: Type x, y, z: A p: x $-> y
forall (abc : y $-> z) (f : a $-> b) (g : b $-> c),
fmap (cat_precomp z p) (g $o f) $==
fmap (cat_precomp z p) g $o fmap (cat_precomp z p) f
A: Type x, y, z: A p: x $-> y
forall (ab : y $-> z) (fg : a $-> b),
f $== g ->
fmap (cat_precomp z p) f $== fmap (cat_precomp z p) g
A: Type x, y, z: A p: x $-> y a, b: y $-> z q, r: a $-> b
q $== r ->
fmap (cat_precomp z p) q $== fmap (cat_precomp z p) r
exact (ap (whiskerL p)).
A: Type x, y, z: A p: x $-> y
foralla : y $-> z,
fmap (cat_precomp z p) (Id a) $==
Id (cat_precomp z p a)
reflexivity.
A: Type x, y, z: A p: x $-> y
forall (abc : y $-> z) (f : a $-> b) (g : b $-> c),
fmap (cat_precomp z p) (g $o f) $==
fmap (cat_precomp z p) g $o fmap (cat_precomp z p) f
A: Type x, y, z: A p: x $-> y a, b, c: y $-> z
forall (f : a $-> b) (g : b $-> c),
fmap (cat_precomp z p) (g $o f) $==
fmap (cat_precomp z p) g $o fmap (cat_precomp z p) f
exact (whiskerL_pp p).
A: Type
forall (abc : A) (ff' : a $-> b) (gg' : b $-> c)
(p : f $== f') (p' : g $== g'),
(p' $@R f) $@ (g' $@L p) $== (g $@L p) $@ (p' $@R f')
A: Type a, b, c: A q, r: a $-> b s, t: b $-> c h: q $== r g: s $== t
(g $@R q) $@ (t $@L h) $== (s $@L h) $@ (g $@R r)
exact (concat_whisker q r s t h g)^.
A: Type
forall (abcd : A) (f : a $-> b) (g : b $-> c),
Is1Natural (cat_precomp d f o cat_precomp d g)
(cat_precomp d (g $o f)) (cat_assoc f g)
A: Type a, b, c, d: A q: a $-> b r: b $-> c
Is1Natural (cat_precomp d q o cat_precomp d r)
(cat_precomp d (r $o q)) (cat_assoc q r)
A: Type a, b, c, d: A q: a $-> b r: b $-> c
forall (a0a' : c $-> d) (f : a0 $-> a'),
cat_assoc q r a' $o
fmap (cat_precomp d q o cat_precomp d r) f $==
fmap (cat_precomp d (r $o q)) f $o cat_assoc q r a0
A: Type a, b, c, d: A q: a $-> b r: b $-> c s, t: c $-> d h: s $-> t
cat_assoc q r t $o
fmap (cat_precomp d q o cat_precomp d r) h $==
fmap (cat_precomp d (r $o q)) h $o cat_assoc q r s
apply concat_p_pp_nat_r.
A: Type
forall (abcd : A) (f : a $-> b) (h : c $-> d),
Is1Natural (cat_precomp d f o cat_postcomp b h)
(cat_postcomp a h o cat_precomp c f)
(fung : b $-> c => cat_assoc f g h)
A: Type a, b, c, d: A q: a $-> b r: c $-> d
Is1Natural (cat_precomp d q o cat_postcomp b r)
(cat_postcomp a r o cat_precomp c q)
(fung : b $-> c => cat_assoc q g r)
A: Type a, b, c, d: A q: a $-> b r: c $-> d
forall (a0a' : b $-> c) (f : a0 $-> a'),
(fung : b $-> c => cat_assoc q g r) a' $o
fmap (cat_precomp d q o cat_postcomp b r) f $==
fmap (cat_postcomp a r o cat_precomp c q) f $o
(fung : b $-> c => cat_assoc q g r) a0
A: Type a, b, c, d: A q: a $-> b r: c $-> d s, t: b $-> c h: s $-> t
(fung : b $-> c => cat_assoc q g r) t $o
fmap (cat_precomp d q o cat_postcomp b r) h $==
fmap (cat_postcomp a r o cat_precomp c q) h $o
(fung : b $-> c => cat_assoc q g r) s
apply concat_p_pp_nat_m.
A: Type
forall (abcd : A) (g : b $-> c) (h : c $-> d),
Is1Natural (cat_postcomp a (h $o g))
(cat_postcomp a h o cat_postcomp a g)
(funf : a $-> b => cat_assoc f g h)
A: Type a, b, c, d: A q: b $-> c r: c $-> d
Is1Natural (cat_postcomp a (r $o q))
(cat_postcomp a r o cat_postcomp a q)
(funf : a $-> b => cat_assoc f q r)
A: Type a, b, c, d: A q: b $-> c r: c $-> d
forall (a0a' : a $-> b) (f : a0 $-> a'),
(funf0 : a $-> b => cat_assoc f0 q r) a' $o
fmap (cat_postcomp a (r $o q)) f $==
fmap (cat_postcomp a r o cat_postcomp a q) f $o
(funf0 : a $-> b => cat_assoc f0 q r) a0
A: Type a, b, c, d: A q: b $-> c r: c $-> d s, t: a $-> b h: s $-> t
(funf : a $-> b => cat_assoc f q r) t $o
fmap (cat_postcomp a (r $o q)) h $==
fmap (cat_postcomp a r o cat_postcomp a q) h $o
(funf : a $-> b => cat_assoc f q r) s
apply concat_p_pp_nat_l.
A: Type
forallab : A,
Is1Natural (cat_postcomp a (Id b)) idmap cat_idl
A: Type a, b: A
Is1Natural (cat_postcomp a (Id b)) idmap cat_idl
A: Type a, b: A
forall (a0a' : a $-> b) (f : a0 $-> a'),
cat_idl a' $o fmap (cat_postcomp a (Id b)) f $==
fmap idmap f $o cat_idl a0
A: Type a, b: A p, q: a $-> b h: p $-> q
ap (funy : a = b => y @ 1) h @ concat_p1 q =
concat_p1 p @ h
A: Type a, b: A p, q: a $-> b h: p $-> q
(concat_p1 p)^ @
(ap (funy : a = b => y @ 1) h @ concat_p1 q) = h
A: Type a, b: A p, q: a $-> b h: p $-> q
((concat_p1 p)^ @ ap (funy : a = b => y @ 1) h) @
concat_p1 q = h
exact (whiskerR_p1 h).
A: Type
forallab : A,
Is1Natural (cat_precomp b (Id a)) idmap cat_idr
A: Type a, b: A
Is1Natural (cat_precomp b (Id a)) idmap cat_idr
A: Type a, b: A
forall (a0a' : a $-> b) (f : a0 $-> a'),
cat_idr a' $o fmap (cat_precomp b (Id a)) f $==
fmap idmap f $o cat_idr a0
A: Type a, b: A p, q: a $-> b h: p $-> q
cat_idr q $o fmap (cat_precomp b (Id a)) h $==
fmap idmap h $o cat_idr p
A: Type a, b: A p, q: a $-> b h: p $-> q
(cat_idr p)^ @
(cat_idr q $o fmap (cat_precomp b (Id a)) h) =
fmap idmap h
A: Type a, b: A p, q: a $-> b h: p $-> q
((cat_idr p)^ @ fmap (cat_precomp b (Id a)) h) @
cat_idr q = fmap idmap h
exact (whiskerL_1p h).
A: Type
forall (abcde : A) (f : a $-> b) (g : b $-> c)
(h : c $-> d) (k : d $-> e),
k $@L cat_assoc f g h $o cat_assoc f (h $o g) k $o
cat_assoc g h k $@R f $==
cat_assoc (g $o f) h k $o cat_assoc f g (k $o h)
A: Type a, b, c, d, e: A p: a $-> b q: b $-> c r: c $-> d s: d $-> e
s $@L cat_assoc p q r $o cat_assoc p (r $o q) s $o
cat_assoc q r s $@R p $==
cat_assoc (q $o p) r s $o cat_assoc p q (s $o r)
A: Type a, b, c, d, e: A p: a $-> b q: b $-> c r: c $-> d s: d $-> e
((cat_assoc q r s $@R p) @ cat_assoc p (r $o q) s) @
(s $@L cat_assoc p q r) =
cat_assoc (q $o p) r s $o cat_assoc p q (s $o r)
exact (pentagon p q r s).
A: Type
forall (abc : A) (f : a $-> b) (g : b $-> c),
g $@L cat_idl f $o cat_assoc f (Id b) g $==
cat_idr g $@R f
A: Type a, b, c: A p: a $-> b q: b $-> c
q $@L cat_idl p $o cat_assoc p (Id b) q $==
cat_idr q $@R p