Skip to content

Instantly share code, notes, and snippets.

@FrozenWinters
Last active July 27, 2022 16:08
Show Gist options
  • Select an option

  • Save FrozenWinters/481dd62c4e26d1e6859c514c7aea1dc7 to your computer and use it in GitHub Desktop.

Select an option

Save FrozenWinters/481dd62c4e26d1e6859c514c7aea1dc7 to your computer and use it in GitHub Desktop.
Dependent Multicategories (WIP)
{-# 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