]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma
update in delayed_updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / substitution / lift_structure.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 "delayed_updating/substitution/lift_eq.ma".
16 include "delayed_updating/syntax/path_structure.ma".
17 include "delayed_updating/syntax/path_proper.ma".
18
19 (* LIFT FOR PATH ***********************************************************)
20
21 (* Basic constructions with structure **************************************)
22
23 lemma structure_lift (p) (f):
24       ⊗p = ⊗↑[f]p.
25 #p @(path_ind_lift … p) -p // #p #IH #f
26 <lift_path_L_sn //
27 qed.
28
29 lemma lift_structure (p) (f):
30       ⊗p = ↑[f]⊗p.
31 #p @(path_ind_lift … p) -p //
32 qed.
33
34 (* Properties with proper condition for path ********************************)
35
36 lemma lift_append_proper_dx (p2) (p1) (f): Ꝕp2 →
37       (⊗p1)●(↑[↑[p1]f]p2) = ↑[f](p1●p2).
38 #p2 #p1 @(path_ind_lift … p1) -p1 //
39 [ #n | #n #l #p1 |*: #p1 ] #IH #f #Hp2
40 [ elim (ppc_inv_lcons … Hp2) -Hp2 #l #q #H destruct //
41 | <lift_path_d_lcons_sn <IH //
42 | <lift_path_L_sn <IH //
43 | <lift_path_A_sn <IH //
44 | <lift_path_S_sn <IH //
45 ]
46 qed-.
47
48 (* Advanced constructions with structure ************************************)
49
50 lemma lift_d_empty_dx (n) (p) (f):
51       (⊗p)◖𝗱((↑[p]f)@❨n❩) = ↑[f](p◖𝗱n).
52 /3 width=3 by ppc_lcons, lift_append_proper_dx/
53 qed.
54
55 lemma lift_L_dx (p) (f):
56       (⊗p)◖𝗟 = ↑[f](p◖𝗟).
57 /3 width=3 by ppc_lcons, lift_append_proper_dx/
58 qed.
59
60 lemma lift_A_dx (p) (f):
61       (⊗p)◖𝗔 = ↑[f](p◖𝗔).
62 /3 width=3 by ppc_lcons, lift_append_proper_dx/
63 qed.
64
65 lemma lift_S_dx (p) (f):
66       (⊗p)◖𝗦 = ↑[f](p◖𝗦).
67 /3 width=3 by ppc_lcons, lift_append_proper_dx/
68 qed.