]> matita.cs.unibo.it Git - helm.git/commitdiff
update in delayed updating
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 29 Jun 2022 12:22:26 +0000 (14:22 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 29 Jun 2022 12:22:26 +0000 (14:22 +0200)
+ two lemmas on path_head
+ invocation added to first file

matita/matita/contribs/lambdadelta/delayed_updating/syntax/label.ma
matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_head.ma

index 74318f3335d7298d225fea9f12d22777c93c1a46..98e63f06ba6e0c151e092ea65ff1634d9f644a96 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
+(* A SYSTEM OF λ-CALCULUS WITH DELAYED UPDATING 
+ * Initial invocation: - Patience on me to gain peace and perfection! -
+ *)
+
 include "ground/arith/pnat.ma".
 include "delayed_updating/notation/functions/nodelabel_d_1.ma".
 include "delayed_updating/notation/functions/nodelabel_m_0.ma".
index 9cdfe620ff67088da01fa37b512b41f1fa3e9e65..438c5e6a72eca2320049f0b0ba8bb8a5e4109ba1 100644 (file)
@@ -74,6 +74,11 @@ lemma path_head_S_sn (p) (n):
 
 (* Basic inversions *********************************************************)
 
+lemma eq_inv_path_head_zero_dx (q) (p):
+      q = ↳[𝟎]p → 𝐞 = q.
+#q * //
+qed-.
+
 lemma eq_inv_path_empty_head (p) (n):
       (𝐞) = ↳[n]p → 𝟎 = n.
 *
@@ -88,3 +93,42 @@ lemma eq_inv_path_empty_head (p) (n):
   ] #H0 destruct
 ]
 qed-.
+
+(* Constructions with list_append *******************************************)
+
+lemma path_head_refl_append (p) (q) (n):
+      q = ↳[n]q → q = ↳[n](q●p).
+#p #q elim q -q
+[ #n #Hn <(eq_inv_path_empty_head … Hn) -Hn //
+| #l #q #IH #n @(nat_ind_succ … n) -n
+  [ #Hq | #n #_ cases l [ #m ] ]
+  [ lapply (eq_inv_path_head_zero_dx … Hq) -Hq #Hq destruct
+  | <path_head_d_sn <path_head_d_sn
+  | <path_head_m_sn <path_head_m_sn
+  | <path_head_L_sn <path_head_L_sn
+  | <path_head_A_sn <path_head_A_sn
+  | <path_head_S_sn <path_head_S_sn
+  ] #Hq
+  elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
+  /3 width=1 by eq_f/
+]
+qed-.
+
+(* Inversions with list_append **********************************************)
+
+lemma eq_inv_path_head_refl_append (p) (q) (n):
+      q = ↳[n](q●p) → q = ↳[n]q.
+#p #q elim q -q
+[ #n #Hn <(eq_inv_path_empty_head … Hn) -p //
+| #l #q #IH #n @(nat_ind_succ … n) -n //
+  #n #_ cases l [ #m ]
+  [ <path_head_d_sn <path_head_d_sn
+  | <path_head_m_sn <path_head_m_sn
+  | <path_head_L_sn <path_head_L_sn
+  | <path_head_A_sn <path_head_A_sn
+  | <path_head_S_sn <path_head_S_sn
+  ] #Hq
+  elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
+  /3 width=1 by eq_f/
+]
+qed-.