X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Funfold%2Ffrsupp.ma;h=1fee98341a729bb37feb62468b92d2806a142ada;hb=380ceb6b6552fd9ebd48d710ab12931d5d97e465;hp=9cfee7cfd0259ad8ecd2118de487fbbee660c35a;hpb=e8998d29ab83e7b6aa495a079193705b2f6743d3;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/unfold/frsupp.ma b/matita/matita/contribs/lambdadelta/basic_2/unfold/frsupp.ma index 9cfee7cfd..1fee98341 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/unfold/frsupp.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/unfold/frsupp.ma @@ -39,6 +39,16 @@ lemma frsupp_ind_dx: ∀L2,T2. ∀R:relation2 lenv term. @(bi_TC_ind_dx … IH1 IH2 ? ? H) qed-. +(* Baic inversion lemmas ****************************************************) + +lemma frsupp_inv_dx: ∀L1,L2,T1,T2. ⦃L1, T1⦄ ⧁+ ⦃L2, T2⦄ → ⦃L1, T1⦄ ⧁ ⦃L2, T2⦄ ∨ + ∃∃L,T. ⦃L1, T1⦄ ⧁+ ⦃L, T⦄ & ⦃L, T⦄ ⧁ ⦃L2, T2⦄. +/2 width=1 by bi_TC_decomp_r/ qed-. + +lemma frsupp_inv_sn: ∀L1,L2,T1,T2. ⦃L1, T1⦄ ⧁+ ⦃L2, T2⦄ → ⦃L1, T1⦄ ⧁ ⦃L2, T2⦄ ∨ + ∃∃L,T. ⦃L1, T1⦄ ⧁ ⦃L, T⦄ & ⦃L, T⦄ ⧁+ ⦃L2, T2⦄. +/2 width=1 by bi_TC_decomp_l/ qed-. + (* Basic properties *********************************************************) lemma frsup_frsupp: ∀L1,L2,T1,T2. ⦃L1, T1⦄ ⧁ ⦃L2, T2⦄ → ⦃L1, T1⦄ ⧁+ ⦃L2, T2⦄. @@ -79,29 +89,18 @@ qed-. (* Advanced forward lemmas **************************************************) -fact lift_frsupp_trans_aux: ∀L2,U0. ( - ∀L,K,U1,U2. ⦃L, U1⦄ ⧁+ ⦃L @@ K, U2⦄ → - ∀T1,d,e. ⇧[d, e] T1 ≡ U1 → - #{L, U1} < #{L2, U0} → - ∃T2. ⇧[d + |K|, e] T2 ≡ U2 - ) → - ∀L1,K,U1,U2. ⦃L1, U1⦄ ⧁+ ⦃L2 @@ K, U2⦄ → - ∀T1,d,e. ⇧[d, e] T1 ≡ U1 → - L2 = L1 → U0 = U1 → - ∃T2. ⇧[d + |K|, e] T2 ≡ U2. -#L2 #U0 #IH #L1 #X #U1 #U2 #H @(frsupp_ind_dx … H) -L1 -U1 /2 width=5 by lift_frsup_trans/ -#L1 #L #U1 #U #HL1 #HL2 #_ #T1 #d #e #HTU1 #H1 #H2 destruct -elim (frsup_fwd_append … HL1) #K1 #H destruct -elim (frsupp_fwd_append … HL2) #K >append_assoc #H -elim (append_inj_dx … H ?) -H // #_ #H destruct -append_assoc #H +elim (append_inj_dx … H ?) -H // #_ #H destruct +