End NoRetractToNegativeProp.
(** * Prop is not a retract *)
(** The existence in the pure Calculus of Constructions of a retract from [Prop] into a small type of [Prop] is inconsistent. This is a special case of the previous result. *)
Module NoRetractFromSmallPropositionToProp.
(** ** The universe of propositions. *)
Definition NProp := { P:Prop | P -> P}.
Definition El : NProp -> Prop := @proj1_sig _ _.
Section MParadox.
(** ** Retract of [Prop] in a small type, using the identity modality. *)
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 *)

Theorem mparadox : forall B:NProp, El B.
End MParadox.