(* Basic_2A1: uses: snv_lref *)
lemma cnv_lref_drops (a) (h) (G): ∀I,K,V,i,L. ⦃G, K⦄ ⊢ V ![a, h] →
- ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G, L⦄ ⊢ #i ![a, h].
+ ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G, L⦄ ⊢ #i ![a, h].
#a #h #G #I #K #V #i elim i -i
[ #L #HV #H
lapply (drops_fwd_isid … H ?) -H // #H destruct
]
qed-.
+(* Advanced forward lemmas **************************************************)
+
+lemma cnv_lref_fwd_drops (a) (h) (G):
+ ∀i,L. ⦃G, L⦄ ⊢ #i ![a, h] →
+ ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G, K⦄ ⊢ V ![a, h].
+#a #h #o #i #L #H #I #K #V #HLK
+elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #HX
+lapply (drops_mono … HLY … HLK) -L #H destruct //
+qed-.
+
(* Properties with generic slicing for local environments *******************)
(* Basic_2A1: uses: snv_lift *)
-lemma csv_lifts (a) (h): ∀G. d_liftable1 (cnv a h G).
+lemma cnv_lifts (a) (h): ∀G. d_liftable1 (cnv a h G).
#a #h #G #K #T
@(fqup_wf_ind_eq (Ⓣ) … G K T) -G -K -T #G0 #K0 #T0 #IH #G #K * * [|||| * ]
[ #s #HG #HK #HT #_ #b #f #L #_ #X #H2 destruct