+(* Inversion lemmas with context sensitive r-computation on terms ***********)
+
+lemma cpcs_inv_cprs (h) (G) (L): ∀T1,T2. ❨G,L❩ ⊢ T1 ⬌*[h] T2 →
+ ∃∃T. ❨G,L❩ ⊢ T1 ➡*[h,0] T & ❨G,L❩ ⊢ T2 ➡*[h,0] T.
+#h #G #L #T1 #T2 #H @(cpcs_ind_dx … H) -T2
+[ /3 width=3 by ex2_intro/
+| #T #T2 #_ #HT2 * #T0 #HT10 elim HT2 -HT2 #HT2 #HT0
+ [ elim (cprs_strip … HT0 … HT2) -T /3 width=3 by cprs_step_dx, ex2_intro/
+ | /3 width=5 by cprs_step_sn, ex2_intro/
+ ]
+]
+qed-.
+
+(* Advanced inversion lemmas ************************************************)
+
+(* Basic_1: was: pc3_gen_sort *)
+(* Basic_2A1: was: cpcs_inv_sort *)
+lemma cpcs_inv_sort_bi (h) (G) (L): ∀s1,s2. ❨G,L❩ ⊢ ⋆s1 ⬌*[h] ⋆s2 → s1 = s2.
+#h #G #L #s1 #s2 #H elim (cpcs_inv_cprs … H) -H
+#T #H1 >(cprs_inv_sort1 … H1) -T #H2
+lapply (cprs_inv_sort1 … H2) -L #H destruct //
+qed-.
+
+(* Basic_2A1: was: cpcs_inv_abst1 *)
+lemma cpcs_inv_abst_sn (h) (G) (L):
+ ∀p,W1,T1,X. ❨G,L❩ ⊢ ⓛ[p]W1.T1 ⬌*[h] X →
+ ∃∃W2,T2. ❨G,L❩ ⊢ X ➡*[h,0] ⓛ[p]W2.T2 & ❨G,L❩ ⊢ ⓛ[p]W1.T1 ➡*[h,0] ⓛ[p]W2.T2.
+#h #G #L #p #W1 #T1 #T #H
+elim (cpcs_inv_cprs … H) -H #X #H1 #H2
+elim (cpms_inv_abst_sn … H1) -H1 #W2 #T2 #HW12 #HT12 #H destruct
+/3 width=6 by cpms_bind, ex2_2_intro/
+qed-.
+
+(* Basic_2A1: was: cpcs_inv_abst2 *)
+lemma cpcs_inv_abst_dx (h) (G) (L):
+ ∀p,W1,T1,X. ❨G,L❩ ⊢ X ⬌*[h] ⓛ[p]W1.T1 →
+ ∃∃W2,T2. ❨G,L❩ ⊢ X ➡*[h,0] ⓛ[p]W2.T2 & ❨G,L❩ ⊢ ⓛ[p]W1.T1 ➡*[h,0] ⓛ[p]W2.T2.
+/3 width=1 by cpcs_inv_abst_sn, cpcs_sym/ qed-.
+
+(* Basic_1: was: pc3_gen_sort_abst *)
+lemma cpcs_inv_sort_abst (h) (G) (L):
+ ∀p,W,T,s. ❨G,L❩ ⊢ ⋆s ⬌*[h] ⓛ[p]W.T → ⊥.
+#h #G #L #p #W #T #s #H
+elim (cpcs_inv_cprs … H) -H #X #H1
+>(cprs_inv_sort1 … H1) -X #H2
+elim (cpms_inv_abst_sn … H2) -H2 #W0 #T0 #_ #_ #H destruct
+qed-.
+
+(* Properties with context sensitive r-computation on terms *****************)