Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependent universal property of suspensions #718

Merged
merged 38 commits into from
Sep 9, 2023
Merged
Changes from 22 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
6969b19
add syntax
morphismz Aug 2, 2023
44870c7
Revert "add syntax"
morphismz Aug 2, 2023
192eb76
Merge branch 'UniMath:master' into master
morphismz Aug 6, 2023
881edaa
Merge branch 'UniMath:master' into master
morphismz Aug 7, 2023
b003377
Merge branch 'UniMath:master' into master
morphismz Aug 7, 2023
67d6cb2
Merge branch 'UniMath:master' into master
morphismz Aug 15, 2023
885b0b2
Merge branch 'UniMath:master' into master
morphismz Aug 19, 2023
d4979d9
Merge branch 'UniMath:master' into master
morphismz Aug 20, 2023
ea71df2
Merge branch 'master' into stable
morphismz Aug 30, 2023
a71129a
move text
morphismz Aug 30, 2023
38eb24a
dependent suspension structures
morphismz Aug 30, 2023
b31ff60
dependent up suspension
morphismz Aug 30, 2023
3fbc404
update suspensions-of-types
morphismz Aug 30, 2023
30bf7f9
homotopies of functions out of suspensions
morphismz Aug 30, 2023
be72f67
pre-commit
morphismz Aug 30, 2023
d9f51df
pre-commit fixes
morphismz Aug 30, 2023
977f864
simplify function
morphismz Aug 30, 2023
d90e87f
pre-commit
morphismz Aug 30, 2023
24c08e8
renaming
morphismz Sep 1, 2023
19046a7
renaming fixes
morphismz Sep 1, 2023
c3f755d
pre-commit fixes
morphismz Sep 1, 2023
7a3494a
Merge branch 'master' into dependent-up-susp
morphismz Sep 7, 2023
0c0ac56
Apply suggestions from code review
morphismz Sep 7, 2023
e37441e
rename equivalence
morphismz Sep 8, 2023
6c0ad61
variable changes
morphismz Sep 8, 2023
288b5f1
pre-commit
morphismz Sep 8, 2023
8d70f43
variable fixes
morphismz Sep 8, 2023
746ae11
variable fixes
morphismz Sep 8, 2023
f5598f4
implicit variables
morphismz Sep 8, 2023
0dc1498
Apply suggestions from code review
morphismz Sep 8, 2023
73bf308
parenhesis
morphismz Sep 8, 2023
4fb872f
pre-commit
morphismz Sep 8, 2023
4687971
add necessary parenthsis
morphismz Sep 8, 2023
fa0d82d
Update src/synthetic-homotopy-theory/dependent-suspension-structures.…
EgbertRijke Sep 9, 2023
726885d
Update src/synthetic-homotopy-theory/dependent-suspension-structures.…
EgbertRijke Sep 9, 2023
1bbadf3
Update src/synthetic-homotopy-theory/dependent-suspension-structures.…
EgbertRijke Sep 9, 2023
b7cba83
Update src/synthetic-homotopy-theory/dependent-suspension-structures.…
EgbertRijke Sep 9, 2023
7028907
Update src/synthetic-homotopy-theory/dependent-universal-property-sus…
EgbertRijke Sep 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 105 additions & 8 deletions src/synthetic-homotopy-theory/dependent-suspension-structures.lagda.md
Original file line number Diff line number Diff line change
@@ -113,8 +113,8 @@ module _
```agda
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2}
(ss : suspension-structure X Y)
(B : Y → UU l3)
(ss : suspension-structure X Y)
where
dependent-suspension-structure : UU (l1 ⊔ l3)
@@ -133,7 +133,7 @@ module _
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} {B : Y → UU l3}
{ss : suspension-structure X Y}
(d-ss : dependent-suspension-structure ss B)
(d-ss : dependent-suspension-structure B ss)
where
north-dependent-suspension-structure : B (north-suspension-structure ss)
@@ -156,15 +156,77 @@ module _

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

Soon TODO
```agda
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (ss : suspension-structure X Y)
(B : Y → UU l3)
where
dependent-cocone-dependent-suspension-structure :
dependent-suspension-structure B ss →
dependent-suspension-cocone B (cocone-suspension-structure X Y ss)
pr1 (dependent-cocone-dependent-suspension-structure dss) t =
north-dependent-suspension-structure dss
pr1 (pr2 (dependent-cocone-dependent-suspension-structure dss)) t =
south-dependent-suspension-structure dss
pr2 (pr2 (dependent-cocone-dependent-suspension-structure dss)) x =
meridian-dependent-suspension-structure dss x
compute-dependent-suspension-cocone :
( dependent-suspension-structure B ss) ≃
( dependent-suspension-cocone
( B)
( cocone-suspension-structure X Y ss))
compute-dependent-suspension-cocone =
inv-equiv
( equiv-Σ
(λ N-d-susp-str →
Σ (B (south-suspension-structure ss))
( λ S-d-susp-str →
(x : X) →
( dependent-identification
( B)
( meridian-suspension-structure ss x)
( N-d-susp-str)
( S-d-susp-str))))
( equiv-dependent-universal-property-unit
( λ x → (B (north-suspension-structure ss))))
( λ N-susp-c →
( equiv-Σ
(λ S-d-susp-str →
(x : X) →
( dependent-identification
( B)
( meridian-suspension-structure ss x)
( map-equiv
( equiv-dependent-universal-property-unit
( λ x₁ → B (pr1 ss)))
( N-susp-c))
( S-d-susp-str)))
(equiv-dependent-universal-property-unit
( const unit (UU l3) (B (south-suspension-structure ss))))
λ S-susp-c → id-equiv)))
htpy-map-inv-compute-dependent-suspension-cocone-cocone-dependent-cocone-dependent-suspension-structure :
map-equiv compute-dependent-suspension-cocone ~
dependent-cocone-dependent-suspension-structure
htpy-map-inv-compute-dependent-suspension-cocone-cocone-dependent-cocone-dependent-suspension-structure
( dss) =
map-inv-equiv
( equiv-ap
( inv-equiv compute-dependent-suspension-cocone)
( map-equiv compute-dependent-suspension-cocone dss)
( dependent-cocone-dependent-suspension-structure dss))
( is-retraction-map-inv-equiv compute-dependent-suspension-cocone dss)
```

#### Characterizing equality of dependent suspension structures

```agda
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y → UU l3)
{ss : suspension-structure X Y}
(d-ss d-ss' : dependent-suspension-structure ss B)
(d-ss d-ss' : dependent-suspension-structure B ss)
where
htpy-dependent-suspension-structure : UU (l1 ⊔ l3)
@@ -184,14 +246,49 @@ module _
( N-htpy))
( meridian-dependent-suspension-structure d-ss' x)))
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
( meridian-dependent-suspension-structure d-susp-str0 x)
( south-htpy-dependent-suspension-structure d-susp-str)
( ap
(tr B (meridian-suspension-structure susp-str x))
(north-htpy-dependent-suspension-structure d-susp-str))
( meridian-dependent-suspension-structure d-susp-str1 x))
meridian-htpy-dependent-suspension-structure = pr2 ∘ pr2
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y → UU l3)
{ss : suspension-structure X Y}
(d-ss : dependent-suspension-structure ss B)
(d-ss : dependent-suspension-structure B ss)
where
extensionality-dependent-suspension-structure :
( d-ss' : dependent-suspension-structure ss B) →
( d-ss' : dependent-suspension-structure B ss) →
( d-ss = d-ss') ≃
( htpy-dependent-suspension-structure B d-ss d-ss')
extensionality-dependent-suspension-structure =
@@ -222,7 +319,7 @@ module _
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y → UU l3)
{ss : suspension-structure X Y}
{d-ss d-ss' : dependent-suspension-structure ss B}
{d-ss d-ss' : dependent-suspension-structure B ss}
where
htpy-eq-dependent-suspension-structure :
@@ -242,7 +339,7 @@ module _
module _
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} (B : Y → UU l3)
{ss : suspension-structure X Y}
(d-ss : dependent-suspension-structure ss B)
(d-ss : dependent-suspension-structure B ss)
where
refl-htpy-dependent-suspension-structure :
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ dependent-ev-suspension :
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2}
(susp-str : suspension-structure X Y) (B : Y → UU l3) →
((y : Y) → B y) →
dependent-suspension-structure susp-str B
dependent-suspension-structure B susp-str
pr1 (dependent-ev-suspension susp-str B s) =
s (north-suspension-structure susp-str)
pr1 (pr2 (dependent-ev-suspension susp-str B s)) =
@@ -76,3 +76,23 @@ module _
dependent-universal-property-suspension =
(B : Y → UU l) → is-equiv (dependent-ev-suspension susp-str B)
```

#### Coherence between `dependent-ev-suspension` and

`dependent-cocone-map`

```agda
triangle-dependent-ev-suspension :
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2}
(susp-str : suspension-structure X Y) →
(B : Y → UU l3) →
(map-inv-equiv (compute-dependent-suspension-cocone susp-str B) ∘
dependent-cocone-map
( const X unit star)
( const X unit star)
( cocone-suspension-structure X Y susp-str)
( B))
~
dependent-ev-suspension susp-str B
triangle-dependent-ev-suspension {X = X} {Y = Y} susp-str B = refl-htpy
```
18 changes: 18 additions & 0 deletions src/synthetic-homotopy-theory/pushouts.lagda.md
Original file line number Diff line number Diff line change
@@ -15,7 +15,9 @@ open import foundation.homotopies
open import foundation.identity-types
open import foundation.universe-levels
open import synthetic-homotopy-theory.26-descent
open import synthetic-homotopy-theory.cocones-under-spans
open import synthetic-homotopy-theory.dependent-universal-property-pushouts
open import synthetic-homotopy-theory.universal-property-pushouts
```

@@ -143,6 +145,22 @@ is-pushout f g c = is-equiv (cogap f g c)

## Properties

### The pushout of a span has the dependent universal property

```agda
dependent-up-pushout :
{l1 l2 l3 l4 : Level} {S : UU l1} {A : UU l2} {B : UU l3}
(f : S → A) (g : S → B) →
dependent-universal-property-pushout l4 f g (cocone-pushout f g)
dependent-up-pushout {l4 = l4} f g =
dependent-universal-property-universal-property-pushout
( f)
( g)
( cocone-pushout f g)
( λ l → up-pushout f g)
( l4)
```

### Computation with the cogap map

```agda
78 changes: 41 additions & 37 deletions src/synthetic-homotopy-theory/suspension-structures.lagda.md
Original file line number Diff line number Diff line change
@@ -131,55 +131,59 @@ cocone-suspension-structure X Y (pair N (pair S merid)) =
( const unit Y S)
( merid))
comparison-suspension-cocone :
compute-suspension-cocone :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
suspension-cocone X Z ≃ suspension-structure X Z
comparison-suspension-cocone X Z =
equiv-Σ
( λ z1 → Σ Z (λ z2 → (x : X) → Id z1 z2))
( equiv-universal-property-unit Z)
( λ z1 →
equiv-Σ
( λ z2 → (x : X) → Id (z1 star) z2)
( equiv-universal-property-unit Z)
( λ z2 → id-equiv))
map-comparison-suspension-cocone :
suspension-structure X Z ≃ suspension-cocone X Z
compute-suspension-cocone X Z =
inv-equiv
( equiv-Σ
( λ z1 → Σ Z (λ z2 → (x : X) → Id z1 z2))
( equiv-universal-property-unit Z)
( λ z1 →
equiv-Σ
( λ z2 → (x : X) → Id (z1 star) z2)
( equiv-universal-property-unit Z)
( λ z2 → id-equiv)))
map-compute-suspension-cocone :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
suspension-structure X Z → suspension-cocone X Z
map-compute-suspension-cocone X Z =
map-equiv (compute-suspension-cocone X Z)
is-equiv-map-compute-suspension-cocone :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
is-equiv (map-compute-suspension-cocone X Z)
is-equiv-map-compute-suspension-cocone X Z =
is-equiv-map-equiv (compute-suspension-cocone X Z)
map-inv-compute-suspension-cocone :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
suspension-cocone X Z → suspension-structure X Z
map-comparison-suspension-cocone X Z =
map-equiv (comparison-suspension-cocone X Z)
map-inv-compute-suspension-cocone X Z =
map-inv-equiv (compute-suspension-cocone X Z)
is-equiv-map-comparison-suspension-cocone :
is-equiv-map-inv-compute-suspension-cocone :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
is-equiv (map-comparison-suspension-cocone X Z)
is-equiv-map-comparison-suspension-cocone X Z =
is-equiv-map-equiv (comparison-suspension-cocone X Z)
is-equiv (map-inv-compute-suspension-cocone X Z)
is-equiv-map-inv-compute-suspension-cocone X Z =
is-equiv-map-inv-equiv (compute-suspension-cocone X Z)
htpy-map-inv-comparison-suspension-cocone-cocone-suspension-structure :
htpy-comparison-suspension-cocone-suspension-structure :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
( map-inv-equiv (comparison-suspension-cocone X Z))
( map-compute-suspension-cocone X Z)
~
( cocone-suspension-structure X Z)
htpy-map-inv-comparison-suspension-cocone-cocone-suspension-structure
htpy-comparison-suspension-cocone-suspension-structure
( X)
( Z)
( x) =
( ss) =
map-inv-equiv
( equiv-ap-emb (emb-equiv (comparison-suspension-cocone X Z)))
( is-section-map-inv-equiv (comparison-suspension-cocone X Z) x)
is-equiv-map-inv-comparison-suspension-cocone :
{l1 l2 : Level} (X : UU l1) (Z : UU l2) →
is-equiv (cocone-suspension-structure X Z)
is-equiv-map-inv-comparison-suspension-cocone X Z =
is-equiv-htpy
( map-inv-equiv (comparison-suspension-cocone X Z))
( inv-htpy
( htpy-map-inv-comparison-suspension-cocone-cocone-suspension-structure
( X)
( Z)))
( is-equiv-map-inv-equiv (comparison-suspension-cocone X Z))
( equiv-ap
( inv-equiv (compute-suspension-cocone X Z))
( map-equiv (compute-suspension-cocone X Z) ss)
( cocone-suspension-structure X Z ss))
( is-retraction-map-inv-equiv (compute-suspension-cocone X Z) ss)
```

#### Characterization of equalities in `suspension-structure`
225 changes: 221 additions & 4 deletions src/synthetic-homotopy-theory/suspensions-of-types.lagda.md
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@ 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-function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
open import foundation.identity-systems
@@ -108,7 +109,7 @@ module _
{ Y = suspension X}
( suspension-structure-suspension X) Z)
( is-equiv-map-equiv
( ( comparison-suspension-cocone X Z) ∘e
( ( inv-equiv ( compute-suspension-cocone X Z)) ∘e
( equiv-up-pushout (const X unit star) (const X unit star) Z)))

equiv-up-suspension :
@@ -138,13 +139,15 @@ module _

up-suspension-north-suspension :
{l : Level} (Z : UU l) (c : suspension-structure X Z)
(map-inv-up-suspension Z c north-suspension) = pr1 c
( map-inv-up-suspension Z c north-suspension) =
( north-suspension-structure c)
up-suspension-north-suspension Z c =
pr1 (htpy-eq-suspension-structure ((is-section-map-inv-up-suspension Z) c))

up-suspension-south-suspension :
{l : Level} (Z : UU l) (c : suspension-structure X Z)
(map-inv-up-suspension Z c south-suspension) = pr1 (pr2 c)
( map-inv-up-suspension Z c south-suspension) =
( south-suspension-structure c)
up-suspension-south-suspension Z c =
pr1
( pr2
@@ -154,7 +157,8 @@ module _
{l : Level} (Z : UU l) (c : suspension-structure X Z) (x : X)
( ( ap (map-inv-up-suspension Z c) (meridian-suspension x)) ∙
( up-suspension-south-suspension Z c)) =
( ( up-suspension-north-suspension Z c) ∙ ( pr2 (pr2 c)) x)
( ( up-suspension-north-suspension Z c) ∙
( meridian-suspension-structure c) x)
up-suspension-meridian-suspension Z c =
pr2
( pr2
@@ -173,6 +177,219 @@ module _
( up-suspension-meridian-suspension Z c))
```

### The suspension of X has the dependent universal property of suspensions

```agda
dependent-up-suspension :
(l : Level) {l1 : Level} {X : UU l1}
dependent-universal-property-suspension
( l)
( suspension-structure-suspension X)
dependent-up-suspension l {X = X} B =
is-equiv-htpy
( ( map-inv-equiv
( compute-dependent-suspension-cocone
( suspension-structure-suspension X)
( B))) ∘
( dependent-cocone-map
( const X unit star)
( const X unit star)
( cocone-suspension-structure
( X)
( suspension X)
( suspension-structure-suspension X))
( B)))
( inv-htpy
( triangle-dependent-ev-suspension
( suspension-structure-suspension X)
( B)))
( is-equiv-comp
( map-inv-equiv
( compute-dependent-suspension-cocone
( suspension-structure-suspension X) B))
( dependent-cocone-map
( const X unit star)
( const X unit star)
( cocone-suspension-structure X (suspension X)
( suspension-structure-suspension X))
( B))
( dependent-up-pushout (const X unit star) (const X unit star) B)
( is-equiv-map-inv-equiv
( compute-dependent-suspension-cocone
( suspension-structure-suspension X)
( B))))

equiv-dependent-up-suspension :
{l1 l2 : Level} {X : UU l1} (B : (suspension X) UU l2)
((x : suspension X) B x) ≃
( dependent-suspension-structure B (suspension-structure-suspension X))
pr1 (equiv-dependent-up-suspension {l2 = l2} {X = X} B) =
(dependent-ev-suspension (suspension-structure-suspension X) B)
pr2 (equiv-dependent-up-suspension {l2 = l2} B) =
dependent-up-suspension l2 B

module _
{l1 l2 : Level} {X : UU l1} (B : (suspension X) UU l2)
where

map-inv-dependent-up-suspension :
dependent-suspension-structure B (suspension-structure-suspension X)
(x : suspension X) B x
map-inv-dependent-up-suspension =
map-inv-is-equiv (dependent-up-suspension l2 B)

is-section-map-inv-dependent-up-suspension :
( ( dependent-ev-suspension (suspension-structure-suspension X) B) ∘
( map-inv-dependent-up-suspension)) ~ id
is-section-map-inv-dependent-up-suspension =
is-section-map-inv-is-equiv (dependent-up-suspension l2 B)

is-retraction-map-inv-dependent-up-suspension :
( ( map-inv-dependent-up-suspension) ∘
( dependent-ev-suspension (suspension-structure-suspension X) B)) ~ id
is-retraction-map-inv-dependent-up-suspension =
is-retraction-map-inv-is-equiv (dependent-up-suspension l2 B)

dependent-up-suspension-north-suspension :
(d-susp-str : dependent-suspension-structure
( B)
( suspension-structure-suspension X))
( map-inv-dependent-up-suspension d-susp-str north-suspension) =
( north-dependent-suspension-structure d-susp-str)
dependent-up-suspension-north-suspension d-susp-str =
north-htpy-dependent-suspension-structure
( B)
( htpy-eq-dependent-suspension-structure
( B)
( is-section-map-inv-dependent-up-suspension d-susp-str))

dependent-up-suspension-south-suspension :
(d-susp-str : dependent-suspension-structure
( B)
( suspension-structure-suspension X))
( map-inv-dependent-up-suspension d-susp-str south-suspension) =
( south-dependent-suspension-structure d-susp-str)
dependent-up-suspension-south-suspension d-susp-str =
south-htpy-dependent-suspension-structure
( B)
( htpy-eq-dependent-suspension-structure
( B)
( is-section-map-inv-dependent-up-suspension d-susp-str))

dependent-up-suspension-meridian-suspension :
(d-susp-str : dependent-suspension-structure
( B)
( suspension-structure-suspension X))
(x : X)
coherence-square-identifications
( apd
( map-inv-dependent-up-suspension d-susp-str)
( meridian-suspension x))
( dependent-up-suspension-south-suspension d-susp-str)
( ap
( tr B (meridian-suspension x))
( dependent-up-suspension-north-suspension d-susp-str))
(meridian-dependent-suspension-structure d-susp-str x)
dependent-up-suspension-meridian-suspension d-susp-str =
meridian-htpy-dependent-suspension-structure
( B)
( htpy-eq-dependent-suspension-structure
( B)
( is-section-map-inv-dependent-up-suspension d-susp-str))
```

### Consequences of the dependent universal property

#### Characterization of homotopies between functions with domain a

suspension

```agda
module _
{l1 l2 : Level} (X : UU l1) {Y : UU l2}
(f g : (suspension X) Y)
where

htpy-function-out-of-suspension : UU (l1 ⊔ l2)
htpy-function-out-of-suspension =
(Σ (f (north-suspension) = g (north-suspension))
( λ N-eq Σ (f (south-suspension) = g (south-suspension))
( λ S-eq
(x : X)
( coherence-square-identifications
( ap f (meridian-suspension x))
( S-eq)
( N-eq)
( ap g (meridian-suspension x))))))

north-htpy-function-out-of-suspension :
htpy-function-out-of-suspension
f (north-suspension) = g (north-suspension)
north-htpy-function-out-of-suspension = pr1

south-htpy-function-out-of-suspension :
htpy-function-out-of-suspension
f (south-suspension) = g (south-suspension)
south-htpy-function-out-of-suspension = pr1 ∘ pr2

meridian-htpy-function-out-of-suspension :
(h : htpy-function-out-of-suspension)
(x : X)
( coherence-square-identifications
( ap f (meridian-suspension x))
( south-htpy-function-out-of-suspension h)
( north-htpy-function-out-of-suspension h)
( ap g (meridian-suspension x)))
meridian-htpy-function-out-of-suspension = pr2 ∘ pr2

equiv-htpy-function-out-of-suspension-htpy :
(f ~ g) ≃ htpy-function-out-of-suspension
equiv-htpy-function-out-of-suspension-htpy =
equivalence-reasoning
(f ~ g) ≃
dependent-suspension-structure
( eq-value f g)
( suspension-structure-suspension X)
by equiv-dependent-up-suspension (eq-value f g)
≃ htpy-function-out-of-suspension
by equiv-tot
( λ N-eq
equiv-tot
( λ S-eq
equiv-Π
( λ x
( coherence-square-identifications
( ap f (meridian-suspension x))
( S-eq)
( N-eq)
( ap g (meridian-suspension x))))
( id-equiv)
( λ x
( inv-equiv
( compute-dependent-identification-eq-value-function
( f)
( g)
( meridian-suspension-structure
( suspension-structure-suspension X) x)
( N-eq)
( S-eq))))))

htpy-function-out-of-suspension-htpy :
(f ~ g) htpy-function-out-of-suspension
htpy-function-out-of-suspension-htpy =
map-equiv (equiv-htpy-function-out-of-suspension-htpy)

htpy-htpy-function-out-of-suspension :
htpy-function-out-of-suspension (f ~ g)
htpy-htpy-function-out-of-suspension =
map-inv-equiv (equiv-htpy-function-out-of-suspension-htpy)

equiv-htpy-htpy-function-out-of-suspension :
htpy-function-out-of-suspension ≃ (f ~ g)
equiv-htpy-htpy-function-out-of-suspension =
inv-equiv equiv-htpy-function-out-of-suspension-htpy
```

### The suspension of a contractible type is contractible

```agda
Original file line number Diff line number Diff line change
@@ -95,7 +95,7 @@ triangle-ev-suspension :
{l1 l2 l3 : Level} {X : UU l1} {Y : UU l2}
(susp-str-Y : suspension-structure X Y)
(Z : UU l3)
( ( map-comparison-suspension-cocone X Z) ∘
( ( map-inv-compute-suspension-cocone X Z) ∘
( cocone-map
( const X unit star)
( const X unit star)
@@ -111,12 +111,12 @@ is-equiv-ev-suspension :
is-equiv-ev-suspension {X = X} susp-str-Y up-Y Z =
is-equiv-comp-htpy
( ev-suspension susp-str-Y Z)
( map-comparison-suspension-cocone X Z)
( map-inv-compute-suspension-cocone X Z)
( cocone-map
( const X unit star)
( const X unit star)
( cocone-suspension-structure X _ susp-str-Y))
( inv-htpy (triangle-ev-suspension susp-str-Y Z))
( up-Y Z)
( is-equiv-map-comparison-suspension-cocone X Z)
( is-equiv-map-inv-compute-suspension-cocone X Z)
```