(* The following lemma looks like an inversion of [JTyAbs], but it
   is not truly one, because it is proved by applying weakening and
   [JTyApp], hence increasing the height of the derivation by one. *)

Goal (* phony_inversion_JTyAbs: *)
  forall n E t T,
  j n E t (TyForall T) ->
  j (S n) (map (shift 0) E) t T.

Lemma type_preservation: forall m E t1 T, j m E t1 T -> forall t2, red t1 t2 -> exists n, j n E t2 T.