(**************************************************************************) (* ___ *) (* ||M|| *) (* ||A|| A project by Andrea Asperti *) (* ||T|| *) (* ||I|| Developers: *) (* ||T|| The HELM team. *) (* ||A|| http://helm.cs.unibo.it *) (* \ / *) (* \ / This file is distributed under the terms of the *) (* v GNU General Public License Version 2 *) (* *) (**************************************************************************) include "delayed_updating/substitution/lift_length.ma". include "delayed_updating/notation/functions/black_righttriangle_1.ma". include "ground/relocation/tr_uni.ma". include "ground/relocation/tr_compose.ma". (* BASIC UNWIND FOR RELOCATION MAP ******************************************) rec definition unwind1_rmap_pnat (n) (p) on n ā‰ match n with [ punit ā‡’ š¢ | psucc m ā‡’ match p with [ list_empty ā‡’ š¢ | list_lcons l q ā‡’ match l with [ label_d n ā‡’ (unwind1_rmap_pnat m (ā†‘[š®āØnā©]q))āˆ˜(ā†‘[q]š®āØnā©) | label_m ā‡’ unwind1_rmap_pnat m q | label_L ā‡’ unwind1_rmap_pnat m q | label_A ā‡’ unwind1_rmap_pnat m q | label_S ā‡’ unwind1_rmap_pnat m q ] ] ]. definition unwind1_rmap (p) ā‰ unwind1_rmap_pnat (ā†‘ā˜pā˜) p. interpretation "basic unwind (relocation map)" 'BlackRightTriangle p = (unwind1_rmap p). (* Basic constructions ******************************************************) lemma unwind1_rmap_unfold (p): unwind1_rmap_pnat (ā†‘ā˜pā˜) p = ā–¶p. // qed-. lemma unwind1_rmap_empty: (š¢) = ā–¶(šž). // qed. lemma unwind1_rmap_d_sn (p) (n:pnat): (ā–¶(ā†‘[š®āØnā©]p))āˆ˜(ā†‘[p]š®āØnā©) = ā–¶(š—±nā——p). #p #n