1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "delayed_updating/syntax/path_labels.ma".
16 include "delayed_updating/notation/functions/downarrowrightsharp_2.ma".
17 include "ground/arith/pnat_plus.ma".
19 (* HEAD BY DEPTH FOR PATH ***************************************************)
21 rec definition path_dhd (m) (p) on p: path ≝
26 [ label_d n ⇒ l◗(path_dhd (m+n) q)
27 | label_m ⇒ l◗(path_dhd m q)
31 | psucc o ⇒ l◗(path_dhd o q)
33 | label_A ⇒ l◗(path_dhd m q)
34 | label_S ⇒ l◗(path_dhd m q)
39 "head by depth (reversed path)"
40 'DownArrowRightSharp n p = (path_dhd n p).
42 (* basic constructions ****************************************************)
44 lemma path_dhd_empty (n:pnat):
48 lemma path_dhd_d_sn (p) (n) (m):
49 (𝗱m◗↳⧣[n+m]p) = ↳⧣[n](𝗱m◗p).
52 lemma path_dhd_m_sn (p) (n):
53 (𝗺◗↳⧣[n]p) = ↳⧣[n](𝗺◗p).
56 lemma path_dhd_L_sn_unit (p):
60 lemma path_dhd_L_sn_succ (p) (n):
61 (𝗟◗↳⧣[n]p) = ↳⧣[↑n](𝗟◗p).
64 lemma path_dhd_A_sn (p) (n):
65 (𝗔◗↳⧣[n]p) = ↳⧣[n](𝗔◗p).
68 lemma path_dhd_S_sn (p) (n):
69 (𝗦◗↳⧣[n]p) = ↳⧣[n](𝗦◗p).