Lecture 2: Equivalences
Recall that
\[IsContr \, A ≝ \sum\limits_{ x:A } \prod_{y:A} x =_A y \\ IsHProp \, A ≃ \prod_{x, y: A} x =_A y \quad\text{(mere proposition)}\]Equivalences
- $A ≃ B$
- $f: A ⟶ B$
$IsEquiv \, f$ is a mere proposition.
First attempt at defining an equivalence
Quasi-inverse:
\[Q_{inv}(f: A ⟶ B) ≝ \lbrace q_{inv}: B ⟶ A, \\ q_{sect} = \prod_x q_{inv}(f \, x) = x \\ q_{retr} = \prod_y f(q_{inv} \, y) = y \rbrace\]But the definition, is not quite accurate, because
- you can go from $x$ to $x$ by composing $f$ and its inverse
- and there’s no way to tell this path from $x$ to $x$ is $refl_x$
so it’s not a proposition
Correct definition
\[ap \, f: x=y ⟶ fx = fy\] \[IsEquiv \, f ≝ \lbrace \\ g ≝ einv: B ⟶ A, \\ η ≝ esect : ∀x. einv(f \, x)=x \\ ε ≝ eretr: ∀y. f(einv \, y)=y \\ τ ≝ eadj: ∀x:A, ap f (esect \, x) = eretr(g \, x) \rbrace\]NB: By abuse of notation, we write \(f(η \, x) = ε(g \, x)\)
instead of $ap\, f(η \, x) = ε(g \, x)$
In category theoretical terms: we have a half-adjunction (half-adjoint equivalence): we ensure that one of the triangles commute
But that’s not a big deal, we can recover the other one:
\[eadj': ∀y:B, ap \, g (eretr \, y) = esect ( f \, y)\]What’s funny is that if we add $eadj’$ to the definition, we no longer have a proposition. So we don’t add it, and show that we can obtain it:
Naturality of $H$:
- $f, g: A ⟶ B$
- $p: x =_A y$
- $H: ∀x. f x = g x$
Corollary: with $p = H(x)$
- $f: A ⟶ A$
- $H: f \sim id ≡ ∀x. fx = x$
- $f (H \, x) = H(f \, x): f(f \, x) = f \, x$
- $p ≝ εy$
- $H ≝ ε: f g \sim id$
- $x = fgy$
and we have a similar square for the unit $η$.
- HoTT quasi-inverses are similar to categorical equivalences
- HoTT equivalences are similar to categorical adjoints
NB: beware, $(g, η, ε’, τ)$ is a dependent tuple (each coordinate depends on the previous ones), to show an equality between two such tuples, one has to do it up to transport for second coordinates (and those coming after).
Recall that
Fixpoint IsTrunc n A := match n with
| 0 => IsContr A
| S n => forall x y:A, IsTrunc n (x=y)
end.
Now, we will relate the equivalence with contractibility.
Equivalence VS Contractibility
Homotopy fibers
- $f: A ⟶ B$
- $y: B$
- Fiber of $f$ over $y$:
- \[fib_f \, y ≝ \sum\limits_{ x:A } fx = y\]
- $x:A$
- Is contractible: $\sum\limits_{ y:A } x=y$
We want to show
\[(x, e) = (gy, εy)\]for $x: A, \; e: fx=y$
That is:
-
$x = gy$
- $y \overset{e^{-1}}{=} f x = f(gy) \overset{ε(y)}{=} y$
-
then the other equality up to transport
Then, conversely:
\[IsContr(fib_f \, y) ⟶ IsEquiv \, f\]is inhabited (cf. Trunc.v
Coq file)
In fact, we even have:
\[IsContr(fib_f \, y) ≃ IsEquiv \, f\]To prove that, we resort to a trick consisting in rewriting what it means to be an equivalence:
- Right invertible:
- \[rinv \, f ≝ \sum\limits_{ g:B ⟶ A } ∀y. fg(y)=y\]
So that
\[IsEquiv \, f = \sum\limits_{ (g, ε): rinv \, f } rcoh_f(g, ε)\]where
\[rcoh_f(g, ε) ≡ \sum\limits_{ η: \prod\limits_{ x } gfx=x } \prod\limits_{ x } f(η x) = ε(f x)\]Indeed:
\[rinv \, f ≃ \sum\limits_{ g: B ⟶ A } fg = id ≡ fib_{f \circ \_} \, id\]So
\[IsEquiv \, f ≃ IsEquiv (f \circ \_)\]and
\[IsEquiv \, f ≃ IsContr \, (rinv \, f)\]On top of that:
\[rcoh_f(g, ε) ≃ \prod\limits_{ x:A } (gfx, εfx) =_{fib_f \, fx} (x, refl_x)\]But the fiber over an equivalence $fib_f \, (fx)$ is contractible (as we’ve seen before), and
\[IsContr \, A ⟶ ∀x, y:A. IsContr \, (x=_A y)\]Therefore
\[rcoh_f(g, ε) ≃ \underbrace{\prod\limits_{ x:A } (gfx, εfx) =_{fib_f \, fx} (x, refl_x)}_{\text{ is contractible}}\]and that’s it! We have
\[IsEquiv \, f\]Functional extensionality as an Equivalence
\[apD10: f=g ⟶ ∀x, fx = gx\]By path induction, with $λx. refl_{f(x)}: ∀x, fx=fx$
\[FunExt: IsEquiv \, (apD10 \, f \, g)\]But by defining
\[BadFunExt: \prod\limits_{ x } fx = gx ⟶ f =g\]then
\[BadFunExt \, (λx. refl_{f(x)}) ≠ refl_g\]Whereas:
\[(e\_inv \; apD10)(apD10 \, e) = e \quad\text{(with the section of the equivalence)}\]with
\[(e\_inv \; apD10)(apD10 \, refl_g) = refl_g\]so that
\[(e\_inv \; apD10) \, (λx. refl_{f(x)}) ≠ refl_g\]Moreover, the retraction of the equivalence gives us:
\[apD10 \; (e\_inv \; apD10 \, e) = e: ∀x. fx=gx\]Univalence
Expressing it like
\[A ≃ B ⟶ A = B\]is bad!
Instead, you have an equivalence:
\[A=B \overset{eq\_to\_equiv}{⟶} A≃B\]If you don’t state it with an equivalence, you’re not sure that $refl$ is sent to the canonical $Equiv_id \, A$
- Univalence:
-
for all $A, B: Type$:
\[IsEquiv \; (eq\_to\_equiv \, A \, B)\]
Leave a comment