Last active
July 27, 2022 16:08
-
-
Save FrozenWinters/481dd62c4e26d1e6859c514c7aea1dc7 to your computer and use it in GitHub Desktop.
Dependent Multicategories (WIP)
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 --guardedness #-} | |
| module dep where | |
| open import Agda.Primitive using (Level; lzero; lsuc; _โ_) public | |
| open import Cubical.Core.Everything public | |
| open import Cubical.Foundations.Everything renaming (cong to ap) public | |
| private | |
| variable | |
| โ โโ โโ โโ โโ : Level | |
| record TyStr โ : Type (lsuc โ) where | |
| coinductive | |
| field | |
| ๐ก๐ฆ : Type โ | |
| ๐๐ฅ : ๐ก๐ฆ โ TyStr โ | |
| open TyStr public | |
| data ๐ถ๐ก๐ฅ (๐ฏ : TyStr โ) : Type โ | |
| ๐๐ฅ๐ : (๐ฏ : TyStr โ) โ ๐ถ๐ก๐ฅ ๐ฏ โ TyStr โ | |
| infixl 20 _โน_ | |
| data ๐ถ๐ก๐ฅ ๐ฏ where | |
| โ : ๐ถ๐ก๐ฅ ๐ฏ | |
| _โน_ : (ฮ : ๐ถ๐ก๐ฅ ๐ฏ) โ ๐ก๐ฆ (๐๐ฅ๐ ๐ฏ ฮ) โ ๐ถ๐ก๐ฅ ๐ฏ | |
| ๐๐ฅ๐ ๐ฏ โ = ๐ฏ | |
| ๐๐ฅ๐ ๐ฏ (ฮ โน A) = ๐๐ฅ (๐๐ฅ๐ ๐ฏ ฮ) A | |
| record TyMor (๐ฏ : TyStr โโ) (๐ฎ : TyStr โโ) : Type (โโ โ โโ) where | |
| coinductive | |
| field | |
| ๐๐ข๐ : ๐ก๐ฆ ๐ฏ โ ๐ก๐ฆ ๐ฎ | |
| ๐ข๐ : (A : ๐ก๐ฆ ๐ฏ) โ TyMor (๐๐ฅ ๐ฏ A) (๐๐ฅ ๐ฎ (๐๐ข๐ A)) | |
| open TyMor | |
| infixl 20 _โTyMor_ | |
| _โTyMor_ : {๐ฏ : TyStr โโ} {๐ฎ : TyStr โโ} {โ : TyStr โโ} โ | |
| TyMor ๐ฎ โ โ TyMor ๐ฏ ๐ฎ โ TyMor ๐ฏ โ | |
| ๐๐ข๐ (F โTyMor G) = ๐๐ข๐ F โ ๐๐ข๐ G | |
| ๐ข๐ (F โTyMor G) A = ๐ข๐ F (๐๐ข๐ G A) โTyMor ๐ข๐ G A | |
| idTyMor : (๐ฏ : TyStr โ) โ TyMor ๐ฏ ๐ฏ | |
| ๐๐ข๐ (idTyMor ๐ฏ) A = A | |
| ๐ข๐ (idTyMor ๐ฏ) A = idTyMor (๐๐ฅ ๐ฏ A) | |
| record ElStr (๐ฏ : TyStr โโ) โโ : Type (โโ โ (lsuc โโ)) where | |
| field | |
| ๐๐ : ๐ก๐ฆ ๐ฏ โ Type โโ | |
| ๐ โ : {A : ๐ก๐ฆ ๐ฏ} โ ๐๐ A โ TyMor (๐๐ฅ ๐ฏ A) ๐ฏ | |
| open ElStr | |
| data ๐ธ๐๐ {๐ฏโ : TyStr โโ} {๐ฏโ : TyStr โโ} (๐ : TyMor ๐ฏโ ๐ฏโ) (โฐ : ElStr ๐ฏโ โโ) : ๐ถ๐ก๐ฅ ๐ฏโ โ Type (โโ โ โโ) | |
| ๐ โ๐ : {๐ฏโ : TyStr โโ} {๐ฏโ : TyStr โโ} (๐ : TyMor ๐ฏโ ๐ฏโ) (โฐ : ElStr ๐ฏโ โโ) {ฮ : ๐ถ๐ก๐ฅ ๐ฏโ} โ ๐ธ๐๐ ๐ โฐ ฮ โ TyMor (๐๐ฅ๐ ๐ฏโ ฮ) ๐ฏโ | |
| infixl 20 _โ_ | |
| data ๐ธ๐๐ {๐ฏโ = ๐ฏโ} {๐ฏโ} ๐ โฐ where | |
| ! : ๐ธ๐๐ ๐ โฐ โ | |
| _โ_ : {ฮ : ๐ถ๐ก๐ฅ ๐ฏโ} {A : ๐ก๐ฆ (๐๐ฅ๐ ๐ฏโ ฮ)} (๐s : ๐ธ๐๐ ๐ โฐ ฮ) โ ๐๐ โฐ (๐๐ข๐ (๐ โ๐ ๐ โฐ ๐s) A) โ ๐ธ๐๐ ๐ โฐ (ฮ โน A) | |
| ๐ โ๐ ๐ โฐ ! = ๐ | |
| ๐ โ๐ ๐ โฐ {ฮ โน A} (๐s โ ๐) = ๐ โ โฐ ๐ โTyMor ๐ข๐ (๐ โ๐ ๐ โฐ ๐s) A | |
| record ElMor {๐ฏ ๐ฏโ ๐ฏโ : TyStr โโ} (๐ : TyMor ๐ฏ ๐ฏโ) (๐ : TyMor ๐ฏ ๐ฏโ) | |
| (โฐโ : ElStr ๐ฏโ โโ) (โฐโ : ElStr ๐ฏโ โโ) : Type (โโ โ โโ) where | |
| coinductive | |
| field | |
| ๐๐ข๐โ : {A : ๐ก๐ฆ ๐ฏ} โ ๐๐ โฐโ (๐๐ข๐ ๐ A) โ ๐๐ โฐโ (๐๐ข๐ ๐ A) | |
| ๐ข๐โ : {A : ๐ก๐ฆ ๐ฏ} (t : ๐๐ โฐโ (๐๐ข๐ ๐ A)) โ ElMor (๐ โ โฐโ t โTyMor ๐ข๐ ๐ A) (๐ โ โฐโ (๐๐ข๐โ t) โTyMor ๐ข๐ ๐ A) โฐโ โฐโ | |
| open ElMor | |
| idElMor : {๐ฏโ ๐ฏโ : TyStr โโ} (๐ : TyMor ๐ฏโ ๐ฏโ) (โฐ : ElStr ๐ฏโ โโ) โ ElMor ๐ ๐ โฐ โฐ | |
| ๐๐ข๐โ (idElMor ๐ โฐ) t = t | |
| ๐ข๐โ (idElMor ๐ โฐ) {A} t = idElMor (๐ โ โฐ t โTyMor ๐ข๐ ๐ A) โฐ | |
| _โElMor_ : {๐ฏ ๐ฏโ ๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏ ๐ฏโ} {๐ : TyMor ๐ฏ ๐ฏโ} {โ : TyMor ๐ฏ ๐ฏโ} | |
| {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} โ | |
| ElMor ๐ โ โฐโ โฐโ โ ElMor ๐ ๐ โฐโ โฐโ โ ElMor ๐ โ โฐโ โฐโ | |
| ๐๐ข๐โ (๐ป โElMor โ) = ๐๐ข๐โ ๐ป โ ๐๐ข๐โ โ | |
| ๐ข๐โ (๐ป โElMor โ) t = ๐ข๐โ ๐ป (๐๐ข๐โ โ t) โElMor ๐ข๐โ โ t | |
| map๐ธ๐๐ : {๐ฏ ๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏ ๐ฏโ} {๐ : TyMor ๐ฏ ๐ฏโ} {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} | |
| (๐ป : ElMor ๐ ๐ โฐโ โฐโ) {ฮ : ๐ถ๐ก๐ฅ ๐ฏ} โ ๐ธ๐๐ ๐ โฐโ ฮ โ ๐ธ๐๐ ๐ โฐโ ฮ | |
| ๐ข๐๐ โ : {๐ฏ ๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏ ๐ฏโ} {๐ : TyMor ๐ฏ ๐ฏโ} {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} | |
| (๐ป : ElMor ๐ ๐ โฐโ โฐโ) {ฮ : ๐ถ๐ก๐ฅ ๐ฏ} (๐s : ๐ธ๐๐ ๐ โฐโ ฮ) โ ElMor (๐ โ๐ ๐ โฐโ ๐s) (๐ โ๐ ๐ โฐโ (map๐ธ๐๐ ๐ป ๐s)) โฐโ โฐโ | |
| map๐ธ๐๐ ๐ป {ฮ = โ } ! = ! | |
| map๐ธ๐๐ ๐ป {ฮ = ฮ โน A} (๐s โ ๐) = map๐ธ๐๐ ๐ป ๐s โ ๐๐ข๐โ (๐ข๐๐ โ ๐ป ๐s) ๐ | |
| ๐ข๐๐ โ ๐ป {ฮ = โ } ! = ๐ป | |
| ๐ข๐๐ โ ๐ป {ฮ = ฮ โน A} (๐s โ ๐) = ๐ข๐โ (๐ข๐๐ โ ๐ป ๐s) ๐ | |
| map๐ธ๐๐ Id : {๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏโ ๐ฏโ} {โฐ : ElStr ๐ฏโ โโ} {ฮ : ๐ถ๐ก๐ฅ ๐ฏโ} | |
| (๐s : ๐ธ๐๐ ๐ โฐ ฮ) โ map๐ธ๐๐ (idElMor ๐ โฐ) ๐s โก ๐s | |
| ๐ข๐๐ โId : {๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏโ ๐ฏโ} {โฐ : ElStr ๐ฏโ โโ} {ฮ : ๐ถ๐ก๐ฅ ๐ฏโ} (๐s : ๐ธ๐๐ ๐ โฐ ฮ) โ | |
| PathP (ฮป i โ ElMor (๐ โ๐ ๐ โฐ ๐s) (๐ โ๐ ๐ โฐ (map๐ธ๐๐ Id ๐s i)) โฐ โฐ) | |
| (๐ข๐๐ โ (idElMor ๐ โฐ) ๐s) (idElMor (๐ โ๐ ๐ โฐ ๐s) โฐ) | |
| map๐ธ๐๐ Id ! = refl | |
| map๐ธ๐๐ Id (๐s โ ๐) i = map๐ธ๐๐ Id ๐s i โ ๐๐ข๐โ (๐ข๐๐ โId ๐s i) ๐ | |
| ๐ข๐๐ โId ! = refl | |
| ๐ข๐๐ โId(๐s โ ๐) i = ๐ข๐โ (๐ข๐๐ โId ๐s i) ๐ | |
| map๐ธ๐๐ ยฒ : {๐ฏ ๐ฏโ ๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏ ๐ฏโ} {๐ : TyMor ๐ฏ ๐ฏโ} {โ : TyMor ๐ฏ ๐ฏโ} | |
| {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} {ฮ : ๐ถ๐ก๐ฅ ๐ฏ} | |
| (๐ป : ElMor ๐ โ โฐโ โฐโ) (โ : ElMor ๐ ๐ โฐโ โฐโ) (๐s : ๐ธ๐๐ ๐ โฐโ ฮ) โ | |
| map๐ธ๐๐ (๐ป โElMor โ) ๐s โก map๐ธ๐๐ ๐ป (map๐ธ๐๐ โ ๐s) | |
| ๐ข๐๐ โโ : {๐ฏ ๐ฏโ ๐ฏโ ๐ฏโ : TyStr โโ} {๐ : TyMor ๐ฏ ๐ฏโ} {๐ : TyMor ๐ฏ ๐ฏโ} {โ : TyMor ๐ฏ ๐ฏโ} | |
| {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} {โฐโ : ElStr ๐ฏโ โโ} {ฮ : ๐ถ๐ก๐ฅ ๐ฏ} | |
| (๐ป : ElMor ๐ โ โฐโ โฐโ) (โ : ElMor ๐ ๐ โฐโ โฐโ) (๐s : ๐ธ๐๐ ๐ โฐโ ฮ) โ | |
| PathP (ฮป i โ ElMor (๐ โ๐ ๐ โฐโ ๐s) (๐ โ๐ โ โฐโ (map๐ธ๐๐ ยฒ ๐ป โ ๐s i)) โฐโ โฐโ) | |
| (๐ข๐๐ โ (๐ป โElMor โ) ๐s) | |
| (๐ข๐๐ โ ๐ป (map๐ธ๐๐ โ ๐s) โElMor ๐ข๐๐ โ โ ๐s) | |
| map๐ธ๐๐ ยฒ ๐ป โ ! = refl | |
| map๐ธ๐๐ ยฒ ๐ป โ (๐s โ ๐) i = map๐ธ๐๐ ยฒ ๐ป โ ๐s i โ ๐๐ข๐โ (๐ข๐๐ โโ ๐ป โ ๐s i) ๐ | |
| ๐ข๐๐ โโ ๐ป โ ! = refl | |
| ๐ข๐๐ โโ ๐ป โ (๐s โ ๐) i = ๐ข๐โ (๐ข๐๐ โโ ๐ป โ ๐s i) ๐ | |
| record WkStr (๐ฏ : TyStr โ) : Type โ where | |
| coinductive | |
| field | |
| ๐ค๐ : (A : ๐ก๐ฆ ๐ฏ) โ TyMor ๐ฏ (๐๐ฅ ๐ฏ A) | |
| ๐๐๐ฅ๐ก : (A : ๐ก๐ฆ ๐ฏ) โ WkStr (๐๐ฅ ๐ฏ A) | |
| open WkStr | |
| ๐๐๐ฅ๐ก๐ : {๐ฏ : TyStr โ} โ WkStr ๐ฏ โ (ฮ : ๐ถ๐ก๐ฅ ๐ฏ) โ WkStr (๐๐ฅ๐ ๐ฏ ฮ) | |
| ๐๐๐ฅ๐ก๐ ๐ฒ โ = ๐ฒ | |
| ๐๐๐ฅ๐ก๐ ๐ฒ (ฮ โน A) = ๐๐๐ฅ๐ก (๐๐๐ฅ๐ก๐ ๐ฒ ฮ) A | |
| ๐ค๐๐ : {๐ฏ : TyStr โ} โ WkStr ๐ฏ โ (ฮ : ๐ถ๐ก๐ฅ ๐ฏ) โ TyMor ๐ฏ (๐๐ฅ๐ ๐ฏ ฮ) | |
| ๐ค๐๐ {๐ฏ = ๐ฏ} ๐ฒ โ = idTyMor ๐ฏ | |
| ๐ค๐๐ ๐ฒ (ฮ โน A) = ๐ค๐ (๐๐๐ฅ๐ก๐ ๐ฒ ฮ) A โTyMor ๐ค๐๐ ๐ฒ ฮ | |
| record Contextual โโ โโ : Type (lsuc (โโ โ โโ)) where | |
| field | |
| ๐ฏ : TyStr โโ | |
| ctx = ๐ถ๐ก๐ฅ ๐ฏ | |
| field | |
| โณ : (ฮ : ๐ถ๐ก๐ฅ ๐ฏ) โ ElStr (๐๐ฅ๐ ๐ฏ ฮ) โโ | |
| ๐ฒ : WkStr ๐ฏ | |
| tms : (ฮ ฮ : ctx) โ Type (โโ โ โโ) | |
| tms ฮ ฮ = ๐ธ๐๐ (๐ค๐๐ ๐ฒ ฮ) (โณ ฮ) ฮ | |
| field | |
| sub : {ฮ ฮ : ctx} (ฯ : tms ฮ ฮ) โ ElMor (๐ค๐๐ ๐ฒ ฮ) (๐ค๐๐ ๐ฒ ฮ) (โณ ฮ) (โณ ฮ) | |
| _โ_ : {ฮ ฮ ฮฃ : ctx} โ tms ฮ ฮฃ โ tms ฮ ฮ โ tms ฮ ฮฃ | |
| ฯ โ ฯ = map๐ธ๐๐ (sub ฯ) ฯ | |
| field | |
| ๐พ๐น : (ฮ : ctx) โ tms ฮ ฮ | |
| ๐พ๐นL : {ฮ ฮ : ctx} (ฯ : tms ฮ ฮ) โ ๐พ๐น ฮ โ ฯ โก ฯ | |
| sub๐พ๐น : {ฮ : ctx} โ sub (๐พ๐น ฮ) โก idElMor (๐ค๐๐ ๐ฒ ฮ) (โณ ฮ) | |
| subโ : {ฮ ฮ ฮฃ : ctx} (ฯ : tms ฮ ฮฃ) (ฯ : tms ฮ ฮ) โ sub (ฯ โ ฯ) โก sub ฯ โElMor sub ฯ | |
| ๐พ๐นR : {ฮ ฮ : ctx} (ฯ : tms ฮ ฮ) โ ฯ โ ๐พ๐น ฮ โก ฯ | |
| ๐พ๐นR {ฮ} ฯ = | |
| map๐ธ๐๐ (sub (๐พ๐น ฮ)) ฯ | |
| โกโจ (ฮป i โ map๐ธ๐๐ (sub๐พ๐น i) ฯ) โฉ | |
| map๐ธ๐๐ (idElMor (๐ค๐๐ ๐ฒ ฮ) (โณ ฮ)) ฯ | |
| โกโจ map๐ธ๐๐ Id ฯ โฉ | |
| ฯ | |
| โ | |
| โAssoc : {ฮ ฮ ฮฃ ฮฉ : ctx} (ฯ : tms ฮฃ ฮฉ) (ฯ : tms ฮ ฮฃ) (ฮผ : tms ฮ ฮ) โ | |
| (ฯ โ ฯ) โ ฮผ โก ฯ โ (ฯ โ ฮผ) | |
| โAssoc ฯ ฯ ฮผ = | |
| map๐ธ๐๐ (sub ฮผ) (map๐ธ๐๐ (sub ฯ) ฯ) | |
| โกโจ map๐ธ๐๐ ยฒ (sub ฮผ) (sub ฯ) ฯ โปยน โฉ | |
| map๐ธ๐๐ (sub ฮผ โElMor sub ฯ) ฯ | |
| โกโจ (ฮป i โ map๐ธ๐๐ (subโ ฯ ฮผ (~ i)) ฯ) โฉ | |
| map๐ธ๐๐ (sub (ฯ โ ฮผ)) ฯ | |
| โ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment