X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fdelayed_updating%2Fsyntax%2Fpath_structure.ma;h=288575c4e7680630668be3a61108478261a6d0c4;hb=9e31ac1f3f868349154b0ce2e550e2476aaf6a30;hp=5bf678ebe01edecc6abb6e061d592e809def6711;hpb=503500ff9a6d9cca363a42b5fe7f3f5de69239f9;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_structure.ma b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_structure.ma index 5bf678ebe..288575c4e 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_structure.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/path_structure.ma @@ -14,21 +14,247 @@ include "delayed_updating/syntax/path.ma". include "delayed_updating/notation/functions/circled_times_1.ma". +include "ground/xoa/ex_3_2.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_d k ⇒ structure q + | label_m ⇒ structure q + | label_L ⇒ (structure q)◖𝗟 + | label_A ⇒ (structure q)◖𝗔 + | label_S ⇒ (structure q)◖𝗦 ] ]. interpretation "structure (path)" - 'CircledTimes p = (path_structure p). + 'CircledTimes p = (structure p). + +(* Basic constructions ******************************************************) + +lemma structure_empty: + 𝐞 = ⊗𝐞. +// qed. + +lemma structure_d_dx (p) (k): + ⊗p = ⊗(p◖𝗱k). +// qed. + +lemma structure_m_dx (p): + ⊗p = ⊗(p◖𝗺). +// qed. + +lemma structure_L_dx (p): + (⊗p)◖𝗟 = ⊗(p◖𝗟). +// qed. + +lemma structure_A_dx (p): + (⊗p)◖𝗔 = ⊗(p◖𝗔). +// qed. + +lemma structure_S_dx (p): + (⊗p)◖𝗦 = ⊗(p◖𝗦). +// qed. + +(* Main constructions *******************************************************) + +theorem structure_idem (p): + ⊗p = ⊗⊗p. +#p elim p -p // +* [ #k ] #p #IH // +qed. + +theorem structure_append (p) (q): + ⊗p●⊗q = ⊗(p●q). +#p #q elim q -q // +* [ #k ] #q #IH // +list_cons_comm #H0 +elim (eq_inv_append_structure … H0) -H0 #r1 #r2 +list_cons_comm #H0 +elim (eq_inv_append_structure … H0) -H0 #r1 #r2 +list_cons_comm #H0 +elim (eq_inv_append_structure … H0) -H0 #r1 #r2 +list_cons_comm #H0 +elim (eq_inv_append_structure … H0) -H0 #r1 #r2 +list_cons_comm #H0 +elim (eq_inv_append_structure … H0) -H0 #r1 #r2 +