-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Yoneda lemma using 0-groupoids #1745
Changes from all commits
f3a2f1d
88412cb
b85c246
c3d5620
b4764e7
da850fb
2569d62
07c8b16
8341715
40c6441
7367f8a
7634508
c374bf4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,7 @@ Declare Scope wc_iso_scope. | |
|
||
(** * Equivalences in wild categories *) | ||
|
||
(** We could define equivalences in any wild 2-category as bi-invertible maps, or in a wild 3-category as half-adjoint equivalences. However, in concrete cases there is often an equivalent definition of equivalences that we want to use instead, and the important property we need is that it's logically equivalent to (quasi-)isomorphism. *) | ||
(** We could define equivalences in any wild 1-category as bi-invertible maps, or in a wild 2-category as half-adjoint equivalences. However, in concrete cases there is often an equivalent definition of equivalences that we want to use instead, and the important property we need is that it's logically equivalent to (quasi-)isomorphism. In [cat_hasequivs] below, we show that bi-invertible maps do provide a [HasEquivs] structure for any wild 1-category. *) | ||
|
||
Class HasEquivs (A : Type) `{Is1Cat A} := | ||
{ | ||
|
@@ -422,3 +422,62 @@ Proof. | |
refine (_ $@L _). | ||
exact ((tex z).2 _). | ||
Defined. | ||
|
||
(** * There is a default notion of equivalence for a 1-category, namely bi-invertibility. *) | ||
|
||
(** We do not use the half-adjoint definition, since we can't prove adjointification for that definition. *) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. When we copy-paste the adjointification proof for Type, I'm curious to see what exactly is stopping us from having it for the arbitrary case. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The claim is that a complicated composite of 2-cells is equal to another 2-cell. The proof uses associativity of 2-cell composition, that inverses act as inverses, and many similar things. But in a 1-category we assume nothing about the operations on the 2-cells. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jdchristensen I would still be surprised to see adjointification work when we have (2(,1))-cats. |
||
|
||
Class Cat_IsBiInv {A} `{Is1Cat A} {x y : A} (f : x $-> y) := { | ||
cat_equiv_inv : y $-> x; | ||
cat_eisretr : f $o cat_equiv_inv $== Id y; | ||
cat_equiv_inv' : y $-> x; | ||
cat_eissect' : cat_equiv_inv' $o f $== Id x; | ||
}. | ||
|
||
Arguments cat_equiv_inv {A}%type_scope { _ _ _ _ x y} f {_}. | ||
Arguments cat_eisretr {A}%type_scope { _ _ _ _ x y} f {_}. | ||
Arguments cat_equiv_inv' {A}%type_scope { _ _ _ _ x y} f {_}. | ||
Arguments cat_eissect' {A}%type_scope { _ _ _ _ x y} f {_}. | ||
|
||
Arguments Build_Cat_IsBiInv {A}%type_scope {_ _ _ _ x y f} cat_equiv_inv cat_eisretr cat_equiv_inv' cat_eissect'. | ||
|
||
Record Cat_BiInv A `{Is1Cat A} (x y : A) := { | ||
cat_equiv_fun :> x $-> y; | ||
cat_equiv_isequiv : Cat_IsBiInv cat_equiv_fun; | ||
}. | ||
|
||
Global Existing Instance cat_equiv_isequiv. | ||
|
||
(** The two inverses are necessarily homotopic. *) | ||
Definition cat_inverses_homotopic {A} `{Is1Cat A} {x y : A} (f : x $-> y) {bif : Cat_IsBiInv f} | ||
: cat_equiv_inv f $== cat_equiv_inv' f. | ||
Proof. | ||
refine ((cat_idl _)^$ $@ _). | ||
refine (cat_prewhisker (cat_eissect' f)^$ _ $@ _). | ||
refine (cat_assoc _ _ _ $@ _). | ||
refine (cat_postwhisker _ (cat_eisretr f) $@ _). | ||
apply cat_idr. | ||
Defined. | ||
|
||
(** Therefore we can prove [eissect] for the first inverse as well. *) | ||
Definition cat_eissect {A} `{Is1Cat A} {x y : A} (f : x $-> y) {bif : Cat_IsBiInv f} | ||
: cat_equiv_inv f $o f $== Id x | ||
:= (cat_inverses_homotopic f $@R f) $@ cat_eissect' f. | ||
|
||
(** This shows that any 1-category satisfies [HasEquivs]. We do not make it an instance, since we may want to use a different [HasEquivs] structure in particular cases. *) | ||
Definition cat_hasequivs A `{Is1Cat A} : HasEquivs A. | ||
Proof. | ||
srapply Build_HasEquivs; intros x y. | ||
1: exact (Cat_BiInv _ x y). | ||
all:intros f; cbn beta in *. | ||
- exact (Cat_IsBiInv f). | ||
- exact f. | ||
- exact _. | ||
- apply Build_Cat_BiInv. | ||
- intros; reflexivity. | ||
- exact (cat_equiv_inv f). | ||
- apply cat_eissect. | ||
- apply cat_eisretr. | ||
- intros g r s. | ||
exact (Build_Cat_IsBiInv g r g s). | ||
Defined. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2
and3
changed to1
and2
here, since the library convention is that a wild 1-category has 2-cells.