]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/delayed_updating/etc/head/lift_rmap_head.etc
partial update in delayed_updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / etc / head / lift_rmap_head.etc
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_rmap_eq.ma".
16 include "delayed_updating/syntax/path_head.ma".
17 include "ground/lib/stream_eq_eq.ma".
18
19 (* LIFT MAP FOR PATH ********************************************************)
20
21 (* Constructions with path_head *********************************************)
22
23 lemma tls_plus_lift_rmap_closed (f) (q) (n) (m):
24       q = ↳[n]q →
25       ⇂*[m]f ≗ ⇂*[n+m]↑[q]f.
26 #f #q elim q -q
27 [ #n #m #Hq
28   <(eq_inv_path_empty_head … Hq) -n //
29 | #l #q #IH #n @(nat_ind_succ … n) -n //
30   #n #_ #m cases l [ #k ]
31   [ <path_head_d_dx #Hq
32     elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq <nrplus_inj_sn
33     @(stream_eq_trans … (tls_lift_rmap_d_dx …))
34     >nrplus_inj_dx >nrplus_inj_sn >nrplus_inj_sn <nplus_plus_comm_23
35     >nsucc_unfold /2 width=1 by/
36   | <path_head_m_dx #Hq
37     elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
38     <lift_rmap_m_dx /2 width=1 by/
39   | <path_head_L_dx #Hq
40     elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
41     <lift_rmap_L_dx <nplus_succ_sn /2 width=1 by/
42   | <path_head_A_dx #Hq
43     elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
44     <lift_rmap_A_dx /2 width=2 by/
45   | <path_head_S_dx #Hq
46     elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
47     <lift_rmap_S_dx /2 width=2 by/
48   ]
49 ]
50 qed-.
51
52 lemma tls_lift_rmap_closed (f) (q) (n):
53       q = ↳[n]q →
54       f ≗ ⇂*[n]↑[q]f.
55 #f #q #n #H0
56 /2 width=1 by tls_plus_lift_rmap_closed/
57 qed.