Last active
March 13, 2023 21:29
-
-
Save FrozenWinters/1c708573c995486cff11c997aa9cb427 to your computer and use it in GitHub Desktop.
weak and strict 1-categories
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {-# OPTIONS --cubical #-} | |
| module weak-cat where | |
| open import Agda.Primitive using (Level; lzero; lsuc; _β_) public | |
| open import Cubical.Core.Everything public | |
| open import Cubical.Foundations.Everything public | |
| open import Cubical.Data.Sigma | |
| private | |
| variable | |
| ββ ββ ββ ββ : Level | |
| -- Weak 1-Category | |
| record WeakCat ββ ββ ββ : Type (lsuc (ββ β ββ β ββ)) where | |
| infixl 20 _βΎ_ | |
| field | |
| ππβ : Type ββ | |
| ππβ : ππβ β ππβ β Type ββ | |
| ππβ : {x y z : ππβ} β ππβ x y β ππβ x z β ππβ y z β Type ββ | |
| isProp-ππβ : {x y z : ππβ} (Ξ± : ππβ x y) (Ξ² : ππβ x z) | |
| (Ξ³ : ππβ y z) β isProp (ππβ Ξ± Ξ² Ξ³) | |
| -- horn filling says that ππβ behavess like equality | |
| -- inner horn comp | |
| ππβ-ππππΚΈ : {x y z w : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ x z} {Ξ³ : ππβ y z} | |
| (πβ : ππβ Ξ± Ξ² Ξ³) {Ξ΄ : ππβ x w} {Ξ΅ : ππβ y w} (πβ : ππβ Ξ± Ξ΄ Ξ΅) | |
| {ΞΆ : ππβ z w} (πβ : ππβ Ξ³ Ξ΅ ΞΆ) β ππβ Ξ² Ξ΄ ΞΆ | |
| ππβ-ππππαΆ» : {x y z w : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ x z} {Ξ³ : ππβ y z} | |
| (πβ : ππβ Ξ± Ξ² Ξ³) {Ξ΄ : ππβ x w} {Ξ΅ : ππβ y w} | |
| {ΞΆ : ππβ z w} (πβ : ππβ Ξ² Ξ΄ ΞΆ) (πβ : ππβ Ξ³ Ξ΅ ΞΆ) β ππβ Ξ± Ξ΄ Ξ΅ | |
| -- outer horn comp [not sure if needed?] | |
| ππβ-ππππΛ£ : {x y z w : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ x z} {Ξ³ : ππβ y z} | |
| {Ξ΄ : ππβ x w} {Ξ΅ : ππβ y w} (πβ : ππβ Ξ± Ξ΄ Ξ΅) {ΞΆ : ππβ z w} | |
| (πβ : ππβ Ξ² Ξ΄ ΞΆ) (πβ : ππβ Ξ³ Ξ΅ ΞΆ) β ππβ Ξ± Ξ² Ξ³ | |
| ππβ-ππππΚ· : {x y z w : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ x z} {Ξ³ : ππβ y z} | |
| (πβ : ππβ Ξ± Ξ² Ξ³) {Ξ΄ : ππβ x w} {Ξ΅ : ππβ y w} (πβ : ππβ Ξ± Ξ΄ Ξ΅) | |
| {ΞΆ : ππβ z w} (πβ : ππβ Ξ² Ξ΄ ΞΆ) β ππβ Ξ³ Ξ΅ ΞΆ | |
| _βΎ_ : {x y z : ππβ} β ππβ x y β ππβ y z β ππβ x z | |
| ππππ : {x y z : ππβ} (Ξ± : ππβ x y) (Ξ² : ππβ y z) β ππβ Ξ± (Ξ± βΎ Ξ²) Ξ² | |
| ππ : (x : ππβ) β ππβ x x | |
| Οβ : {x y : ππβ} (Ξ± : ππβ x y) β ππβ Ξ± Ξ± (ππ y) | |
| Οβ : {x y : ππβ} (Ξ± : ππβ x y) β ππβ (ππ x) Ξ± Ξ± | |
| ππ π ππΒΉ : {x y z w : ππβ} (Ξ± : ππβ x y) (Ξ² : ππβ y z) (Ξ³ : ππβ z w) β | |
| ππβ (Ξ± βΎ Ξ²) (Ξ± βΎ (Ξ² βΎ Ξ³)) Ξ³ | |
| ππ π ππΒΉ Ξ± Ξ² Ξ³ = ππβ-ππππΚΈ (ππππ Ξ± Ξ²) (ππππ Ξ± (Ξ²Β βΎ Ξ³)) (ππππ Ξ² Ξ³) | |
| ππ π ππΒ² : {x y z w : ππβ} (Ξ± : ππβ x y) (Ξ² : ππβ y z) (Ξ³ : ππβ z w) β | |
| ππβ Ξ± ((Ξ± βΎ Ξ²) βΎ Ξ³) (Ξ² βΎ Ξ³) | |
| ππ π ππΒ² Ξ± Ξ² Ξ³ = ππβ-ππππαΆ» (ππππ Ξ± Ξ²) (ππππ (Ξ± βΎ Ξ²) Ξ³) (ππππ Ξ² Ξ³) | |
| ππ π : {x y : ππβ} β ππβ x y β Type (ββ β ββ) | |
| ππ π {x} {y} Ξ± = Ξ£ (ππβ y x) (Ξ» Ξ² β ππβ Ξ± (ππ x) Ξ² Γ ππβ Ξ² (ππ y) Ξ±) | |
| ππππ-ππ π : {x y z : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ y z} {Ξ³ : ππβ x z} β | |
| ππβ Ξ± Ξ³ Ξ² β ππ π Ξ± β ππ π Ξ² β ππ π Ξ³ | |
| ππππ-ππ π π p q = | |
| fst q βΎ fst p , | |
| ππβ-ππππΚΈ π (fst (snd p)) | |
| (ππβ-ππππαΆ» (fst (snd q)) (Οβ (fst p)) (ππππ (fst q) (fst p))) , | |
| ππβ-ππππαΆ» (ππβ-ππππΚΈ (ππππ (fst q) (fst p)) (Οβ (fst q)) (snd (snd p))) | |
| (snd (snd q)) π | |
| ππ-ππ π : (x : ππβ) β ππ π (ππ x) | |
| ππ-ππ π x = ππ x , Οβ (ππ x) , Οβ (ππ x) | |
| βΎ-ππ π : {x y z : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ y z} β ππ π Ξ± β ππ π Ξ² β ππ π (Ξ± βΎ Ξ²) | |
| βΎ-ππ π {Ξ± = Ξ±} {Ξ²} p q = ππππ-ππ π (ππππ Ξ± Ξ²) p q | |
| -- Strict 1-Category | |
| record Cat ββ ββ : Type (lsuc (ββ β ββ)) where | |
| field | |
| ππ : Type ββ | |
| πππ : ππ β ππ β Type ββ | |
| ππππ : {x y z : ππ} β πππ x y β πππ y z β πππ x z | |
| ππ π ππ : {x y z w : ππ} (Ξ± : πππ x y) (Ξ² : πππ y z) (Ξ³ : πππ z w) β | |
| ππππ (ππππ Ξ± Ξ²) Ξ³ β‘ ππππ Ξ± (ππππ Ξ² Ξ³) | |
| ππ : (x : ππ) β πππ x x | |
| ππ-L : {x y : ππ} (Ξ± : πππ x y) β ππππ (ππ x) Ξ± β‘ Ξ± | |
| ππ-R : {x y : ππ} (Ξ± : πππ x y) β ππππ Ξ± (ππ y) β‘ Ξ± | |
| -- Strictification | |
| module _ (π : WeakCat ββ ββ ββ) where | |
| open WeakCat π | |
| data RezkMor : (x y : ππβ) β Type (ββ β ββ β ββ) where | |
| Rβ : {x y : ππβ} β ππβ x y β RezkMor x y | |
| Rβ : {x y z : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ y z} {Ξ³ : ππβ x z} | |
| (π : ππβ Ξ± Ξ³ Ξ²) β Rβ (Ξ± βΎ Ξ²) β‘ Rβ Ξ³ | |
| R-trunc : {x y : ππβ} β isSet (RezkMor x y) | |
| compR : {x y z : ππβ} β RezkMor x y β RezkMor y z β RezkMor x z | |
| compR (Rβ Ξ±) (Rβ Ξ²) = Rβ (Ξ± βΎ Ξ²) | |
| compR (Rβ Ξ±) (Rβ {Ξ± = Ξ²} {Ξ³} {Ξ΄} π i) = | |
| Rβ (ππβ-ππππαΆ» (ππππ Ξ± Ξ²) (ππβ-ππππΚΈ (ππππ Ξ± Ξ²) (ππππ Ξ± Ξ΄) π) (ππππ Ξ² Ξ³)) i | |
| compR (Rβ Ξ±) (R-trunc Ξ² Ξ³ p q i j) = | |
| R-trunc (compR (Rβ Ξ±) Ξ²) (compR (Rβ Ξ±) Ξ³) | |
| (Ξ» k β compR (Rβ Ξ±) (p k)) (Ξ» k β compR (Rβ Ξ±) (q k)) i j | |
| compR (Rβ {Ξ± = Ξ±} {Ξ²} {Ξ³} π i) (Rβ Ξ΄) = | |
| Rβ (ππβ-ππππΚΈ (ππππ Ξ± Ξ²) (ππβ-ππππαΆ» π (ππππ Ξ³ Ξ΄) (ππππ Ξ² Ξ΄)) (ππππ Ξ² Ξ΄)) i | |
| compR (Rβ {Ξ± = Ξ±} {Ξ²} {Ξ³} π i) (Rβ {Ξ± = Ξ΄} {Ξ΅} {ΞΆ} π j) = | |
| isSetβSquareP | |
| (Ξ» i j β R-trunc) | |
| (Ξ» k β compR (Rβ (Ξ± βΎ Ξ²)) (Rβ π k)) | |
| (Ξ» k β compR (Rβ Ξ³) (Rβ π k)) | |
| (Ξ» k β compR (Rβ π k) (Rβ (Ξ΄ βΎ Ξ΅))) | |
| (Ξ» k β compR (Rβ π k) (Rβ ΞΆ)) i j | |
| compR (Rβ π i) (R-trunc Ξ± Ξ² p q j k) = | |
| R-trunc (compR (Rβ π i) Ξ±) (compR (Rβ π i) Ξ²) | |
| (Ξ» k β compR (Rβ π i) (p k)) (Ξ» k β compR (Rβ π i) (q k)) j k | |
| compR (R-trunc Ξ± Ξ² p q i j) Ξ³ = | |
| R-trunc (compR Ξ± Ξ³) (compR Ξ² Ξ³) | |
| (Ξ» k β compR (p k) Ξ³) (Ξ» k β compR (q k) Ξ³) i j | |
| -- termination justified by Astra's theory of CW-HITs | |
| -- can be avoided by doing a further case split | |
| {-# TERMINATING #-} | |
| assocR : {x y z w : ππβ} (Ξ± : RezkMor x y) (Ξ² : RezkMor y z) (Ξ³ : RezkMor z w) β | |
| compR (compR Ξ± Ξ²) Ξ³ β‘ compR Ξ± (compR Ξ² Ξ³) | |
| assocR (Rβ Ξ±) (Rβ Ξ²) (Rβ Ξ³) = Rβ (ππ π ππΒΉ Ξ± Ξ² Ξ³) | |
| assocR (Rβ Ξ±) (Rβ Ξ²) (Rβ {Ξ± = Ξ³} {Ξ΄} {Ξ΅} π j) = | |
| isSetβSquareP | |
| (Ξ» i j β R-trunc) | |
| (Rβ (ππ π ππΒΉ Ξ± Ξ² (Ξ³ βΎ Ξ΄))) | |
| (Rβ (ππ π ππΒΉ Ξ± Ξ² Ξ΅)) | |
| (Ξ» k β compR (compR (Rβ Ξ±) (Rβ Ξ²)) (Rβ π k)) | |
| (Ξ» k β compR (Rβ Ξ±) (compR (Rβ Ξ²) (Rβ π k))) j | |
| assocR (Rβ Ξ±) (Rβ Ξ²) (R-trunc Ξ³ Ξ΄ p q j k) i = | |
| R-trunc _ _ (Ξ» l β assocR (Rβ Ξ±) (Rβ Ξ²) (p l) i) (Ξ» l β assocR (Rβ Ξ±) (Rβ Ξ²) (q l) i) j k | |
| assocR (Rβ Ξ±) (Rβ {Ξ± = Ξ²} {Ξ³} {Ξ΄} π j) Ξ΅ i = | |
| isSetβSquareP | |
| (Ξ» i j β R-trunc) | |
| (assocR (Rβ Ξ±) (Rβ (Ξ² βΎ Ξ³)) Ξ΅) | |
| (assocR (Rβ Ξ±) (Rβ Ξ΄) Ξ΅) | |
| (Ξ» k β compR (compR (Rβ Ξ±) (Rβ π k)) Ξ΅) | |
| (Ξ» k β compR (Rβ Ξ±) (compR (Rβ π k) Ξ΅)) j i | |
| assocR (Rβ Ξ±) (R-trunc Ξ² Ξ³ p q j k) Ξ΄ i = | |
| R-trunc _ _ (Ξ» l β assocR (Rβ Ξ±) (p l) Ξ΄ i) (Ξ» l β assocR (Rβ Ξ±) (q l) Ξ΄ i) j k | |
| assocR (Rβ {Ξ± = Ξ±} {Ξ²} {Ξ³} π j) Ξ΄ Ξ΅ = | |
| isSetβSquareP | |
| (Ξ» i j β R-trunc) | |
| (assocR (Rβ (Ξ± βΎ Ξ²)) Ξ΄ Ξ΅) | |
| (assocR (Rβ Ξ³) Ξ΄ Ξ΅ ) | |
| (Ξ» k β compR (compR (Rβ π k) Ξ΄) Ξ΅) | |
| (Ξ» k β compR (Rβ π k) (compR Ξ΄ Ξ΅)) j | |
| assocR (R-trunc Ξ± Ξ² p q j k) Ξ³ Ξ΄ i = | |
| R-trunc _ _ (Ξ» l β assocR (p l) Ξ³ Ξ΄ i) (Ξ» l β assocR (q l) Ξ³ Ξ΄ i) j k | |
| completion : Cat ββ (ββ β ββ β ββ) | |
| Cat.ππ completion = ππβ | |
| Cat.πππ completion x y = RezkMor x y | |
| Cat.ππππ completion Ξ± Ξ² = compR Ξ± Ξ² | |
| Cat.ππ π ππ completion Ξ± Ξ² Ξ³ = assocR Ξ± Ξ² Ξ³ | |
| Cat.ππ completion x = Rβ (ππ x) | |
| Cat.ππ-L completion = {!!} | |
| Cat.ππ-R completion = {!!} | |
| -- Rezk completion on objects [not used] | |
| data RezkOb : Type (ββ β ββ β ββ) where | |
| Rβ : ππβ β RezkOb | |
| Rβ : {x y : ππβ} {Ξ± : ππβ x y} β ππ π Ξ± β Rβ x β‘ Rβ y | |
| Rβ : {x y z : ππβ} {Ξ± : ππβ x y} {Ξ² : ππβ y z} {Ξ³ : ππβ x z} | |
| (π : ππβ Ξ± Ξ³ Ξ²) (p : ππ π Ξ±) (q : ππ π Ξ²) β | |
| Rβ p β Rβ q β‘ Rβ (ππππ-ππ π π p q) | |
| R-trunc : isGroupoid RezkOb |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment