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/unwind2/unwind_eq.ma".
16 include "delayed_updating/syntax/path_height.ma".
17 include "delayed_updating/syntax/path_depth.ma".
18 include "ground/lib/stream_eq_eq.ma".
20 (* UNWIND FOR PATH **********************************************************)
22 (* Constructions with height ************************************************)
24 lemma unwind_rmap_pap_le (f1) (f2) (p) (m:pnat) (l:nat):
26 (▼[p]f1)@❨m❩ = (▼[p]f2)@❨m❩.
27 #f1 #f2 #p @(list_ind_rcons … p) -p
28 [ #m #l <depth_empty #H0 destruct
29 | #p * [ #n ] #IH #m #l
30 [ <height_d_dx <depth_d_dx <unwind_rmap_pap_d_dx <unwind_rmap_pap_d_dx
31 <nplus_comm <nrplus_inj_sn <nrplus_inj_dx <nrplus_pplus_assoc
34 | <height_L_dx <depth_L_dx <unwind_rmap_L_dx <unwind_rmap_L_dx
36 <nrplus_succ_sn <nrplus_succ_sn >nsucc_inj #H0
37 <tr_pap_push <tr_pap_push
45 lemma unwind_rmap_pap_gt (f) (p) (m):
46 f@❨m+⧣p❩+❘p❘ = (▼[p]f)@❨m+❘p❘❩.
47 #f #p @(list_ind_rcons … p) -p [ // ]
49 [ <height_d_dx <depth_d_dx
50 <nplus_comm <nrplus_inj_sn <nrplus_inj_dx <nrplus_pplus_assoc
51 <unwind_rmap_pap_d_dx >IH -IH //
53 | <height_L_dx <depth_L_dx
54 <nrplus_succ_dx <nrplus_succ_dx <unwind_rmap_L_dx <tr_pap_push //
60 lemma unwind_rmap_tls_gt (f) (p) (m:pnat):
61 ⇂*[ninj (m+⧣p)]f ≗ ⇂*[ninj (m+❘p❘)]▼[p]f.
62 #f #p @(list_ind_rcons … p) -p [ // ]
64 [ <height_d_dx <depth_d_dx
65 <nplus_comm <nrplus_inj_sn <nrplus_inj_dx <nrplus_pplus_assoc
66 @(stream_eq_trans … (unwind_rmap_tls_d_dx …))
67 @(stream_eq_canc_dx … (IH …)) -IH //
69 | <height_L_dx <depth_L_dx
70 <nrplus_succ_dx >nsucc_inj //
76 lemma unwind_rmap_tls_eq (f) (p):
77 ⇂*[⧣p]f ≗ ⇂*[↑❘p❘]▼[p]⫯f.
79 #f #p @(list_ind_rcons … p) -p //
81 <height_d_dx <depth_d_dx <unwind_rmap_d_dx
82 @(stream_eq_trans … (tr_tls_compose_uni_dx …))