]> 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 lemma vlift_ext (M): ∀i. compatible_3 … (vlift M i) (eq …) (exteq …) (exteq …).
7 #M #i #d1 #d2 #Hd12 #lv1 #lv2 #HLv12 #j
8 elim (lt_or_eq_or_gt j i) #Hij destruct
9 [ >vlift_lt // >vlift_lt //
10 | >vlift_eq >vlift_eq //
11 | >vlift_gt // >vlift_gt //
12 ]
13 qed.
14
15 lemma vdrop_ext (M): ∀i. compatible_2 … (vdrop M i) (exteq …) (exteq …).
16 #M #i #lv1 #lv2 #Hlv12 #j elim (lt_or_ge j i) #Hji
17 [ >vdrop_lt // >vdrop_lt //
18 | >vdrop_ge // >vdrop_ge //
19 ]
20 qed.
21
22 lemma vlift_vdrop_eq (M): ∀lv,i. lv ≐{?,dd M} ⫯[i←lv i]⫰[i]lv.
23 #M #lv #i #j elim (lt_or_eq_or_gt j i) #Hji destruct
24 [ >vlift_lt // >vdrop_lt //
25 | >vlift_eq //
26 | >vlift_gt // >vdrop_ge /2 width=1 by monotonic_pred/
27   <(lt_succ_pred … Hji) //
28 ]
29 qed.
30
31 axiom vdrop_vlift_eq: ∀M,lv,d,i. lv ≐{?,dd M} ⫰[i]⫯[i←d]lv.
32 (*
33 #M #lv #d #i #j elim (lt_or_eq_or_gt j i) #Hji destruct
34 *)
35
36 lemma ext_inv_vlift_sn (M): ∀lv1,y,i,d. ⫯[i←d]lv1 ≐{?,dd M} y →
37                             ∧∧ d = y i & lv1 ≐ ⫰[i]y.
38 #M #lv1 #y #i #d #H @conj
39 [ lapply (H i) -H >vlift_eq //
40 | @exteq_trans [2: @(vdrop_vlift_eq … d i) | skip ]
41   @vdrop_ext //
42 ]
43 qed-.
44
45 lemma ext_inv_vlift_sn (M): ∀lv1,y,i,d. ⫯[i←d]lv1 ≐{?,dd M} y →
46                             ∃∃lv2. lv1 ≐ lv2 & ⫯[i←d]lv2 = y.
47
48 lemma li_repl (M) (gv): ∀lv1,L. lv1 ϵ ⟦L⟧{M}[gv] →
49                         ∀lv2. lv1 ≐ lv2 → lv2 ϵ ⟦L⟧{M}[gv].
50 #M #gv #lv1 #L #H elim H -lv1 -L
51 [ //
52 |
53 | #lv1 #d #K #W #_ #IH #y #H    
54
55
56
57
58 lemma ext_veq (M): is_model M →
59                    ∀lv1,lv2. lv1 ≐ lv2 → lv1 ≗{M} lv2.
60 /2 width=1 by mr/ qed.
61
62 lemma veq_repl_exteq (M): is_model M →
63                           replace_2 … (veq M) (exteq …) (exteq …).
64 /2 width=5 by mq/ qed-.
65
66 lemma exteq_veq_trans (M): ∀lv1,lv. lv1 ≐ lv →
67                            ∀lv2. lv ≗{M} lv2 → lv1 ≗ lv2.
68 // qed-.
69
70 lemma ti_ext_l (M): is_model M →
71                     ∀T,gv,lv1,lv2. lv1 ≐ lv2 →
72                     ⟦T⟧[gv, lv1] ≗{M} ⟦T⟧[gv, lv2].
73 /3 width=1 by ti_comp_l, ext_veq/ qed.
74
75 lemma valign_ext (M) (l): compatible_2 … (valign M l) (exteq …) (exteq …).
76 #M #l #lv1 #lv2 #HLv12 #i
77 >valign_rw >valign_rw //
78 qed.