End NoRetractFromTypeToProp.
(** * [A<>Type] *)
(** No Coq universe can be equal to one of its elements. *)
Module TypeNeqSmallType.
Unset Universe Polymorphism.
Section Paradox.
(** ** Universe [U] is equal to one of its elements. *)
Let U := Type.
Variable A:U.
Hypothesis h : U=A.
(** ** Universe [U] is a retract of [A] *)
(** The following context is actually sufficient for the paradox to hold. The hypothesis [h:U=A] is only used to define [down], [up] and [up_down]. *)
Let down (X:U) : A := @eq_rect _ _ (fun X => X) X _ h.
Let up   (X:A) : U := @eq_rect_r _ _ (fun X => X) X _ h.

(* Specifications: *)
Lemma up_down : forall (X:U), up (down X) = X.
Theorem paradox : False.
End Paradox.