X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fapps_2%2Fmodels%2Fvpushs_fold.ma;h=d017bc16a5950775b16fd35ef1c26ec2397736d5;hb=8ec019202bff90959cf1a7158b309e7f83fa222e;hp=7f5eacc47417d5b1e481d016c73875a66aab2d8b;hpb=cc6fcb70ca4f3cf01205ed722d75a2fdb2aaf779;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma b/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma index 7f5eacc47..d017bc16a 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma @@ -20,9 +20,9 @@ include "apps_2/models/vpushs.ma". (* Properties with fold for restricted closures *****************************) lemma vpushs_fold (M): is_model M → is_extensional M → - ∀L,T1,T2,gv,lv. - (∀v. L ⨁[gv] lv ≘ v → ⟦T1⟧[gv, v] ≗ ⟦T2⟧[gv, v]) → - ⟦L+T1⟧[gv, lv] ≗{M} ⟦L+T2⟧[gv, lv]. + ∀L,T1,T2,gv,lv. + (∀v. L ⨁[gv] lv ≘ v → ⟦T1⟧[gv,v] ≗ ⟦T2⟧[gv,v]) → + ⟦L+T1⟧[gv,lv] ≗{M} ⟦L+T2⟧[gv,lv]. #M #H1M #H2M #L elim L -L [| #K * [| * ]] [ #T1 #T2 #gv #lv #H12 >fold_atom >fold_atom @@ -34,7 +34,7 @@ lemma vpushs_fold (M): is_model M → is_extensional M → >fold_pair >fold_pair @IH -IH #v #Hv @(mq … H1M) [3:|*: /3 width=2 by seq_sym, md/ ] - /4 width=1 by vpushs_abbr, mr/ + /4 width=1 by vpushs_abbr, mc, mr/ | #W #IH #T1 #T2 #gv #lv #H12 >fold_pair >fold_pair /5 width=1 by vpushs_abst, mx, mr/ @@ -43,10 +43,10 @@ qed. (* Inversion lemmas with fold for restricted closures ***********************) -lemma vpushs_inv_fold (M): is_model M → - ∀L,T1,T2,gv,lv. ⟦L+T1⟧[gv, lv] ≗{M} ⟦L+T2⟧[gv, lv] → - ∀v. L ⨁[gv] lv ≘ v → ⟦T1⟧[gv, v] ≗ ⟦T2⟧[gv, v]. -#M #HM #L elim L -L [| #K * [| * ]] +lemma vpushs_inv_fold (M): is_model M → is_injective M → + ∀L,T1,T2,gv,lv. ⟦L+T1⟧[gv,lv] ≗{M} ⟦L+T2⟧[gv,lv] → + ∀v. L ⨁[gv] lv ≘ v → ⟦T1⟧[gv,v] ≗ ⟦T2⟧[gv,v]. +#M #H1M #H2M #L elim L -L [| #K * [| * ]] [ #T1 #T2 #gv #lv >fold_atom >fold_atom #H12 #v #H lapply (vpushs_inv_atom … H) -H // #Hv @@ -60,7 +60,8 @@ lemma vpushs_inv_fold (M): is_model M → >fold_pair >fold_pair #H12 #y #H elim (vpushs_inv_abbr … H) -H // #v #Hlv #Hv lapply (IH … H12 … Hlv) -IH -H12 -Hlv #H12 - /4 width=7 by ti_comp, veq_refl, md, mq/ + @(mq … H1M) [4,5: @(ti_comp … Hv) /3 width=2 by veq_refl/ |1,2: skip ] + /4 width=7 by ti_comp, ti_fwd_abbr_dx, veq_refl, mq/ | #W #IH #T1 #T2 #gv #lv >fold_pair >fold_pair #H12 #y #H elim (vpushs_inv_abst … H) -H // #v #d #Hlv #Hv