X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground_2%2Frelocation%2Frtmap_coafter.ma;h=44f491de5f8e4a4879c74e80a55ad9ab14bb6812;hb=66962864d3703b8f3b44e95d32c03ed50ceee6f1;hp=4864c9bae037f151c403f9d309d898701c6b52ca;hpb=87d9d5e65251b91b9d77c8f67069008dcec919d4;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_coafter.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_coafter.ma index 4864c9bae..44f491de5 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_coafter.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_coafter.ma @@ -236,15 +236,26 @@ lemma coafter_mono_eq: ∀f1,f2,f. f1 ~⊚ f2 ≡ f → ∀g1,g2,g. g1 ~⊚ g2 f1 ≗ g1 → f2 ≗ g2 → f ≗ g. /4 width=4 by coafter_mono, coafter_eq_repl_back1, coafter_eq_repl_back2/ qed-. -(* Inversion lemmas with pushs **********************************************) - -lemma coafter_fwd_pushs: ∀n,g2,g1,g. g2 ~⊚ g1 ≡ g → @⦃0, g2⦄ ≡ n → - ∃f. ↑*[n]f = g. -#n elim n -n /2 width=2 by ex_intro/ -#n #IH #g2 #g1 #g #Hg #Hg2 -cases (at_inv_pxn … Hg2) -Hg2 [ |*: // ] #f2 #Hf2 #H2 -cases (coafter_inv_nxx … Hg … H2) -Hg -H2 #f #Hf #H0 destruct -elim (IH … Hf Hf2) -g1 -g2 -f2 /2 width=2 by ex_intro/ +(* Forward lemmas with pushs ************************************************) + +lemma coafter_fwd_pushs: ∀j,i,g2,f1,g. g2 ~⊚ ↑*[i]f1 ≡ g → @⦃i, g2⦄ ≡ j → + ∃f. ↑*[j] f = g. +#j elim j -j +[ #i #g2 #f1 #g #Hg #H + elim (at_inv_xxp … H) -H [|*: // ] #f2 #H1 #H2 destruct + /2 width=2 by ex_intro/ +| #j #IH * [| #i ] #g2 #f1 #g #Hg #H + [ elim (at_inv_pxn … H) -H [|*: // ] #f2 #Hij #H destruct + elim (coafter_inv_nxx … Hg) -Hg [|*: // ] #f #Hf #H destruct + elim (IH … Hf Hij) -f1 -f2 -IH /2 width=2 by ex_intro/ + | elim (at_inv_nxn … H) -H [1,4: * |*: // ] #f2 #Hij #H destruct + [ elim (coafter_inv_ppx … Hg) -Hg [|*: // ] #f #Hf #H destruct + elim (IH … Hf Hij) -f1 -f2 -i /2 width=2 by ex_intro/ + | elim (coafter_inv_nxx … Hg) -Hg [|*: // ] #f #Hf #H destruct + elim (IH … Hf Hij) -f1 -f2 -i /2 width=2 by ex_intro/ + ] + ] +] qed-. (* Inversion lemmas with tail ***********************************************) @@ -267,15 +278,26 @@ qed-. (* Properties with iterated tail ********************************************) -lemma coafter_tls: ∀n,f1,f2,f. @⦃0, f1⦄ ≡ n → - f1 ~⊚ f2 ≡ f → ⫱*[n]f1 ~⊚ f2 ≡ ⫱*[n]f. -#n elim n -n // -#n #IH #f1 #f2 #f #Hf1 #Hf -cases (at_inv_pxn … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 -cases (coafter_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct -