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/substitution/lift_eq.ma".
16 include "delayed_updating/syntax/path_update.ma".
17 include "delayed_updating/syntax/path_depth.ma".
18 include "ground/lib/stream_eq_eq.ma".
20 (* LIFT FOR PATH ***********************************************************)
22 (* Constructions with update ***********************************************)
24 lemma lift_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 [ <update_d_dx <depth_d_dx <lift_rmap_pap_d_dx <lift_rmap_pap_d_dx
31 <nplus_comm <nrplus_inj_sn <nrplus_inj_dx <nrplus_pplus_assoc
34 | <update_L_dx <depth_L_dx <lift_rmap_L_dx <lift_rmap_L_dx
36 <nrplus_succ_sn <nrplus_succ_sn >nsucc_inj #H0
37 <tr_pap_push <tr_pap_push
45 lemma lift_rmap_pap_gt (f) (p) (m):
46 f@❨m+⧣p❩+❘p❘ = (↑[p]f)@❨m+❘p❘❩.
47 #f #p @(list_ind_rcons … p) -p [ // ]
49 [ <update_d_dx <depth_d_dx
50 <nplus_comm <nrplus_inj_sn <nrplus_inj_dx <nrplus_pplus_assoc
51 <lift_rmap_pap_d_dx >IH -IH //
53 | <update_L_dx <depth_L_dx
54 <nrplus_succ_dx <nrplus_succ_dx <lift_rmap_L_dx <tr_pap_push //
60 lemma lift_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 [ <update_d_dx <depth_d_dx
65 <nplus_comm <nrplus_inj_sn <nrplus_inj_dx <nrplus_pplus_assoc
66 @(stream_eq_trans … (lift_rmap_tls_d_dx …))
67 @(stream_eq_canc_dx … (IH …)) -IH //
69 | <update_L_dx <depth_L_dx
70 <nrplus_succ_dx >nsucc_inj //
76 lemma lift_rmap_tls_eq (f) (p):
77 ⇂*[⧣p]f ≗ ⇂*[↑❘p❘]↑[p]⫯f.
79 #f #p @(list_ind_rcons … p) -p //
81 <update_d_dx <depth_d_dx <lift_rmap_d_dx
82 @(stream_eq_trans … (tr_tls_compose_uni_dx …))