1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "basic_2/substitution/drop.ma".
16 include "apps_2/models/model_li.ma".
17 include "apps_2/models/model_lift.ma".
19 (* MODEL ********************************************************************)
21 (* Properties on basic slicing **********************************************)
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 *)