]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/relocation/lifts.ma
work in progress on frees_drops
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / relocation / lifts.ma
index 495d5e45fa9cbddac708ae4aa0f836db860e484d..be42c0ebfa4d1742cd0bf70f57d2062b9dffa9b5 100644 (file)
@@ -210,6 +210,28 @@ lemma lifts_inv_flat2: ∀f:rtmap. ∀I,V2,T2,X. ⬆*[f] X ≡ ⓕ{I}V2.T2 →
 
 (* Advanced inversion lemmas ************************************************)
 
+lemma lifts_inv_atom1: ∀f,I,Y. ⬆*[f] ⓪{I} ≡ Y →
+                       ∨∨ ∃∃s. I = Sort s & Y = ⋆s
+                        | ∃∃i,j. @⦃i, f⦄ ≡ j & I = LRef i & Y = #j
+                        | ∃∃l. I = GRef l & Y = §l.
+#f * #n #Y #H
+[ lapply (lifts_inv_sort1 … H)
+| elim (lifts_inv_lref1 … H)
+| lapply (lifts_inv_gref1 … H)
+] -H /3 width=5 by or3_intro0, or3_intro1, or3_intro2, ex3_2_intro, ex2_intro/
+qed-.
+
+lemma lifts_inv_atom2: ∀f,I,X. ⬆*[f] X ≡ ⓪{I} →
+                       ∨∨ ∃∃s. X = ⋆s & I = Sort s
+                        | ∃∃i,j. @⦃i, f⦄ ≡ j & X = #i & I = LRef j
+                        | ∃∃l. X = §l & I = GRef l.
+#f * #n #X #H
+[ lapply (lifts_inv_sort2 … H)
+| elim (lifts_inv_lref2 … H)
+| lapply (lifts_inv_gref2 … H)
+] -H /3 width=5 by or3_intro0, or3_intro1, or3_intro2, ex3_2_intro, ex2_intro/
+qed-.
+
 (* Basic_2A1: includes: lift_inv_pair_xy_x *)
 lemma lifts_inv_pair_xy_x: ∀f,I,V,T. ⬆*[f] ②{I}V.T ≡ V → ⊥.
 #f #J #V elim V -V