]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/apps_2/etc/models/model_ext.etc
update in static_2 and app_2
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / etc / models / model_ext.etc
1
2 include "ground_2/lib/exteq.ma".
3 include "apps_2/models/model_li.ma".
4 include "apps_2/models/vdrop.ma".
5
6
7 lemma vdrop_ext (M): ∀i. compatible_2 … (vdrop M i) (exteq …) (exteq …).
8 #M #i #lv1 #lv2 #Hlv12 #j elim (lt_or_ge j i) #Hji
9 [ >vdrop_lt // >vdrop_lt //
10 | >vdrop_ge // >vdrop_ge //
11 ]
12 qed.
13
14 lemma vlift_vdrop_eq (M): ∀lv,i. lv ≐{?,dd M} ⫯[i←lv i]⫰[i]lv.
15 #M #lv #i #j elim (lt_or_eq_or_gt j i) #Hji destruct
16 [ >vlift_lt // >vdrop_lt //
17 | >vlift_eq //
18 | >vlift_gt // >vdrop_ge /2 width=1 by monotonic_pred/
19   <(lt_succ_pred … Hji) //
20 ]
21 qed.
22
23 axiom vdrop_vlift_eq: ∀M,lv,d,i. lv ≐{?,dd M} ⫰[i]⫯[i←d]lv.
24 (*
25 #M #lv #d #i #j elim (lt_or_eq_or_gt j i) #Hji destruct
26 *)
27
28 lemma ext_inv_vlift_sn (M): ∀lv1,y,i,d. ⫯[i←d]lv1 ≐{?,dd M} y →
29                             ∧∧ d = y i & lv1 ≐ ⫰[i]y.
30 #M #lv1 #y #i #d #H @conj
31 [ lapply (H i) -H >vlift_eq //
32 | @exteq_trans [2: @(vdrop_vlift_eq … d i) | skip ]
33   @vdrop_ext //
34 ]
35 qed-.
36
37 lemma ext_inv_vlift_sn (M): ∀lv1,y,i,d. ⫯[i←d]lv1 ≐{?,dd M} y →
38                             ∃∃lv2. lv1 ≐ lv2 & ⫯[i←d]lv2 = y.
39
40 lemma li_repl (M) (gv): ∀lv1,L. lv1 ϵ ⟦L⟧{M}[gv] →
41                         ∀lv2. lv1 ≐ lv2 → lv2 ϵ ⟦L⟧{M}[gv].
42 #M #gv #lv1 #L #H elim H -lv1 -L
43 [ //
44 |
45 | #lv1 #d #K #W #_ #IH #y #H    
46
47
48
49
50 lemma ext_veq (M): is_model M →
51                    ∀lv1,lv2. lv1 ≐ lv2 → lv1 ≗{M} lv2.
52 /2 width=1 by mr/ qed.
53
54 lemma veq_repl_exteq (M): is_model M →
55                           replace_2 … (veq M) (exteq …) (exteq …).
56 /2 width=5 by mq/ qed-.
57
58 lemma exteq_veq_trans (M): ∀lv1,lv. lv1 ≐ lv →
59                            ∀lv2. lv ≗{M} lv2 → lv1 ≗ lv2.
60 // qed-.