X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fdelayed_updating%2Fsyntax%2Fprototerm_constructors.ma;h=5bb66e16ab112f1ab94db7db70cba521bc150131;hb=9e31ac1f3f868349154b0ce2e550e2476aaf6a30;hp=1d3aeedf531dde6c74f190f1134522efaa2e3f33;hpb=cfd201c62dd9b854bfb4ada648d3e556b29fac3a;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_constructors.ma b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_constructors.ma index 1d3aeedf5..5bb66e16a 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_constructors.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_constructors.ma @@ -13,8 +13,9 @@ (**************************************************************************) include "delayed_updating/syntax/prototerm.ma". +include "delayed_updating/notation/functions/m_hook_1.ma". include "delayed_updating/notation/functions/hash_1.ma". -include "delayed_updating/notation/functions/phi_2.ma". +include "delayed_updating/notation/functions/tau_2.ma". include "delayed_updating/notation/functions/lamda_1.ma". include "delayed_updating/notation/functions/at_2.ma". @@ -26,29 +27,50 @@ definition prototerm_node_0 (l): prototerm ≝ definition prototerm_node_1 (l): prototerm → prototerm ≝ λt,p. ∃∃q. q ϵ t & l◗q = p. +definition prototerm_node_1_2 (l1) (l2): prototerm → prototerm ≝ + λt,p. ∃∃q. q ϵ t & l1◗l2◗q = p. + definition prototerm_node_2 (l1) (l2): prototerm → prototerm → prototerm ≝ λt1,t2,p. ∨∨ ∃∃q. q ϵ t1 & l1◗q = p | ∃∃q. q ϵ t2 & l2◗q = p. +interpretation + "mark (prototerm)" + 'MHook t = (prototerm_node_1 label_m t). + interpretation "outer variable reference by depth (prototerm)" - 'Hash n = (prototerm_node_0 (label_node_d n)). + 'Hash k = (prototerm_node_0 (label_d k)). interpretation "inner variable reference by depth (prototerm)" - 'Phi n t = (prototerm_node_1 (label_node_d n) t). + 'Tau k t = (prototerm_node_1_2 (label_d k) label_m t). interpretation "name-free functional abstraction (prototerm)" - 'Lamda t = (prototerm_node_1 label_edge_L t). + 'Lamda t = (prototerm_node_1 label_L t). interpretation "application (prototerm)" - 'At u t = (prototerm_node_2 label_edge_S label_edge_A u t). + 'At u t = (prototerm_node_2 label_S label_A u t). + +(* Basic constructions *******************************************************) + +lemma in_comp_iref (t) (q) (k): + q ϵ t → 𝗱k◗𝗺◗q ϵ 𝛕k.t. +/2 width=3 by ex2_intro/ qed. -(* Basic Inversions *********************************************************) +(* Basic inversions *********************************************************) +lemma in_comp_inv_iref (t) (p) (k): + p ϵ 𝛕k.t → + ∃∃q. 𝗱k◗𝗺◗q = p & q ϵ t. +#t #p #k * #q #Hq #Hp +/2 width=3 by ex2_intro/ +qed-. + +(* COMMENT lemma prototerm_in_root_inv_lcons_oref: ∀p,l,n. l◗p ϵ ▵#n → ∧∧ 𝗱n = l & 𝐞 = p. @@ -59,18 +81,26 @@ elim (eq_inv_list_empty_append … e0) -e0 #H0 #_ qed-. lemma prototerm_in_root_inv_lcons_iref: - ∀t,p,l,n. l◗p ϵ ▵𝛗n.t → - ∧∧ 𝗱n = l & p ϵ ▵t. -#t #p #l #n * #q -