X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fdelayed_updating%2Fsyntax%2Fprototerm_constructors.ma;h=fd86ef975a39b862aaf05ac99dc5efd298fb10ed;hb=13584a37bbcde10e03c8a488f5b93e1e042da0a6;hp=1d3aeedf531dde6c74f190f1134522efaa2e3f33;hpb=2cc4eb5d0210be58286e028278852122dcb68052;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..fd86ef975 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_constructors.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_constructors.ma @@ -13,6 +13,7 @@ (**************************************************************************) 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/lamda_1.ma". @@ -26,26 +27,33 @@ 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 n = (prototerm_node_0 (label_d n)). interpretation "inner variable reference by depth (prototerm)" - 'Phi n t = (prototerm_node_1 (label_node_d n) t). + 'Phi n t = (prototerm_node_1_2 (label_d n) 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 Inversions *********************************************************) @@ -60,17 +68,25 @@ 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 -