(* *)
(**************************************************************************)
-include "Basic_2/substitution/tps_lift.ma".
-include "Basic_2/reducibility/trf.ma".
include "Basic_2/reducibility/tpr.ma".
(* CONTEXT-FREE NORMAL TERMS ************************************************)
(* Basic inversion lemmas ***************************************************)
-lemma tnf_inv_abst: โV,T. โ[๐{Abst}V.T] โ โ[V] โง โ[T].
+lemma tnf_inv_abst: โV,T. ๐[โV.T] โ ๐[V] โง ๐[T].
#V1 #T1 #HVT1 @conj
-[ #V2 #HV2 lapply (HVT1 (๐{Abst}V2.T1) ?) -HVT1 /2 width=1/ -HV2 #H destruct //
-| #T2 #HT2 lapply (HVT1 (๐{Abst}V1.T2) ?) -HVT1 /2 width=1/ -HT2 #H destruct //
+[ #V2 #HV2 lapply (HVT1 (โV2.T1) ?) -HVT1 /2 width=1/ -HV2 #H destruct //
+| #T2 #HT2 lapply (HVT1 (โV1.T2) ?) -HVT1 /2 width=1/ -HT2 #H destruct //
]
qed-.
-lemma tnf_inv_appl: โV,T. โ[๐{Appl}V.T] โ โงโง โ[V] & โ[T] & ๐[T].
+lemma tnf_inv_appl: โV,T. ๐[โV.T] โ โงโง ๐[V] & ๐[T] & ๐[T].
#V1 #T1 #HVT1 @and3_intro
-[ #V2 #HV2 lapply (HVT1 (๐{Appl}V2.T1) ?) -HVT1 /2 width=1/ -HV2 #H destruct //
-| #T2 #HT2 lapply (HVT1 (๐{Appl}V1.T2) ?) -HVT1 /2 width=1/ -HT2 #H destruct //
+[ #V2 #HV2 lapply (HVT1 (โV2.T1) ?) -HVT1 /2 width=1/ -HV2 #H destruct //
+| #T2 #HT2 lapply (HVT1 (โV1.T2) ?) -HVT1 /2 width=1/ -HT2 #H destruct //
| generalize in match HVT1; -HVT1 elim T1 -T1 * // * #W1 #U1 #_ #_ #H
[ elim (lift_total V1 0 1) #V2 #HV12
- lapply (H (๐{Abbr}W1.๐{Appl}V2.U1) ?) -H /2 width=3/ -HV12 #H destruct
- | lapply (H (๐{Abbr}V1.U1) ?) -H /2 width=1/ #H destruct
+ lapply (H (โW1.โV2.U1) ?) -H /2 width=3/ -HV12 #H destruct
+ | lapply (H (โV1.U1) ?) -H /2 width=1/ #H destruct
]
qed-.
-lemma tnf_inv_abbr: โV,T. โ[๐{Abbr}V.T] โ False.
+lemma tnf_inv_abbr: โV,T. ๐[โV.T] โ False.
#V #T #H elim (is_lift_dec T 0 1)
[ * #U #HTU
lapply (H U ?) -H /2 width=3/ #H destruct
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 width=3/ -HT2 #H destruct /3 width=2/
+ elim (tps_full (โ) V T (โ. โV) 0 ?) // #T2 #T1 #HT2 #HT12
+ lapply (H (โV.T2) ?) -H /2 width=3/ -HT2 #H destruct /3 width=2/
]
qed.
-lemma tnf_inv_cast: โV,T. โ[๐{Cast}V.T] โ False.
+lemma tnf_inv_cast: โV,T. ๐[โฃV.T] โ False.
#V #T #H lapply (H T ?) -H /2 width=1/ #H
@(discr_tpair_xy_y โฆ H)
qed-.
-
-(* Basic properties *********************************************************)
-
-lemma tpr_tif_eq: โT1,T2. T1 โ T2 โ ๐[T1] โ T1 = T2.
-#T1 #T2 #H elim H -T1 -T2
-[ //
-| * #V1 #V2 #T1 #T2 #_ #_ #IHV1 #IHT1 #H
- [ elim (tif_inv_appl โฆ H) -H #HV1 #HT1 #_
- >IHV1 -IHV1 // -HV1 >IHT1 -IHT1 //
- | elim (tif_inv_cast โฆ H)
- ]
-| #V1 #V2 #W #T1 #T2 #_ #_ #_ #_ #H
- elim (tif_inv_appl โฆ H) -H #_ #_ #H
- elim (simple_inv_bind โฆ H)
-| * #V1 #V2 #T1 #T #T2 #_ #_ #HT2 #IHV1 #IHT1 #H
- [ -HT2 -IHV1 -IHT1 elim (tif_inv_abbr โฆ H)
- | <(tps_inv_refl_SO2 โฆ HT2 ?) -HT2 //
- elim (tif_inv_abst โฆ H) -H #HV1 #HT1
- >IHV1 -IHV1 // -HV1 >IHT1 -IHT1 //
- ]
-| #V #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #_ #H
- elim (tif_inv_appl โฆ H) -H #_ #_ #H
- elim (simple_inv_bind โฆ H)
-| #V1 #T1 #T2 #T #_ #_ #_ #H
- elim (tif_inv_abbr โฆ H)
-| #V1 #T1 #T #_ #_ #H
- elim (tif_inv_cast โฆ H)
-]
-qed.
-
-theorem tif_tnf: โT1. ๐[T1] โ โ[T1].
-/2 width=1/ qed.
-
-(* Note: this property is unusual *)
-theorem tnf_trf_false: โT1. โ[T1] โ โ[T1] โ False.
-#T1 #H elim H -T1
-[ #V #T #_ #IHV #H elim (tnf_inv_abst โฆ H) -H /2 width=1/
-| #V #T #_ #IHT #H elim (tnf_inv_abst โฆ H) -H /2 width=1/
-| #V #T #_ #IHV #H elim (tnf_inv_appl โฆ H) -H /2 width=1/
-| #V #T #_ #IHV #H elim (tnf_inv_appl โฆ H) -H /2 width=1/
-| #V #T #H elim (tnf_inv_abbr โฆ H)
-| #V #T #H elim (tnf_inv_cast โฆ H)
-| #V #W #T #H elim (tnf_inv_appl โฆ H) -H #_ #_ #H
- elim (simple_inv_bind โฆ H)
-]
-qed.
-
-theorem tnf_tif: โT1. โ[T1] โ ๐[T1].
-/2 width=3/ qed.
-
-lemma tnf_abst: โV,T. โ[V] โ โ[T] โ โ[๐{Abst}V.T].
-/4 width=1/ qed.
-
-lemma tnf_appl: โV,T. โ[V] โ โ[T] โ ๐[T] โ โ[๐{Appl}V.T].
-/4 width=1/ qed.