(* *)
(**************************************************************************)
-include "ground/relocation/tr_pap.ma".
-include "ground/relocation/tr_id.ma".
+include "ground/relocation/tr_pap_pushs.ma".
+include "ground/relocation/tr_id_pushs.ma".
(* IDENTITY ELEMENT FOR TOTAL RELOCATION MAPS *******************************)
lemma tr_pap_id (p):
p = 𝐢@❨p❩.
-#p elim p -p //
-#p #IH <tr_id_unfold <tr_pap_succ //
+#p >(tr_pushs_id p)
+/2 width=1 by tr_pap_pushs_le/
qed.
(* POSITIVE APPLICATION FOR TOTAL RELOCATION MAPS ***************************)
+(* Constructions with tr_push ***********************************************)
+
+lemma tr_pap_push (f):
+ ∀i. ↑(f@❨i❩) = (⫯f)@❨↑i❩.
+// qed.
+
(* Constructions with tr_next ***********************************************)
(*** apply_S2 *)
--- /dev/null
+(**************************************************************************)
+(* ___ *)
+(* ||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 "ground/arith/pnat_lt.ma".
+include "ground/relocation/tr_pushs.ma".
+include "ground/relocation/tr_pap_pn.ma".
+
+(* POSITIVE APPLICATION FOR TOTAL RELOCATION MAPS ***************************)
+
+(* Constructions with tr_pushs **********************************************)
+
+lemma tr_pap_pushs_le (n) (p) (f):
+ p < ↑n → p = (⫯*[n]f)@❨p❩.
+#n @(nat_ind_succ … n) -n
+[ #p #f #H0
+ elim (plt_inv_unit_dx … H0)
+| #n #IH *
+ [ #f #H0 <tr_pushs_succ //
+ | #p #f <npsucc_succ #H0
+ lapply (plt_inv_succ_bi … H0) -H0 #H0
+ lapply (IH … f H0) -IH -H0 #H0
+ <tr_pushs_succ <tr_pap_push //
+ ]
+]
+qed-.
[ "tr_uni ( 𝐮❨?❩ )" * ]
[ "tr_id ( 𝐢 ) " "tr_id_pushs" "tr_id_pap" * ]
[ "tr_compose ( ?∘? )" "tr_compose_pn" * ]
- [ "tr_pap ( ?@❨?❩ )" "tr_pap_eq" "tr_pap_pat" "tr_pap_pn" "tr_pap_pap" * ]
+ [ "tr_pap ( ?@❨?❩ )" "tr_pap_eq" "tr_pap_pat" "tr_pap_pn" "tr_pap_pushs" "tr_pap_pap" * ]
[ "tr_pushs ( ⫯*[?]? )" * ]
[ "tr_pn ( ⫯? ) ( ↑? )" "tr_pn_hdtl" "tr_pn_tls" * ]
[ "tr_map ( 𝐭❨?❩ )" "tr_eq" "tr_nexts" "tr_pat" "tr_ist" * ]