[ #V2 #HV2 lapply (HVT1 (๐{Abst}V2.T1) ?) -HVT1 /2/ -HV2 #H destruct -V1 T1 //
| #T2 #HT2 lapply (HVT1 (๐{Abst}V1.T2) ?) -HVT1 /2/ -HT2 #H destruct -V1 T1 //
]
-qed.
+qed-.
lemma tnf_inv_appl: โV,T. โ[๐{Appl}V.T] โ โงโง โ[V] & โ[T] & ๐[T].
#V1 #T1 #HVT1 @and3_intro
lapply (H (๐{Abbr}W1.๐{Appl}V2.U1) ?) -H /2/ -HV12 #H destruct
| lapply (H (๐{Abbr}V1.U1) ?) -H /2/ #H destruct
]
+qed-.
+
+lemma tnf_inv_abbr: โV,T. โ[๐{Abbr}V.T] โ False.
+#V #T #H elim (is_lift_dec T 0 1)
+[ * #U #HTU
+ lapply (H U ?) -H /2 width=3/ #H destruct -U;
+ elim (lift_inv_pair_xy_y โฆ HTU)
+| #HT
+ elim (tps_full (โ) V T (โ. ๐{Abbr} V) 0 ?) // #T2 #T1 #HT2 #HT12
+ lapply (H (๐{Abbr}V.T2) ?) -H /2/ -HT2 #H destruct -T /3 width=2/
+]
qed.
-axiom tnf_inv_abbr: โV,T. โ[๐{Abbr}V.T] โ False.
-
lemma tnf_inv_cast: โV,T. โ[๐{Cast}V.T] โ False.
-#V #T #H lapply (H T ?) -H /2/
-qed.
+#V #T #H lapply (H T ?) -H /2 width=1/ #H
+@(discr_tpair_xy_y โฆ H)
+qed-.
(* Basic properties *********************************************************)