Skip to content

Commit

Permalink
Define left half-smash products (#1320)
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrik-bakke authored Feb 14, 2025
1 parent 46bee5c commit 74d97dd
Show file tree
Hide file tree
Showing 11 changed files with 566 additions and 265 deletions.
86 changes: 48 additions & 38 deletions references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,6 @@ @article{AKS15
langid = {english}
}

@misc{Anel24,
title = {The category of $\pi$-finite spaces},
author = {Mathieu Anel},
year = {2024},
eprint = {2107.02082},
archiveprefix = {arXiv},
eprintclass = {math},
primaryclass = {math.CT}
}

@article{AL19,
title = {Displayed Categories},
author = {Ahrens, Benedikt and LeFanu Lumsdaine, Peter},
Expand All @@ -54,6 +44,16 @@ @article{AL19
langid = {english}
}

@misc{Anel24,
title = {The category of $\pi$-finite spaces},
author = {Mathieu Anel},
year = {2024},
eprint = {2107.02082},
archiveprefix = {arXiv},
eprintclass = {math},
primaryclass = {math.CT}
}

@misc{Awodey22,
author = {Awodey, Steve},
title = {{On Hofmann-Streicher universes}},
Expand All @@ -65,6 +65,19 @@ @misc{Awodey22
primaryclass = {math.CT}
}

@article{BauerTaylor2009,
author = {Bauer, Andrej and Taylor, Paul},
title = {The {D}edekind Reals in Abstract {S}tone Duality},
journal = {Mathematical Structures in Computer Science},
publisher = {Cambridge University Press},
year = 2009,
volume = 19,
pages = {757--838},
doi = {10.1017/S0960129509007695},
url = {PaulTaylor.EU/ASD/dedras/},
amsclass = {03F60, 06E15, 18C20, 26E40, 54D45, 65G40}
}

@online{BCDE21,
title = {Free groups in HoTT/UF in Agda},
author = {Bezem, Marc and Coquand, Thierry and Dybjer, Peter and Escardó, Martín},
Expand Down Expand Up @@ -361,6 +374,22 @@ @article{Esc21
keywords = {55U40 03B15,Mathematics - Algebraic Geometry,Mathematics - Logic}
}

@article{Esc21b,
author = {Escardó, Martín Hötzel},
title = {Injective types in univalent mathematics},
journal = {Mathematical Structures in Computer Science},
volume = {31},
year = {2021},
number = {1},
pages = {89--111},
issn = {0960-1295,1469-8072},
doi = {10.1017/S0960129520000225},
eprint = {1903.01211},
archiveprefix = {arXiv},
primaryclass = {math.CT},
url = {https://martinescardo.github.io/TypeTopology/InjectiveTypes.Article.html}
}

@book{FBL73,
author = {Fraenkel, Abraham A. and Bar-Hillel, Yehoshua and Levy,
Azriel},
Expand Down Expand Up @@ -441,6 +470,15 @@ @inproceedings{KvR19
eprintclass = {cs, math}
}

@misc{Lavenir23,
title = {Hilton-Milnor's theorem in $\infty$-topoi},
author = {Samuel Lavenir},
year = {2023},
eprint = {2312.12370},
archiveprefix = {arXiv},
primaryclass = {math.AT}
}

@incollection{Makkai98,
author = {Makkai, M.},
title = {Towards a categorical foundation of mathematics},
Expand Down Expand Up @@ -546,22 +584,6 @@ @online{MR23
keywords = {20B30 03B15,Mathematics - Group Theory,Mathematics - Logic}
}

@article{Esc21b,
author = {Escardó, Martín Hötzel},
title = {Injective types in univalent mathematics},
journal = {Mathematical Structures in Computer Science},
volume = {31},
year = {2021},
number = {1},
pages = {89--111},
issn = {0960-1295,1469-8072},
doi = {10.1017/S0960129520000225},
eprint = {1903.01211},
archiveprefix = {arXiv},
primaryclass = {math.CT},
url = {https://martinescardo.github.io/TypeTopology/InjectiveTypes.Article.html}
}

@book{MRR88,
title = {A {{Course}} in {{Constructive Algebra}}},
author = {Mines, Ray and Richman, Fred and Ruitenburg, Wim},
Expand Down Expand Up @@ -916,15 +938,3 @@ @online{Warn24
pubstate = {preprint},
keywords = {Mathematics - Algebraic Topology,Mathematics - Category Theory}
}

@article{BauerTaylor2009,
author = {Bauer, Andrej and Taylor, Paul},
title = {The {D}edekind Reals in Abstract {S}tone Duality},
journal = {Mathematical Structures in Computer Science},
publisher = {Cambridge University Press},
year = 2009,
volume = 19,
pages = {757--838},
doi = {10.1017/S0960129509007695},
url = {PaulTaylor.EU/ASD/dedras/},
amsclass = {03F60, 06E15, 18C20, 26E40, 54D45, 65G40}}
5 changes: 4 additions & 1 deletion src/foundation/unit-type.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,10 @@ module _
is-contr-retraction-terminal-map (retraction-is-equiv H)

is-contr-equiv-unit : A ≃ unit is-contr A
is-contr-equiv-unit e = map-inv-equiv e star , is-retraction-map-inv-equiv e
is-contr-equiv-unit e = (map-inv-equiv e star , is-retraction-map-inv-equiv e)

is-contr-equiv-unit' : unit ≃ A is-contr A
is-contr-equiv-unit' e = (map-equiv e star , is-section-map-inv-equiv e)
```

### Any contractible type is equivalent to the raised unit type
Expand Down
4 changes: 3 additions & 1 deletion src/synthetic-homotopy-theory.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ open import synthetic-homotopy-theory.cocones-under-sequential-diagrams public
open import synthetic-homotopy-theory.cocones-under-spans public
open import synthetic-homotopy-theory.codiagonals-of-maps public
open import synthetic-homotopy-theory.coequalizers public
open import synthetic-homotopy-theory.cofibers public
open import synthetic-homotopy-theory.cofibers-of-maps public
open import synthetic-homotopy-theory.cofibers-of-pointed-maps public
open import synthetic-homotopy-theory.coforks public
open import synthetic-homotopy-theory.coforks-cocones-under-sequential-diagrams public
open import synthetic-homotopy-theory.conjugation-loops public
Expand Down Expand Up @@ -84,6 +85,7 @@ open import synthetic-homotopy-theory.iterated-suspensions-of-pointed-types publ
open import synthetic-homotopy-theory.join-powers-of-types public
open import synthetic-homotopy-theory.joins-of-maps public
open import synthetic-homotopy-theory.joins-of-types public
open import synthetic-homotopy-theory.left-half-smash-products public
open import synthetic-homotopy-theory.loop-homotopy-circle public
open import synthetic-homotopy-theory.loop-spaces public
open import synthetic-homotopy-theory.maps-of-prespectra public
Expand Down
134 changes: 134 additions & 0 deletions src/synthetic-homotopy-theory/cofibers-of-maps.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Cofibers of maps

```agda
module synthetic-homotopy-theory.cofibers-of-maps where
```

<details><summary>Imports</summary>

```agda
open import foundation.constant-maps
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.unit-type
open import foundation.universe-levels

open import structured-types.pointed-maps
open import structured-types.pointed-types
open import structured-types.pointed-unit-type

open import synthetic-homotopy-theory.cocones-under-spans
open import synthetic-homotopy-theory.dependent-cocones-under-spans
open import synthetic-homotopy-theory.dependent-universal-property-pushouts
open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.universal-property-pushouts
```

</details>

## Idea

The
{{#concept "cofiber" Disambiguation="of a map of types" WD="mapping cone" WDID=Q306560 Agda=cofiber}}
of a map `f : A B` is the [pushout](synthetic-homotopy-theory.pushouts.md) of
the span `B A *`.

## Definitions

### The cofiber of a map

```agda
module _
{l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A B)
where

cofiber : UU (l1 ⊔ l2)
cofiber = pushout f (terminal-map A)

cocone-cofiber : cocone f (terminal-map A) cofiber
cocone-cofiber = cocone-pushout f (terminal-map A)

inl-cofiber : B cofiber
inl-cofiber = pr1 cocone-cofiber

inr-cofiber : unit cofiber
inr-cofiber = pr1 (pr2 cocone-cofiber)

point-cofiber : cofiber
point-cofiber = inr-cofiber star

pointed-type-cofiber : Pointed-Type (l1 ⊔ l2)
pointed-type-cofiber = (cofiber , point-cofiber)

inr-pointed-map-cofiber : unit-Pointed-Type →∗ pointed-type-cofiber
inr-pointed-map-cofiber = inclusion-point-Pointed-Type (pointed-type-cofiber)

universal-property-cofiber :
universal-property-pushout f (terminal-map A) cocone-cofiber
universal-property-cofiber = up-pushout f (terminal-map A)

dependent-universal-property-cofiber :
dependent-universal-property-pushout f (terminal-map A) cocone-cofiber
dependent-universal-property-cofiber = dup-pushout f (terminal-map A)

cogap-cofiber :
{l : Level} {X : UU l} cocone f (terminal-map A) X cofiber X
cogap-cofiber = cogap f (terminal-map A)

dependent-cogap-cofiber :
{l : Level} {P : cofiber UU l}
(c : dependent-cocone f (terminal-map A) (cocone-cofiber) P)
(x : cofiber) P x
dependent-cogap-cofiber = dependent-cogap f (terminal-map A)
```

## Properties

### The cofiber of an equivalence is contractible

Note that this is not a logical equivalence. Not every map whose cofibers are
all contractible is an equivalence. For instance, the cofiber of `X 1` where
`X` is an [acyclic type](synthetic-homotopy-theory.acyclic-types.md) is by
definition contractible. Examples of noncontractible acyclic types include
[Hatcher's acyclic type](synthetic-homotopy-theory.hatchers-acyclic-type.md).

```agda
is-contr-cofiber-is-equiv :
{l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A B)
is-equiv f is-contr (cofiber f)
is-contr-cofiber-is-equiv {A = A} f is-equiv-f =
is-contr-equiv-unit'
( inr-cofiber f ,
is-equiv-universal-property-pushout
( f)
( terminal-map A)
( cocone-cofiber f)
( is-equiv-f)
( universal-property-cofiber f))
```

### The cofibers of the point inclusions in `B` are equivalent to `B`

```agda
module _
{l : Level} {B : UU l} (b : B)
where

is-equiv-inl-cofiber-point : is-equiv (inl-cofiber (point b))
is-equiv-inl-cofiber-point =
is-equiv-universal-property-pushout'
( point b)
( terminal-map unit)
( cocone-pushout (point b) (terminal-map unit))
( is-equiv-is-contr (terminal-map unit) is-contr-unit is-contr-unit)
( up-pushout (point b) (terminal-map unit))

compute-cofiber-point : B ≃ cofiber (point b)
compute-cofiber-point = (inl-cofiber (point b) , is-equiv-inl-cofiber-point)
```

## See also

- Cofibers of maps are formally dual to
[fibers of maps](foundation-core.fibers-of-maps.md)
78 changes: 78 additions & 0 deletions src/synthetic-homotopy-theory/cofibers-of-pointed-maps.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Cofibers of pointed maps

```agda
module synthetic-homotopy-theory.cofibers-of-pointed-maps where
```

<details><summary>Imports</summary>

```agda
open import foundation.constant-maps
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.unit-type
open import foundation.universe-levels

open import structured-types.pointed-maps
open import structured-types.pointed-types
open import structured-types.pointed-unit-type

open import synthetic-homotopy-theory.cocones-under-pointed-span-diagrams
open import synthetic-homotopy-theory.cocones-under-spans
open import synthetic-homotopy-theory.cofibers-of-maps
open import synthetic-homotopy-theory.dependent-cocones-under-spans
open import synthetic-homotopy-theory.dependent-universal-property-pushouts
open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.pushouts-of-pointed-types
open import synthetic-homotopy-theory.universal-property-pushouts
```

</details>

## Idea

The
{{#concept "cofiber" Disambiguation="of a pointed map of pointed types" WD="mapping cone" WDID=Q306560 Agda=cofiber-Pointed-Type}}
of a [pointed map](structured-types.pointed-maps.md) `f : A →∗ B` is the
[pushout](synthetic-homotopy-theory.pushouts-of-pointed-types.md) of the span of
pointed maps `B A *`.

## Definitions

### The cofiber of a pointed map

```agda
module _
{l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} (f : A →∗ B)
where

type-cofiber-Pointed-Type : UU (l1 ⊔ l2)
type-cofiber-Pointed-Type =
type-pushout-Pointed-Type f (terminal-pointed-map A)

point-cofiber-Pointed-Type : Pointed-Type (l1 ⊔ l2)
point-cofiber-Pointed-Type = pushout-Pointed-Type f (terminal-pointed-map A)

cofiber-Pointed-Type : Pointed-Type (l1 ⊔ l2)
cofiber-Pointed-Type = pushout-Pointed-Type f (terminal-pointed-map A)

inl-cofiber-Pointed-Type : B →∗ cofiber-Pointed-Type
inl-cofiber-Pointed-Type = inl-pushout-Pointed-Type f (terminal-pointed-map A)

inr-cofiber-Pointed-Type : unit-Pointed-Type →∗ cofiber-Pointed-Type
inr-cofiber-Pointed-Type = inr-pushout-Pointed-Type f (terminal-pointed-map A)

map-cogap-cofiber-Pointed-Type :
{l : Level} {X : Pointed-Type l}
cocone-Pointed-Type f (terminal-pointed-map A) X
type-cofiber-Pointed-Type type-Pointed-Type X
map-cogap-cofiber-Pointed-Type =
map-cogap-Pointed-Type f (terminal-pointed-map A)

cogap-cofiber-Pointed-Type :
{l : Level} {X : Pointed-Type l}
cocone-Pointed-Type f (terminal-pointed-map A) X
cofiber-Pointed-Type →∗ X
cogap-cofiber-Pointed-Type = cogap-Pointed-Type f (terminal-pointed-map A)
```
Loading

0 comments on commit 74d97dd

Please sign in to comment.