# Large globular types ```agda {-# OPTIONS --guardedness #-} module structured-types.large-globular-types where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.universe-levels open import structured-types.globular-types ``` </details> ## Idea A {{#concept "large globular type" Agda=Large-Globular-Type}} is a hierarchy of types indexed by universe levels, [equipped](foundation.structure.md) with a [large binary relation](foundation.large-binary-relations.md) valued in [globular types](structured-types.globular-types.md). Thus, a large globular type consists of a base hierarchy of types indexed by universe levels `A` called the _$0$-cells_, and for every pair of $0$-cells, a type of $1$-cells, and for every pair of $1$-cells a type of $2$-cells, and so on _ad infinitum_. For every pair of $n$-cells `s` and `t`, there is a type of $(n+1)$-cells _from `s` to `t`_, and we say the $(n+1)$-cells have _source_ `s` and _target_ `t`. The standard interpretation of the higher cells of a globular type is as arrows from their source to their target. For instance, given two $0$-cells `x` and `y`, two $1$-cells `f` and `g` from `x` to `y`, two $2$-cells `H` and `K` from `f` to `g`, and a $3$-cell `α` from `H` to `K`, a common depiction would be ```text f ------------- / // \\ \ / // α \\ ∨ x H|| ≡≡≡≡≡≡> ||K y. \ \\ // ∧ \ V V / ------------- g ``` ## Definitions ### The structure of a large globular type ```agda record large-globular-structure {α : Level → Level} (β : Level → Level → Level) (A : (l : Level) → UU (α l)) : UUω where field 1-cell-large-globular-structure : {l1 l2 : Level} (x : A l1) (y : A l2) → UU (β l1 l2) globular-structure-1-cell-large-globular-structure : {l1 l2 : Level} (x : A l1) (y : A l2) → globular-structure (β l1 l2) (1-cell-large-globular-structure x y) open large-globular-structure public ``` #### Iterated projections for large globular structures ```agda module _ {α : Level → Level} {β : Level → Level → Level} {A : (l : Level) → UU (α l)} (G : large-globular-structure β A) {l1 l2 : Level} {x : A l1} {y : A l2} (f g : 1-cell-large-globular-structure G x y) where 2-cell-large-globular-structure : UU (β l1 l2) 2-cell-large-globular-structure = 1-cell-globular-structure ( globular-structure-1-cell-large-globular-structure G x y) f g globular-structure-2-cell-large-globular-structure : globular-structure (β l1 l2) 2-cell-large-globular-structure globular-structure-2-cell-large-globular-structure = globular-structure-1-cell-globular-structure ( globular-structure-1-cell-large-globular-structure G x y) f g module _ {α : Level → Level} {β : Level → Level → Level} {A : (l : Level) → UU (α l)} (G : large-globular-structure β A) {l1 l2 : Level} {x : A l1} {y : A l2} {f g : 1-cell-large-globular-structure G x y} (p q : 2-cell-large-globular-structure G f g) where 3-cell-large-globular-structure : UU (β l1 l2) 3-cell-large-globular-structure = 1-cell-globular-structure ( globular-structure-2-cell-large-globular-structure G f g) p q globular-structure-3-cell-large-globular-structure : globular-structure (β l1 l2) 3-cell-large-globular-structure globular-structure-3-cell-large-globular-structure = globular-structure-1-cell-globular-structure ( globular-structure-2-cell-large-globular-structure G f g) p q module _ {α : Level → Level} {β : Level → Level → Level} {A : (l : Level) → UU (α l)} (G : large-globular-structure β A) {l1 l2 : Level} {x : A l1} {y : A l2} {f g : 1-cell-large-globular-structure G x y} {p q : 2-cell-large-globular-structure G f g} (H K : 3-cell-large-globular-structure G p q) where 4-cell-large-globular-structure : UU (β l1 l2) 4-cell-large-globular-structure = 1-cell-globular-structure ( globular-structure-3-cell-large-globular-structure G p q) H K globular-structure-4-cell-large-globular-structure : globular-structure (β l1 l2) 4-cell-large-globular-structure globular-structure-4-cell-large-globular-structure = globular-structure-1-cell-globular-structure ( globular-structure-3-cell-large-globular-structure G p q) H K ``` ### The type of large globular types ```agda record Large-Globular-Type (α : Level → Level) (β : Level → Level → Level) : UUω where field 0-cell-Large-Globular-Type : (l : Level) → UU (α l) globular-structure-0-cell-Large-Globular-Type : large-globular-structure β 0-cell-Large-Globular-Type open Large-Globular-Type public module _ {α : Level → Level} {β : Level → Level → Level} (A : Large-Globular-Type α β) where 1-cell-Large-Globular-Type : {l1 l2 : Level} (x : 0-cell-Large-Globular-Type A l1) (y : 0-cell-Large-Globular-Type A l2) → UU (β l1 l2) 1-cell-Large-Globular-Type = 1-cell-large-globular-structure ( globular-structure-0-cell-Large-Globular-Type A) globular-structure-1-cell-Large-Globular-Type : {l1 l2 : Level} (x : 0-cell-Large-Globular-Type A l1) (y : 0-cell-Large-Globular-Type A l2) → globular-structure (β l1 l2) (1-cell-Large-Globular-Type x y) globular-structure-1-cell-Large-Globular-Type = globular-structure-1-cell-large-globular-structure ( globular-structure-0-cell-Large-Globular-Type A) globular-type-1-cell-Large-Globular-Type : {l1 l2 : Level} (x : 0-cell-Large-Globular-Type A l1) (y : 0-cell-Large-Globular-Type A l2) → Globular-Type (β l1 l2) (β l1 l2) globular-type-1-cell-Large-Globular-Type x y = ( 1-cell-Large-Globular-Type x y , globular-structure-1-cell-Large-Globular-Type x y) 2-cell-Large-Globular-Type : {l1 l2 : Level} {x : 0-cell-Large-Globular-Type A l1} {y : 0-cell-Large-Globular-Type A l2} (p q : 1-cell-Large-Globular-Type x y) → UU (β l1 l2) 2-cell-Large-Globular-Type {x = x} {y} = 1-cell-globular-structure ( globular-structure-1-cell-Large-Globular-Type x y) globular-structure-2-cell-Large-Globular-Type : {l1 l2 : Level} {x : 0-cell-Large-Globular-Type A l1} {y : 0-cell-Large-Globular-Type A l2} (f g : 1-cell-Large-Globular-Type x y) → globular-structure (β l1 l2) (2-cell-Large-Globular-Type f g) globular-structure-2-cell-Large-Globular-Type = globular-structure-2-cell-large-globular-structure ( globular-structure-0-cell-Large-Globular-Type A) globular-type-2-cell-Large-Globular-Type : {l1 l2 : Level} {x : 0-cell-Large-Globular-Type A l1} {y : 0-cell-Large-Globular-Type A l2} (f g : 1-cell-Large-Globular-Type x y) → Globular-Type (β l1 l2) (β l1 l2) globular-type-2-cell-Large-Globular-Type f g = ( 2-cell-Large-Globular-Type f g , globular-structure-2-cell-Large-Globular-Type f g) 3-cell-Large-Globular-Type : {l1 l2 : Level} {x : 0-cell-Large-Globular-Type A l1} {y : 0-cell-Large-Globular-Type A l2} {p q : 1-cell-Large-Globular-Type x y} (H K : 2-cell-Large-Globular-Type p q) → UU (β l1 l2) 3-cell-Large-Globular-Type {x = x} {y} = 2-cell-globular-structure ( globular-structure-1-cell-Large-Globular-Type x y) ```