]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_structure.ma
update in delayed updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / syntax / path_structure.ma
index 5bf678ebe01edecc6abb6e061d592e809def6711..6ba6e937b48778b995bae2d16e1ca16f326ce13f 100644 (file)
@@ -17,18 +17,75 @@ include "delayed_updating/notation/functions/circled_times_1.ma".
 
 (* STRUCTURE FOR PATH *******************************************************)
 
-rec definition path_structure (p) on p β‰
+rec definition structure (p) on p β‰
 match p with
 [ list_empty     β‡’ πž
 | list_lcons l q β‡’
    match l with
-   [ label_node_d n β‡’ path_structure q
-   | label_edge_L   β‡’ π—Ÿβ——path_structure q
-   | label_edge_A   β‡’ π—”β——path_structure q
-   | label_edge_S   β‡’ π—¦β——path_structure q
+   [ label_node_d n β‡’ structure q
+   | label_edge_L   β‡’ π—Ÿβ——structure q
+   | label_edge_A   β‡’ π—”β——structure q
+   | label_edge_S   β‡’ π—¦β——structure q
    ]
 ].
 
 interpretation
   "structure (path)"
-  'CircledTimes p = (path_structure p).
+  'CircledTimes p = (structure p).
+
+(* Basic constructions ******************************************************)
+
+lemma structure_empty:
+      πž = βŠ—πž.
+// qed.
+
+lemma structure_d_sn (p) (n):
+      βŠ—p = βŠ—(𝗱❨n❩◗p).
+// qed.
+
+lemma structure_L_sn (p):
+      π—Ÿβ——βŠ—p = βŠ—(π—Ÿβ——p).
+// qed.
+
+lemma structure_A_sn (p):
+      π—”β——βŠ—p = βŠ—(𝗔◗p).
+// qed.
+
+lemma structure_S_sn (p):
+      π—¦β——βŠ—p = βŠ—(𝗦◗p).
+// qed.
+
+(* Main constructions *******************************************************)
+
+theorem structure_idem (p):
+        βŠ—p = βŠ—βŠ—p.
+#p elim p -p [| * [ #n ] #p #IH ] //
+qed.
+
+theorem structure_append (p1) (p2):
+        βŠ—p1β—βŠ—p2 = βŠ—(p1●p2).
+#p1 elim p1 -p1 [| * [ #n ] #p1 #IH ] #p2
+[||*: <list_append_lcons_sn ] //
+qed.
+
+(* Constructions with list_rcons ********************************************)
+
+lemma structure_d_dx (p) (n):
+      βŠ—p = βŠ—(p◖𝗱❨n❩).
+#p #n <structure_append //
+qed.
+
+lemma structure_L_dx (p):
+      (βŠ—p)β—–π—Ÿ = βŠ—(pβ—–π—Ÿ).
+#p <structure_append //
+qed.
+
+lemma structure_A_dx (p):
+      (βŠ—p)◖𝗔 = βŠ—(p◖𝗔).
+#p <structure_append //
+qed.
+
+lemma structure_S_dx (p):
+      (βŠ—p)◖𝗦 = βŠ—(p◖𝗦).
+#p <structure_append //
+qed.