# Dependent suspension structures

```agda
module synthetic-homotopy-theory.dependent-suspension-structures where
```

<details><summary>Imports</summary>

```agda
open import foundation.action-on-identifications-functions
open import foundation.commuting-squares-of-identifications
open import foundation.constant-maps
open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.function-extensionality
open import foundation.function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.injective-maps
open import foundation.structure-identity-principle
open import foundation.transport-along-identifications
open import foundation.unit-type
open import foundation.universal-property-unit-type
open import foundation.universe-levels

open import synthetic-homotopy-theory.dependent-cocones-under-spans
open import synthetic-homotopy-theory.suspension-structures
```

</details>

## Idea

This is the dependent analog of
[suspension structures](synthetic-homotopy-theory.suspension-structures.md). The
relation between
[suspension structures](synthetic-homotopy-theory.suspension-structures.md) and
dependent suspension structures mirrors the relation between
[cocones under a span](synthetic-homotopy-theory.cocones-under-spans.md) and
[dependent cocones under a span](synthetic-homotopy-theory.dependent-cocones-under-spans.md).

Fix a type `X` and consider a suspension cocone `(f , g , h)` with nadir `Y`.
Given a type family `P : Y → UU`, a dependent suspension cocone on `P` over
`(f , g , h)` consists of dependent functions

```text
north : (t : unit) → P (f t)

south : (t : unit) → P (g t)
```

together with a family of dependent identifications

```text
merid : (x : X) → dependent-identification P (h x) ((north ∘ (terminal-map X)) x) (south ∘ (terminal-map X) x)
```

Using the [universal property of `unit`](foundation.unit-type.md) and the
previous characterization of suspension cocones (to be found in the file
[synthetic-homotopy-theory.suspension-structures](synthetic-homotopy-theory.suspension-structures.md)),
we can characterize dependent cocones over a suspension cocone as equivalent to
the following:

For a suspension structure `(N , S , m)`, a dependent suspension structure in
`P` over (N , S , m)` is given by points

```text
north : P N

south : P S
```

and a family of dependent identifications

```text
meridian : (x : X) → dependent-identification P (m x) north south
```

## Definition

### Dependent Suspension Cocones

```agda
module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y  UU l3)
  (c : suspension-cocone X Y)
  where

  dependent-suspension-cocone : UU (l1  l3)
  dependent-suspension-cocone =
    dependent-cocone
      ( terminal-map X)
      ( terminal-map X)
      ( c)
      ( B)
```

### Dependent Suspension Structures

```agda
module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2}
  (B : Y  UU l3)
  (c : suspension-structure X Y)
  where

  dependent-suspension-structure : UU (l1  l3)
  dependent-suspension-structure =
    Σ ( B (north-suspension-structure c))
      ( λ N 
        Σ ( B (south-suspension-structure c))
          ( λ S 
            (x : X) 
            dependent-identification
              ( B)
              ( meridian-suspension-structure c x)
              ( N)
              ( S)))

module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} {B : Y  UU l3}
  {c : suspension-structure X Y}
  (d : dependent-suspension-structure B c)
  where

  north-dependent-suspension-structure : B (north-suspension-structure c)
  north-dependent-suspension-structure = pr1 (d)

  south-dependent-suspension-structure : B (south-suspension-structure c)
  south-dependent-suspension-structure = (pr1  pr2) (d)

  meridian-dependent-suspension-structure :
    (x : X) 
    dependent-identification
      ( B)
      ( meridian-suspension-structure c x)
      ( north-dependent-suspension-structure)
      ( south-dependent-suspension-structure)
  meridian-dependent-suspension-structure = (pr2  pr2) (d)
```

## Properties

#### Equivalence between dependent suspension structures and dependent suspension cocones

```agda
module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (c : suspension-structure X Y)
  (B : Y  UU l3)
  where

  dependent-cocone-dependent-suspension-structure :
    dependent-suspension-structure B c 
    dependent-suspension-cocone B (suspension-cocone-suspension-structure c)
  pr1 (dependent-cocone-dependent-suspension-structure d) t =
    north-dependent-suspension-structure d
  pr1 (pr2 (dependent-cocone-dependent-suspension-structure d)) t =
    south-dependent-suspension-structure d
  pr2 (pr2 (dependent-cocone-dependent-suspension-structure d)) x =
    meridian-dependent-suspension-structure d x

  equiv-dependent-suspension-structure-suspension-cocone :
    ( dependent-suspension-cocone
      ( B)
      ( suspension-cocone-suspension-structure c)) 
    ( dependent-suspension-structure B c)
  equiv-dependent-suspension-structure-suspension-cocone =
    ( equiv-Σ
      ( λ n 
        Σ ( B (south-suspension-structure c))
          ( λ s 
            (x : X) 
            ( dependent-identification
              ( B)
              ( meridian-suspension-structure c x)
              ( n)
              ( s))))
      ( equiv-dependent-universal-property-unit
        ( λ x  B (north-suspension-structure c)))
      ( λ north-suspension-c 
        ( equiv-Σ
          ( λ s 
            (x : X) 
            ( dependent-identification
              ( B)
              ( meridian-suspension-structure c x)
              ( map-equiv
                ( equiv-dependent-universal-property-unit
                  ( λ _  B (north-suspension-structure c)))
                ( north-suspension-c))
              ( s)))
          ( equiv-dependent-universal-property-unit
            ( point (B (south-suspension-structure c))))
          ( λ south-suspension-c  id-equiv))))

  htpy-map-inv-equiv-dependent-suspension-structure-suspension-cocone-cocone-dependent-cocone-dependent-suspension-structure :
    map-inv-equiv equiv-dependent-suspension-structure-suspension-cocone ~
    dependent-cocone-dependent-suspension-structure
  htpy-map-inv-equiv-dependent-suspension-structure-suspension-cocone-cocone-dependent-cocone-dependent-suspension-structure
    ( d) =
      is-injective-equiv
        ( equiv-dependent-suspension-structure-suspension-cocone)
        ( is-section-map-inv-equiv
          ( equiv-dependent-suspension-structure-suspension-cocone)
          ( d))
