]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma
update in apps_2
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / models / vpushs_fold.ma
index 7f5eacc47417d5b1e481d016c73875a66aab2d8b..59f9b3e84fa4a49b717fcf69c9693e0f09650c1f 100644 (file)
@@ -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