X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Frelocation%2Fgr_after_pat_uni_tls.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Frelocation%2Fgr_after_pat_uni_tls.ma;h=e8104fd3ee5ac7a2a602910364d3f4a0ab88e4ea;hb=0bcf2dc1a27e38cb6cd3d44eb838d652926841e0;hp=0000000000000000000000000000000000000000;hpb=7e120a2bf2e6c0882b4f4b376c5861e001945cf4;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_uni_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_uni_tls.ma new file mode 100644 index 000000000..e8104fd3e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_uni_tls.ma @@ -0,0 +1,79 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +include "ground/relocation/gr_tls.ma". +include "ground/relocation/gr_pat.ma". +(**) (* it should not depend on gr_isi *) +include "ground/relocation/gr_isi_uni.ma". +include "ground/relocation/gr_after_isi.ma". + +(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************************************************) + +(* Properties with pat and uni and tls *******************************************************) + +(*** after_uni_succ_dx *) +lemma gr_after_pat_uni (i2) (i1): + ∀f2. @❪i1, f2❫ ≘ i2 → + ∀f. f2 ⊚ 𝐮❨i1❩ ≘ f → 𝐮❨i2❩ ⊚ ⫱*[i2] f2 ≘ f. +#i2 elim i2 -i2 +[ #i1 #f2 #Hf2 #f #Hf + elim (gr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct + elim (gr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H + lapply (gr_after_isi_inv_dx … Hg ?) -Hg + /4 width=5 by gr_after_isi_sn, gr_after_eq_repl_back, gr_after_next/ +| #i2 #IH #i1 #f2 #Hf2 #f #Hf >nsucc_inj + elim (gr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ] + [ #g2 #j1 #Hg2 #H1 #H2 destruct >nsucc_inj in Hf; #Hf + elim (gr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H destruct + nsucc_inj #Hf + elim (gr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct + elim (gr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ] + [ #g2 #j1 #Hg2 #H1 #H2 destruct