]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma
update in delayed updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / substitution / lift_structure.ma
diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma
new file mode 100644 (file)
index 0000000..50b35e6
--- /dev/null
@@ -0,0 +1,98 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "delayed_updating/syntax/path_structure.ma".
+include "delayed_updating/substitution/lift_eq.ma".
+
+(* LIFT FOR PATH ***********************************************************)
+
+(* Constructions with structure ********************************************)
+
+lemma lift_d_empty_dx (n) (p) (f):
+      (āŠ—p)ā—–š—±āØ(ā†‘[pā—–š—±āØnā©]f)@āØnā©ā© = ā†‘[f](pā—–š—±āØnā©).
+#n #p elim p -p
+[| * [ #m * [| #l ]] [|*: #p ] #IH ] #f
+[ //
+| <list_cons_shift <list_cons_comm <list_cons_comm //
+| <lift_d_lcons_sn <lift_d_lcons_sn //
+| <lift_L_sn <lift_L_sn <lift_lcons <IH //
+| <lift_A_sn <lift_A_sn <lift_lcons <IH //
+| <lift_S_sn <lift_S_sn <lift_lcons <IH //
+]
+qed.
+
+lemma lift_L_dx (p) (f):
+      (āŠ—p)ā—–š—Ÿ = ā†‘[f](pā—–š—Ÿ).
+#p elim p -p
+[| * [ #m * [| #l ]] [|*: #p ] #IH ] #f
+[ //
+| //
+| <lift_d_lcons_sn //
+| <lift_L_sn <lift_lcons //
+| <lift_A_sn <lift_lcons //
+| <lift_S_sn <lift_lcons //
+]
+qed.
+
+lemma lift_A_dx (p) (f):
+      (āŠ—p)ā—–š—” = ā†‘[f](pā—–š—”).
+#p elim p -p
+[| * [ #m * [| #l ]] [|*: #p ] #IH ] #f
+[ //
+| //
+| <lift_d_lcons_sn //
+| <lift_L_sn <lift_lcons //
+| <lift_A_sn <lift_lcons //
+| <lift_S_sn <lift_lcons //
+]
+qed.
+
+lemma lift_S_dx (p) (f):
+      (āŠ—p)ā—–š—¦ = ā†‘[f](pā—–š—¦).
+#p elim p -p
+[| * [ #m * [| #l ]] [|*: #p ] #IH ] #f
+[ //
+| //
+| <lift_d_lcons_sn //
+| <lift_L_sn <lift_lcons //
+| <lift_A_sn <lift_lcons //
+| <lift_S_sn <lift_lcons //
+]
+qed.
+
+lemma structure_lift (p) (f):
+      āŠ—p = āŠ—ā†‘[f]p.
+#p elim p -p
+[| * [ #m * [| #l ]] [|*: #p ] #IH ] #f
+[ //
+| //
+| //
+| <lift_L_sn <lift_lcons //
+| <lift_A_sn <lift_lcons //
+| <lift_S_sn <lift_lcons //
+]
+qed.
+
+lemma lift_structure (p) (f):
+      āŠ—p = ā†‘[f]āŠ—p.
+#p elim p -p
+[| * [ #m * [| #l ]] [|*: #p ] #IH ] #f
+[ //
+| //
+| //
+| <structure_L_sn <lift_L_sn <lift_lcons //
+| <structure_A_sn <lift_A_sn <lift_lcons //
+| <structure_S_sn <lift_S_sn <lift_lcons //
+]
+qed.