(* Inductive t : Type -> Type := *)
(* | Just : forall (A : Type), t A -> t A. *)
(* Fixpoint test {A : Type} (x : t A) : t (A + unit) := *)
(*   match x in t A return t (A + unit) with *)
(*   | Just T x => @test T x *)
(*   end. *)
Definition Type1 := Type.
Definition Type2 := Type.
Definition cast (x:Type2) := x:Type1.

Axiom f: Type2 -> Prop.