Section PACO3.
Variable T0 : Type.
Variable T1 : forall (x0: @T0), Type.
Variable T2 : forall (x0: @T0) (x1: @T1 x0), Type.
(** ** Signatures *)
Record sig3T  :=
exist3T {
proj3T0: @T0;
proj3T1: @T1 proj3T0;
proj3T2: @T2 proj3T0 proj3T1;
}.
Definition uncurry3  (R: rel3 T0 T1 T2): rel1 sig3T :=
fun x => R (proj3T0 x) (proj3T1 x) (proj3T2 x).
Definition curry3  (R: rel1 sig3T): rel3 T0 T1 T2 :=
fun x0 x1 x2 => R (@exist3T x0 x1 x2).

Lemma uncurry_bij1_3 r : curry3 (uncurry3 r) <3== r.