]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/apps_2/models/veq_vdrop.ma
syntactic components detached from basic_2 become static_2
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / models / veq_vdrop.ma
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 "apps_2/models/vdrop_vlift.ma".
16 include "apps_2/models/veq.ma".
17
18 (* EVALUATION EQUIVALENCE  **************************************************)
19
20 (* Properties with evaluation drop ******************************************)
21
22 lemma vdrop_comp (M): ∀i. compatible_2 … (vdrop M i) (veq M) (veq M).
23 #M #i #lv1 #lv2 #Hlv12 #j elim (lt_or_ge j i) #Hji
24 [ >vdrop_lt // >vdrop_lt //
25 | >vdrop_ge // >vdrop_ge //
26 ]
27 qed.
28
29 (* Advanced inversion lemmas with evaluation evaluation lift ****************)
30
31 lemma veq_inv_vlift_sn (M): ∀lv1,y2,d1,i. ⫯[i←d1]lv1 ≗{M} y2 →
32                             ∃∃lv2,d2. lv1 ≗ lv2 & d1 ≗ d2 & ⫯[i←d2]lv2 ≐ y2.
33 #M #lv1 #y2 #d1 #i #H
34 @(ex3_2_intro)
35 [5: @exteq_sym @vlift_vdrop_eq |1,2: skip
36 | #j elim (lt_or_ge j i) #Hji
37   [ lapply (H j) -H >vlift_lt // >vdrop_lt //
38   | lapply (H (↑j)) -H >vlift_gt /2 width=1 by monotonic_le_plus_l/ >vdrop_ge //
39   ]
40 | lapply (H i) >vlift_eq //
41 ]
42 qed-.