```

#### Characterizing equality of dependent suspension structures

```agda
module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y  UU l3)
  {c : suspension-structure X Y}
  (d d' : dependent-suspension-structure B c)
  where

  htpy-dependent-suspension-structure : UU (l1  l3)
  htpy-dependent-suspension-structure =
    Σ ( north-dependent-suspension-structure d 
        north-dependent-suspension-structure d')
      ( λ N-htpy 
        Σ ( south-dependent-suspension-structure d 
            south-dependent-suspension-structure d')
          ( λ S-htpy 
            (x : X) 
            coherence-square-identifications
              ( ap
                ( tr B (meridian-suspension-structure c x))
                ( N-htpy))
              ( meridian-dependent-suspension-structure d x)
              ( meridian-dependent-suspension-structure d' x)
              ( S-htpy)))

module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y  UU l3)
  {susp-str : suspension-structure X Y}
  {d-susp-str0 d-susp-str1 : dependent-suspension-structure B susp-str}
  where

  north-htpy-dependent-suspension-structure :
    htpy-dependent-suspension-structure B d-susp-str0 d-susp-str1 
    north-dependent-suspension-structure d-susp-str0 
    north-dependent-suspension-structure d-susp-str1
  north-htpy-dependent-suspension-structure = pr1

  south-htpy-dependent-suspension-structure :
    htpy-dependent-suspension-structure B d-susp-str0 d-susp-str1 
    south-dependent-suspension-structure d-susp-str0 
    south-dependent-suspension-structure d-susp-str1
  south-htpy-dependent-suspension-structure = (pr1  pr2)

  meridian-htpy-dependent-suspension-structure :
    ( d-susp-str :
      htpy-dependent-suspension-structure B d-susp-str0 d-susp-str1) 
    ( x : X) 
    coherence-square-identifications
      ( ap
        ( tr B (meridian-suspension-structure susp-str x))
        ( north-htpy-dependent-suspension-structure d-susp-str))
      ( meridian-dependent-suspension-structure d-susp-str0 x)
      ( meridian-dependent-suspension-structure d-susp-str1 x)
      ( south-htpy-dependent-suspension-structure d-susp-str)
  meridian-htpy-dependent-suspension-structure = pr2  pr2

module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y  UU l3)
  {c : suspension-structure X Y}
  (d : dependent-suspension-structure B c)
  where

  extensionality-dependent-suspension-structure :
    ( d' : dependent-suspension-structure B c) 
    ( d  d') 
    ( htpy-dependent-suspension-structure B d d')
  extensionality-dependent-suspension-structure =
    extensionality-Σ
      ( λ (S , m) (N-htpy) 
        Σ (south-dependent-suspension-structure d  S)
          ( λ S-htpy 
            (x : X) 
            coherence-square-identifications
              ( ap (tr B (meridian-suspension-structure c x)) N-htpy)
              ( meridian-dependent-suspension-structure d x)
              ( m x)
              ( S-htpy)))
      ( refl)
      ( refl , λ x  right-unit)
      ( λ N  id-equiv)
      ( extensionality-Σ
        ( λ m S-htpy 
          (x : X) 
          ( meridian-dependent-suspension-structure d x  S-htpy) 
          ( m x))
        ( refl)
        ( λ x  right-unit)
        ( λ S  id-equiv)
        ( λ m 
          equiv-concat-htpy right-unit-htpy m ∘e inv-equiv equiv-eq-htpy))

module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y  UU l3)
  {c : suspension-structure X Y}
  {d d' : dependent-suspension-structure B c}
  where

  htpy-eq-dependent-suspension-structure :
    (d  d') 
    htpy-dependent-suspension-structure B d d'
  htpy-eq-dependent-suspension-structure =
    map-equiv
      ( extensionality-dependent-suspension-structure B d d')

  eq-htpy-dependent-suspension-structure :
    htpy-dependent-suspension-structure B d d' 
    d  d'
  eq-htpy-dependent-suspension-structure =
    map-inv-equiv
      ( extensionality-dependent-suspension-structure B d d')

module _
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y  UU l3)
  {c : suspension-structure X Y}
  (d : dependent-suspension-structure B c)
  where

  refl-htpy-dependent-suspension-structure :
    htpy-dependent-suspension-structure B d d
  pr1 refl-htpy-dependent-suspension-structure = refl
  pr1 (pr2 refl-htpy-dependent-suspension-structure) = refl
  pr2 (pr2 refl-htpy-dependent-suspension-structure) x = right-unit

  is-refl-refl-htpy-dependent-suspension-structure :
    refl-htpy-dependent-suspension-structure 
    htpy-eq-dependent-suspension-structure B refl
  is-refl-refl-htpy-dependent-suspension-structure = refl
```