]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/delayed_updating/unwind0/unwind1_rmap.ma
update in delayed_updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / unwind0 / unwind1_rmap.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_length.ma".
16 include "delayed_updating/notation/functions/black_righttriangle_1.ma".
17 include "ground/relocation/tr_uni.ma".
18 include "ground/relocation/tr_compose.ma".
19
20 (* BASIC UNWIND FOR RELOCATION MAP ******************************************)
21
22 rec definition unwind1_rmap_pnat (n) (p) on n ā‰
23 match n with
24 [ punit   ā‡’ š¢
25 | psucc m ā‡’
26   match p with
27   [ list_empty     ā‡’ š¢
28   | list_lcons l q ā‡’
29     match l with
30     [ label_d n ā‡’ (unwind1_rmap_pnat m (ā†‘[š®āØnā©]q))āˆ˜(ā†‘[q]š®āØnā©)
31     | label_m   ā‡’ unwind1_rmap_pnat m q
32     | label_L   ā‡’ unwind1_rmap_pnat m q
33     | label_A   ā‡’ unwind1_rmap_pnat m q
34     | label_S   ā‡’ unwind1_rmap_pnat m q
35     ]
36   ]
37 ].
38
39 definition unwind1_rmap (p) ā‰
40            unwind1_rmap_pnat (ā†‘ā˜pā˜) p.
41
42 interpretation
43   "basic unwind (relocation map)"
44   'BlackRightTriangle p = (unwind1_rmap p).
45
46 (* Basic constructions ******************************************************)
47
48 lemma unwind1_rmap_unfold (p):
49       unwind1_rmap_pnat (ā†‘ā˜pā˜) p = ā–¶p.
50 // qed-.
51
52 lemma unwind1_rmap_empty:
53       (š¢) = ā–¶(šž).
54 // qed.
55
56 lemma unwind1_rmap_d_sn (p) (n:pnat):
57       (ā–¶(ā†‘[š®āØnā©]p))āˆ˜(ā†‘[p]š®āØnā©) = ā–¶(š—±nā——p).
58 #p #n
59 <unwind1_rmap_unfold <lift_path_length //
60 qed.
61
62 lemma unwind1_rmap_m_sn (p):
63       ā–¶p = ā–¶(š—ŗā——p).
64 // qed.
65
66 lemma unwind1_rmap_L_sn (p):
67       ā–¶p = ā–¶(š—Ÿā——p).
68 // qed.
69
70 lemma unwind1_rmap_A_sn (p):
71       ā–¶p = ā–¶(š—”ā——p).
72 // qed.
73
74 lemma unwind1_rmap_S_sn (p):
75       ā–¶p = ā–¶(š—¦ā——p).
76 // qed.