add a missing blogpost
This commit is contained in:
parent
0e3a2e34e8
commit
c3174fe29b
|
@ -0,0 +1,83 @@
|
||||||
|
title: Leibniz equality for truncated types in HoTT
|
||||||
|
tags: type theory
|
||||||
|
date: 2021-01-19 00:00
|
||||||
|
---
|
||||||
|
|
||||||
|
Leibniz equality states that two things are equal if they are
|
||||||
|
industinguishable by any predicates. For a type `A` and `a, b : A`:
|
||||||
|
|
||||||
|
Leq(A, a, b) ≡ ∏ (P : A → Prop), P a ⇔ P b
|
||||||
|
|
||||||
|
In the language of HoTT we can restate the definition slightly:
|
||||||
|
|
||||||
|
Leq(A, a, b) ≡ ∏ (P : A → hProp), P a = P b
|
||||||
|
|
||||||
|
where the last equality is equality of hProps: `P a =_hProp P b`.
|
||||||
|
Since `hProp : hSet`, we have that `P a =_hProp P b : hProp` and,
|
||||||
|
hence `Leq(A, a, b) : hProp`.
|
||||||
|
|
||||||
|
Because `Leq` is a proposition it cannot describe fully the actual
|
||||||
|
identity type `Id(A, a, b)`. But it does accurately desctibe the
|
||||||
|
equality in hSets.
|
||||||
|
|
||||||
|
Let `A : hSet`. Then we can define `Leq(A, a, b) <-> Id(A, a, b)`.
|
||||||
|
First, we define `f : Id(A, a, b) → Leq(A, a, b)` by
|
||||||
|
|
||||||
|
f(p : a = b) ≡ λ (P : A → hProp). ap P p
|
||||||
|
|
||||||
|
In the other direction we define `g : Leq(A, a, b) → Id(A, a, b)`.
|
||||||
|
Suppose we have `H : Leq(A, a, b)`. Then we just pick `h(x) ≡ (a = x)`,
|
||||||
|
and `H(h) : (a = a) = (a = b)`, which we apply to `1_a`.
|
||||||
|
|
||||||
|
g(H : ∏ P, P a = P b) ≡
|
||||||
|
let h = (λx. a = x) : A → hProp in
|
||||||
|
transport (λ X. X) (H(h)) (idpath a)
|
||||||
|
|
||||||
|
So, for the equality on `hSet`s, the Leibniz equality coincides with
|
||||||
|
the ML indentity type.
|
||||||
|
|
||||||
|
The question that I have is whether we can generalize it and define a
|
||||||
|
complete tower of Leibniz equalities?
|
||||||
|
This is what I mean, specifically.
|
||||||
|
|
||||||
|
For an (n+1)-Type `A` and `a, b : A`, we can define `Leq_n(A, a, b) :
|
||||||
|
n-Type` as:
|
||||||
|
|
||||||
|
Leq_n(A, a, b) ≡ ∏ (P : A → n-Type), P a =_{n-Type} P b
|
||||||
|
|
||||||
|
We can still reuse the same functions `f` and `g`, which type check
|
||||||
|
correctly. We can also show:
|
||||||
|
|
||||||
|
g(f(p : a = b)) = p
|
||||||
|
|
||||||
|
By induction
|
||||||
|
|
||||||
|
g(f(1_a)) = g(λP. ap P 1_a) = g (λP. 1_{P_a}) =
|
||||||
|
(idpath (h(a) = h(a)))*(1_a) = 1_a
|
||||||
|
|
||||||
|
So we have a section `a = b → Leq_n(A, a, b)`. But showing that `f(g(H))
|
||||||
|
= H` is complicated. It would be nice to see if it can be derived
|
||||||
|
somehow.
|
||||||
|
|
||||||
|
In order to show that `f(g(H)) = H`, you need to show that for any `P`,
|
||||||
|
|
||||||
|
ap P (transport (H (λx. a = x)) 1a) = H P
|
||||||
|
|
||||||
|
Note that all the elements in the image of `f` satisfy this condition.
|
||||||
|
So perhaps it will make sense to restrict the type `Leq(A, a, b)` to
|
||||||
|
contain only such `H`s that satisfy the condition above?
|
||||||
|
I am not sure, but it is something that might be worth looking into.
|
||||||
|
|
||||||
|
|
||||||
|
Note that the definition of Leibniz equality that we consider here is different from the "unrestricted" Leibniz equality:
|
||||||
|
|
||||||
|
Leq_Type(A, a, b) ≡ ∏ (P : A → Type), P a ↔ P b
|
||||||
|
|
||||||
|
This Leibniz equality type has been studied in the context of intensional type theory in ["Leibniz equality is isomorphic to Martin-Löf identity, parametrically"](https://www.cambridge.org/core/journals/journal-of-functional-programming/article/abs/leibniz-equality-is-isomorphic-to-martinlof-identity-parametrically/50D76A9C314AB24E7CD46DA4A0A766EB) by Abel, Cockx, Devriese, Timany, and Wadler.
|
||||||
|
They show that, under the assumptions of parametricity/under the parametricity translation, the above `Leq_Type` is isomorphic to the standard intensional equality type.
|
||||||
|
|
||||||
|
It might be interesting to compare the "truncated" and "unrestricted" Leibniz equality types.
|
||||||
|
For example, we can represent a type as a [colimit of a sequence of n-truncations](https://homotopytypetheory.org/2014/06/30/fibrations-with-em-fiber/).
|
||||||
|
Does this connection somehow lift to representation of `Leq_Type` in terms of `Leq_n`'s?
|
||||||
|
|
||||||
|
Let me know if you have any ideas on this topic.
|
Loading…
Reference in New Issue