Martin Escardo. Notes originally written for the module Advanced Functional Programming of the University of Birmingham, UK.
Function extensionality
Recall that we defined pointwise equalityf ∼ g
of
functions in the identity type handout.
The principle of function extensionality says that pointwise equal
functions are equal and is given by the following type
FunExt
:
open import identity-type FunExt = {A : Type} {B : A → Type} {f g : (x : A) → B x} → f ∼ g → f ≡ g
Unfortunately, this principle is not provable or disprovable in Agda or MLTT (we say that it is independent). But it is provable in Cubical Agda, which is based on Cubical Type Theory and is outside the scope of these lecture notes. Sometimes we will use function extensionality as an explicit assumption.