]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/apps_2/etc/models/model_drop.etc
update in models and ground_2
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / etc / models / model_drop.etc
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 include "basic_2/substitution/drop.ma".
16 include "apps_2/models/model_li.ma".
17 include "apps_2/models/model_lift.ma".
18
19 (* MODEL ********************************************************************)
20
21 (* Properties on basic slicing **********************************************)
22
23 lemma sound_drop: ∀M. sound M → extensional M →
24                   ∀sv,gv,L,K,s,l,m. ⬇[s, l, m] L ≡ K →
25                   ∀lv. lv ∈ 〚L〛⦋M⦌{sv, gv} → ↓[l, m] lv ∈ 〚K〛⦋M⦌{sv, gv}.
26 #M #H1M #H2M #sv #gv #L #K #s #l #m #H elim H -l -m /2 width=3 by li_veq/
27 [ * #L #K #V #m #_ #IHLK #x #H -H1M -H2M
28   [ elim (li_inv_ldef … H) | elim (li_inv_ldec … H) ] -H
29   /4 width=5 by li_veq, lower_raise_be, lower_veq/ (* 2 x li_veq *)
30 | * #L #K #W #V #l #m #_ #HVW #IHLK #x #H
31   [ elim (li_inv_ldef … H) #lv | elim (li_inv_ldec … H) #lv #d ] -H
32   <(sound_fwd_lift M H1M H2M sv gv … HVW lv) -H1M -H2M -HVW
33   /5 width=6 by li_veq, li_ldec, li_ldef, lower_raise_lt, lower_veq/ (* 2 x li_veq *)
34 ]
35 qed-.