-interpretation "exT \fst" 'pi1 = (pi1exT _ _).
-interpretation "exT \fst" 'pi1a x = (pi1exT _ _ x).
-interpretation "exT \fst" 'pi1b x y = (pi1exT _ _ x y).
-interpretation "exT \snd" 'pi2 = (pi2exT _ _).
-interpretation "exT \snd" 'pi2a x = (pi2exT _ _ x).
-interpretation "exT \snd" 'pi2b x y = (pi2exT _ _ x y).
+definition pi1exP ≝ λA,P.λx:exP A P.match x with [ex_introP x _ ⇒ x].
+
+interpretation "exP \fst" 'pi1 = (pi1exP ? ?).
+interpretation "exP \fst" 'pi1a x = (pi1exP ? ? x).
+interpretation "exP \fst" 'pi1b x y = (pi1exP ? ? x y).
+
+definition pi2exP ≝
+ λA,P.λx:exP A P.match x return λx.P (pi1exP ?? x) with [ex_introP _ p ⇒ p].
+
+interpretation "exP \snd" 'pi2 = (pi2exP ? ?).
+interpretation "exP \snd" 'pi2a x = (pi2exP ? ? x).
+interpretation "exP \snd" 'pi2b x y = (pi2exP ? ? x y).