(*****************************)
(* Axioms and extensionality *)
(*****************************)

(* extensionality is needed for domains *)
Axiom pext : forall p1 p2 : Prop, (p1 <-> p2) -> p1 = p2.Axiom fext : forall A (B : A -> Type) (f1 f2 : forall x, B x),
               (forall x, f1 x = f2 x) -> f1 = f2.

(* Specifications: *)
Lemma proof_irrelevance (P : Prop) (p1 p2 : P) : p1 = p2.
Lemma ext A (B : A -> Type) (f1 f2 : forall x, B x) : f1 = f2 -> forall x, f1 x = f2 x.