+inductive exP (A:Type) (P:A→Prop) : CProp ≝
+ ex_introP: ∀w:A. P w → exP A P.
+
+interpretation "dependent pair for Prop" 'dependent_pair a b =
+ (ex_introP _ _ a b).
+
+interpretation "CProp exists for Prop" 'exists \eta.x = (exP _ x).
+
+definition pi1exP ≝ λA,P.λx:exP A P.match x with [ex_introP x _ ⇒ x].
+definition pi2exP ≝
+ λA,P.λx:exP A P.match x return λx.P (pi1exP ?? x) with [ex_introP _ p ⇒ p].
+
+interpretation "exP \fst" 'pi1 = (pi1exP _ _).
+interpretation "exP \fst" 'pi1a x = (pi1exP _ _ x).
+interpretation "exP \fst" 'pi1b x y = (pi1exP _ _ x y).
+interpretation "exP \snd" 'pi2 = (pi2exP _ _).
+interpretation "exP \snd" 'pi2a x = (pi2exP _ _ x).
+interpretation "exP \snd" 'pi2b x y = (pi2exP _ _ x y).
+
+