End Paradox.
End NoRetractToModalProposition.
(** * The negative fragment of [Prop] is not a retract *)
(** The existence in the pure Calculus of Constructions of a retract from the negative fragment of [Prop] into a negative proposition is inconsistent. This is an instance of the previous result. *)
Module NoRetractToNegativeProp.
(** ** The universe of negative propositions. *)
Definition NProp := { P:Prop | ~~P -> P }.
Definition El : NProp -> Prop := @proj1_sig _ _.
Section Paradox.
(** ** Retract of the negative fragment of [Prop] in a small type *)
(** The retract is axiomatized using logical equivalence as the equality on propositions. *)
Variable bool : NProp.
Variable p2b : NProp -> El bool.
Variable b2p : El bool -> NProp.
Hypothesis p2p1 : forall A:NProp, El (b2p (p2b A)) -> El A.
Hypothesis p2p2 : forall A:NProp, El A -> El (b2p (p2b A)).
(** ** Paradox *)

(* Specifications: *)
Theorem paradox : forall B:NProp, El B.
End Paradox.