# Reflexive globular types
```agda
{-# OPTIONS --guardedness #-}
module structured-types.reflexive-globular-types where
```
<details><summary>Imports</summary>
```agda
open import foundation.binary-relations
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 [globular type](structured-types.globular-types.md) is
{{#concept "reflexive" Disambiguation="globular type" Agda=is-reflexive-globular-structure}}
if every $n$-cell `x` comes with a choice of $(n+1)$-cell from `x` to `x`.
## Definition
### Reflexivity structure on a globular structure
```agda
record
is-reflexive-globular-structure
{l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A) : UU (l1 ⊔ l2)
where
coinductive
field
is-reflexive-1-cell-is-reflexive-globular-structure :
is-reflexive (1-cell-globular-structure G)
is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure :
(x y : A) →
is-reflexive-globular-structure
( globular-structure-1-cell-globular-structure G x y)
open is-reflexive-globular-structure public
module _
{l1 l2 : Level} {A : UU l1} {G : globular-structure l2 A}
(r : is-reflexive-globular-structure G)
where
refl-1-cell-is-reflexive-globular-structure :
{x : A} → 1-cell-globular-structure G x x
refl-1-cell-is-reflexive-globular-structure {x} =
is-reflexive-1-cell-is-reflexive-globular-structure r x
refl-2-cell-is-reflexive-globular-structure :
{x y : A} {f : 1-cell-globular-structure G x y} →
2-cell-globular-structure G f f
refl-2-cell-is-reflexive-globular-structure {x} {y} {f} =
is-reflexive-1-cell-is-reflexive-globular-structure
( is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
( r)
( x)
( y))
( f)
is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure :
{x y : A}
(f g : 1-cell-globular-structure G x y) →
is-reflexive-globular-structure
( globular-structure-2-cell-globular-structure G f g)
is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure
{ x} {y} =
is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
( is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
( r)
( x)
( y))
refl-3-cell-is-reflexive-globular-structure :
{x y : A}
{f g : 1-cell-globular-structure G x y}
{H : 2-cell-globular-structure G f g} →
3-cell-globular-structure G H H
refl-3-cell-is-reflexive-globular-structure {x} {y} {f} {g} {H} =
is-reflexive-1-cell-is-reflexive-globular-structure
( is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure
( f)
( g))
( H)
```
### The type of reflexive globular structures
```agda
reflexive-globular-structure :
{l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2)
reflexive-globular-structure l2 A =
Σ (globular-structure l2 A) (is-reflexive-globular-structure)
```
### Reflexivity structure on a globular type
```agda
module _
{l1 l2 : Level} (G : Globular-Type l1 l2)
where
is-reflexive-Globular-Type : UU (l1 ⊔ l2)
is-reflexive-Globular-Type =
is-reflexive-globular-structure (globular-structure-0-cell-Globular-Type G)
```
### Reflexive globular types
```agda
record
Reflexive-Globular-Type (l1 l2 : Level) : UU (lsuc l1 ⊔ lsuc l2)
where
field
globular-type-Reflexive-Globular-Type : Globular-Type l1 l2
0-cell-Reflexive-Globular-Type : UU l1
0-cell-Reflexive-Globular-Type =
0-cell-Globular-Type globular-type-Reflexive-Globular-Type
1-cell-Reflexive-Globular-Type :
0-cell-Reflexive-Globular-Type → 0-cell-Reflexive-Globular-Type → UU l2
1-cell-Reflexive-Globular-Type =
1-cell-Globular-Type globular-type-Reflexive-Globular-Type
2-cell-Reflexive-Globular-Type :
{x x' : 0-cell-Reflexive-Globular-Type}
(y y' : 1-cell-Reflexive-Globular-Type x x') → UU l2
2-cell-Reflexive-Globular-Type =
2-cell-Globular-Type globular-type-Reflexive-Globular-Type
globular-structure-Reflexive-Globular-Type :
globular-structure l2 0-cell-Reflexive-Globular-Type
globular-structure-Reflexive-Globular-Type =
globular-structure-0-cell-Globular-Type
( globular-type-Reflexive-Globular-Type)
field
refl-Reflexive-Globular-Type :
is-reflexive-globular-structure globular-structure-Reflexive-Globular-Type
refl-0-cell-Reflexive-Globular-Type :
{x : 0-cell-Reflexive-Globular-Type} →
1-cell-Reflexive-Globular-Type x x
refl-0-cell-Reflexive-Globular-Type =
is-reflexive-1-cell-is-reflexive-globular-structure
( refl-Reflexive-Globular-Type)
( _)
1-cell-globular-type-Reflexive-Globular-Type :
(x y : 0-cell-Reflexive-Globular-Type) → Globular-Type l2 l2
1-cell-globular-type-Reflexive-Globular-Type =
1-cell-globular-type-Globular-Type globular-type-Reflexive-Globular-Type
1-cell-reflexive-globular-type-Reflexive-Globular-Type :
(x y : 0-cell-Reflexive-Globular-Type) → Reflexive-Globular-Type l2 l2
globular-type-Reflexive-Globular-Type
( 1-cell-reflexive-globular-type-Reflexive-Globular-Type x y) =
1-cell-globular-type-Reflexive-Globular-Type x y
refl-Reflexive-Globular-Type
( 1-cell-reflexive-globular-type-Reflexive-Globular-Type x y) =
is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
( refl-Reflexive-Globular-Type)
( x)
( y)
open Reflexive-Globular-Type public
```
## Examples
### The reflexive globular structure on a type given by its identity types
```agda
is-reflexive-globular-structure-Id :
{l : Level} (A : UU l) →
is-reflexive-globular-structure (globular-structure-Id A)
is-reflexive-globular-structure-Id A =
λ where
.is-reflexive-1-cell-is-reflexive-globular-structure x →
refl
.is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure x y →
is-reflexive-globular-structure-Id (x = y)
```