Ltac j_inversion :=
match goal with
| h: j _ (TAbs _) _ |- _ =>
inversion h; clear h; subst
| h: j _ (TTyAbs _) _ |- _ =>
inversion h; clear h; subst
end.

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