# 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)
```