(*****************************)
(* 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 pf_irr (P : Prop) (p1 p2 : P) : p1 = p2.
Lemma eta A (B : A -> Type) (f : forall x, B x) : f = [eta f].
Lemma sval_inj A P : injective (@sval A P).
Lemma svalE A (P : A -> Prop) x H : sval (exist P x H) = x.
Lemma compf1 A B (f : A -> B) : f = f \o id.
Lemma comp1f A B (f : A -> B) : f = id \o f.