]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_head.ma
partial update in delayed_updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / syntax / path_head.ma
diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_head.ma b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_head.ma
deleted file mode 100644 (file)
index 4610e4f..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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_labels.ma".
-include "delayed_updating/notation/functions/downarrowright_2.ma".
-include "ground/arith/nat_plus.ma".
-include "ground/arith/nat_pred_succ.ma".
-
-(* HEAD FOR PATH ************************************************************)
-
-rec definition path_head (n) (p) on p: path ā‰
-match n with
-[ nzero  ā‡’ šž
-| ninj m ā‡’
-  match p with
-  [ list_empty     ā‡’ š—Ÿāˆ—āˆ—n
-  | list_lcons l q ā‡’
-    match l with
-    [ label_d k ā‡’ (path_head (n+k) q)ā—–l
-    | label_m   ā‡’ (path_head n q)ā—–l
-    | label_L   ā‡’ (path_head (ā†“m) q)ā—–l
-    | label_A   ā‡’ (path_head n q)ā—–l
-    | label_S   ā‡’ (path_head n q)ā—–l
-    ]
-  ]
-].
-
-interpretation
-  "head (path)"
-  'DownArrowRight n p = (path_head n p).
-
-(* basic constructions ****************************************************)
-
-lemma path_head_zero (p):
-      (šž) = ā†³[šŸŽ]p.
-* // qed.
-
-lemma path_head_empty (n):
-      (š—Ÿāˆ—āˆ—n) = ā†³[n]šž.
-* // qed.
-
-lemma path_head_d_dx (p) (n) (k:pnat):
-      (ā†³[ā†‘n+k]p)ā—–š—±k = ā†³[ā†‘n](pā—–š—±k).
-// qed.
-
-lemma path_head_m_dx (p) (n):
-      (ā†³[ā†‘n]p)ā—–š—ŗ = ā†³[ā†‘n](pā—–š—ŗ).
-// qed.
-
-lemma path_head_L_dx (p) (n):
-      (ā†³[n]p)ā—–š—Ÿ = ā†³[ā†‘n](pā—–š—Ÿ).
-#p #n
-whd in āŠ¢ (???%); //
-qed.
-
-lemma path_head_A_dx (p) (n):
-      (ā†³[ā†‘n]p)ā—–š—” = ā†³[ā†‘n](pā—–š—”).
-// qed.
-
-lemma path_head_S_dx (p) (n):
-      (ā†³[ā†‘n]p)ā—–š—¦ = ā†³[ā†‘n](pā—–š—¦).
-// qed.
-
-(* 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.
-*
-[ #n <path_head_empty #H0
-  <(eq_inv_empty_labels ā€¦ H0) -n //
-| * [ #k ] #p #n @(nat_ind_succ ā€¦ n) -n // #n #_
-  [ <path_head_d_dx
-  | <path_head_m_dx
-  | <path_head_L_dx
-  | <path_head_A_dx
-  | <path_head_S_dx
-  ] #H0 destruct
-]
-qed-.
-
-(* Constructions with path_append *******************************************)
-
-lemma path_head_refl_append (p) (q) (n):
-      q = ā†³[n]q ā†’ q = ā†³[n](pā—q).
-#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 [ #k ] ]
-  [ lapply (eq_inv_path_head_zero_dx ā€¦ Hq) -Hq #Hq destruct
-  | <path_head_d_dx <path_head_d_dx
-  | <path_head_m_dx <path_head_m_dx
-  | <path_head_L_dx <path_head_L_dx
-  | <path_head_A_dx <path_head_A_dx
-  | <path_head_S_dx <path_head_S_dx
-  ] #Hq
-  elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
-  /3 width=1 by eq_f/
-]
-qed-.
-
-(* Inversions with path_append **********************************************)
-
-lemma eq_inv_path_head_refl_append (p) (q) (n):
-      q = ā†³[n](pā—q) ā†’ 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 [ #k ]
-  [ <path_head_d_dx <path_head_d_dx
-  | <path_head_m_dx <path_head_m_dx
-  | <path_head_L_dx <path_head_L_dx
-  | <path_head_A_dx <path_head_A_dx
-  | <path_head_S_dx <path_head_S_dx
-  ] #Hq
-  elim (eq_inv_list_lcons_bi ????? Hq) -Hq #_ #Hq
-  /3 width=1 by eq_f/
-]
-qed-.