§ HoTTesT: Identity types
- lecture .
- We already have judgemental equality. (computational equality: beta eta alpha equality).
- We will next introduce propositional equality.
- Proving an equality => constructing a term of the type of equalities.
- We can prove many judgemental equalities (eg.
add x 0 =judgement= x
), but not all the ones we want (eg. add 0 x =judgement= x
). - We can't because we need to do induction on
x
. - When we use natural number elimination / induction, we must produce a term of a type.
- What type?!
- Type constructors internalize structure. Eg. at a meta level, we can talk about contexts
x:A, y:B(x), z:C(x,y)
. - But internally, we will need to be able to talk about contents, we can use sigma types!
Σ(x:A) Σ(y: Bx) Σ z:C(x, y)
lets us internalize contexts! - Similarly, we can think about dependent terms as
meta
functions. Example, x:A,y:B(x) |- c(x,y): C(x, y)
. We can think of this as a function that takes an x
and a y
and produce a c(x,y)
. See that pi types internalize this notion! c: (x:A) -> (y: B(x)) -> C(x,y)
. - Bool, Nat, etc. are internalizing the usual booleans, naturals, etc.
- The universe type internalizes the judement
A is a type
via A: Type
. - The identity type internalizes the meta notion of judgemental equality (how? Doesn't it prove strictly more?)
§ Identity Type
- =-formation: A type
a: A
, b: B
, then we have a type a =A b type
. -
=
-intro: a:A| r_a: a =A a
. ( r
= reflexivity). -
=
-elim: x: A, y: A, z: x =A y |- D(x, y, z) type
, and given x:A |- d: D(x, x, r_x)
, then we have ind=(d, x, y, z): D(x, y, z)