# Transitive globular types ```agda {-# OPTIONS --guardedness #-} module structured-types.transitive-globular-types where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels open import structured-types.globular-types ``` </details> ## Idea A {{#concept "transitive globular type" Agda=Transitive-Globular-Type}} is a [globular type](structured-types.globular-types.md) `A` [equipped](foundation.structure.md) with a binary operator ```text - * - : (𝑛+1)-Cell A y z → (𝑛+1)-Cell A x y → (𝑛+1)-Cell A x z ``` at every level $n$. **Note.** This is not established terminology and may change. ## Definition ### Transitivity structure on a globular type ```agda record is-transitive-globular-structure {l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A) : UU (l1 ⊔ l2) where coinductive field comp-1-cell-is-transitive-globular-structure : {x y z : A} → 1-cell-globular-structure G y z → 1-cell-globular-structure G x y → 1-cell-globular-structure G x z is-transitive-globular-structure-1-cell-is-transitive-globular-structure : (x y : A) → is-transitive-globular-structure ( globular-structure-1-cell-globular-structure G x y) open is-transitive-globular-structure public module _ {l1 l2 : Level} {A : UU l1} {G : globular-structure l2 A} (r : is-transitive-globular-structure G) where comp-2-cell-is-transitive-globular-structure : {x y : A} {f g h : 1-cell-globular-structure G x y} → 2-cell-globular-structure G g h → 2-cell-globular-structure G f g → 2-cell-globular-structure G f h comp-2-cell-is-transitive-globular-structure {x} {y} = comp-1-cell-is-transitive-globular-structure ( is-transitive-globular-structure-1-cell-is-transitive-globular-structure ( r) ( x) ( y)) is-transitive-globular-structure-2-cell-is-transitive-globular-structure : {x y : A} (f g : 1-cell-globular-structure G x y) → is-transitive-globular-structure ( globular-structure-2-cell-globular-structure G f g) is-transitive-globular-structure-2-cell-is-transitive-globular-structure { x} {y} = is-transitive-globular-structure-1-cell-is-transitive-globular-structure ( is-transitive-globular-structure-1-cell-is-transitive-globular-structure ( r) ( x) ( y)) comp-3-cell-is-transitive-globular-structure : {x y : A} {f g : 1-cell-globular-structure G x y} {H K L : 2-cell-globular-structure G f g} → 3-cell-globular-structure G K L → 3-cell-globular-structure G H K → 3-cell-globular-structure G H L comp-3-cell-is-transitive-globular-structure {x} {y} {f} {g} = comp-1-cell-is-transitive-globular-structure ( is-transitive-globular-structure-2-cell-is-transitive-globular-structure ( f) ( g)) ``` ### The type of transitive globular structures on a type ```agda transitive-globular-structure : {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2) transitive-globular-structure l2 A = Σ (globular-structure l2 A) (is-transitive-globular-structure) ``` ### The type of transitive globular types ```agda Transitive-Globular-Type : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) Transitive-Globular-Type l1 l2 = Σ (UU l1) (transitive-globular-structure l2) ``` ## Examples ### The transitive globular structure on a type given by its identity types ```agda is-transitive-globular-structure-Id : {l : Level} (A : UU l) → is-transitive-globular-structure (globular-structure-Id A) is-transitive-globular-structure-Id A = λ where .comp-1-cell-is-transitive-globular-structure p q → q ∙ p .is-transitive-globular-structure-1-cell-is-transitive-globular-structure x y → is-transitive-globular-structure-Id (x = y) transitive-globular-structure-Id : {l : Level} (A : UU l) → transitive-globular-structure l A transitive-globular-structure-Id A = ( globular-structure-Id A , is-transitive-globular-structure-Id A) ```