(* Basic_2A1: uses: snv_lref *)
lemma cnv_lref_drops (h) (a) (G):
∀I,K,V,i,L. ❪G,K❫ ⊢ V ![h,a] →
- ⇩*[i] L ≘ K.ⓑ[I]V → ❪G,L❫ ⊢ #i ![h,a].
+ ⇩[i] L ≘ K.ⓑ[I]V → ❪G,L❫ ⊢ #i ![h,a].
#h #a #G #I #K #V #i elim i -i
[ #L #HV #H
lapply (drops_fwd_isid … H ?) -H // #H destruct
(* Basic_2A1: uses: snv_inv_lref *)
lemma cnv_inv_lref_drops (h) (a) (G):
∀i,L. ❪G,L❫ ⊢ #i ![h,a] →
- ∃∃I,K,V. ⇩*[i] L ≘ K.ⓑ[I]V & ❪G,K❫ ⊢ V ![h,a].
+ ∃∃I,K,V. ⇩[i] L ≘ K.ⓑ[I]V & ❪G,K❫ ⊢ V ![h,a].
#h #a #G #i elim i -i
[ #L #H
elim (cnv_inv_zero … H) -H #I #K #V #HV #H destruct
lemma cnv_inv_lref_pair (h) (a) (G):
∀i,L. ❪G,L❫ ⊢ #i ![h,a] →
- ∀I,K,V. ⇩*[i] L ≘ K.ⓑ[I]V → ❪G,K❫ ⊢ V ![h,a].
+ ∀I,K,V. ⇩[i] L ≘ K.ⓑ[I]V → ❪G,K❫ ⊢ V ![h,a].
#h #a #G #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 //
lemma cnv_inv_lref_unit (h) (a) (G):
∀i,L. ❪G,L❫ ⊢ #i ![h,a] →
- ∀I,K. ⇩*[i] L ≘ K.ⓤ[I] → ⊥.
+ ∀I,K. ⇩[i] L ≘ K.ⓤ[I] → ⊥.
#h #a #G #i #L #H #I #K #HLK
elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #_
lapply (drops_mono … HLY … HLK) -L #H destruct