Structure Morphism  : Type := {
f       :> Prop -> Prop;
compat  : forall (x1 x2: Prop), (x1 ≡≡ x2) -> ((f x1) ≡≡ (f x2))}.
Add Parametric Morphism  (M : Morphism) :
(@f M) with signature (@eqP ==> @eqP) as extensional_prop.

(* Specifications: *)
Axiom A3 : forall (g:Morphism)(p:Prop), (forall f:Morphism, (g p ≡≡ (forall r:Prop, (f r ≡≡ g p) ≡≡ forall r:Prop,(f r ≡≡ g (p ≡≡ (forall q:Prop, q))))) ≡≡ forall q:Prop, g q).
Parameter  mu       : Prop -> Prop -> Prop.