recursioncoqequalitychurch-encoding

Recursion for Church encoding of equality


For the Church encoding N of positive integers, one can define a recursion principle nat_rec :

Definition N : Type :=
forall (X:Type), X->(X->X)->X.

Definition nat_rec (z:N)(s:N->N)(n:N) : N :=
n N z s.

What is the recursion principle equal_rec for the following Church encoding equal of equality?

Definition equal (x:A) : A->Type :=
fun x' => forall (P:A->Type), P x -> P x'.

Definition equal_rec (* ... *)

Solution

  • Like the case of natural numbers, the recursion principle is simply an eta expansion:

    Definition equal (A:Type) (x:A) : A->Type :=
      fun x' => forall (P:A->Type), P x -> P x'.
    
    Definition equal_rec (A:Type) (x y : A) (e : equal x y) (P : A -> Type) : P x -> P y :=
      e P.