From 13584a37bbcde10e03c8a488f5b93e1e042da0a6 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Sat, 22 Jan 2022 01:35:11 +0100 Subject: [PATCH] update in delayed_updating + mark label added + bugs fixed in depth and reduction + two notations changed --- .../class_b_0.ma} | 6 +-- .../class_p_0.ma} | 6 +-- .../notation/functions/m_hook_1.ma | 19 +++++++++ .../notation/functions/nodelabel_m_0.ma | 19 +++++++++ .../delayed_updating/reduction/dfr.ma | 4 +- .../delayed_updating/reduction/dfr_ifr.ma | 17 +++++--- .../delayed_updating/reduction/ifr.ma | 4 +- .../substitution/fsubst_lift.ma | 12 +++--- .../delayed_updating/substitution/lift.ma | 27 ++++++++++--- .../delayed_updating/substitution/lift_eq.ma | 1 + .../substitution/lift_prototerm.ma | 8 +++- .../substitution/lift_structure.ma | 40 +++++++++++++++++-- .../delayed_updating/syntax/bdd_term.ma | 12 ++++-- .../delayed_updating/syntax/label.ma | 22 ++++++---- .../delayed_updating/syntax/path_balanced.ma | 6 +-- .../delayed_updating/syntax/path_depth.ma | 19 +++++---- .../delayed_updating/syntax/path_proper.ma | 9 +++-- .../delayed_updating/syntax/path_structure.ma | 24 +++++++---- .../syntax/prototerm_constructors.ma | 38 +++++++++++++----- .../syntax/prototerm_proper.ma | 15 +++++-- .../syntax/prototerm_proper_constructors.ma | 25 ++++++++++++ matita/matita/predefined_virtuals.ml | 2 +- 22 files changed, 253 insertions(+), 82 deletions(-) rename matita/matita/contribs/lambdadelta/delayed_updating/notation/{relations/predicate_p_tail_1.ma => functions/class_b_0.ma} (91%) rename matita/matita/contribs/lambdadelta/delayed_updating/notation/{relations/predicate_squarecap_1.ma => functions/class_p_0.ma} (91%) create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/m_hook_1.ma create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/nodelabel_m_0.ma create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/syntax/prototerm_proper_constructors.ma diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_p_tail_1.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_b_0.ma similarity index 91% rename from matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_p_tail_1.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_b_0.ma index 73397b8d9..46c63d436 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_p_tail_1.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_b_0.ma @@ -14,6 +14,6 @@ (* NOTATION FOR DELAYED UPDATING ********************************************) -notation "hvbox( Ꝕ term 70 x )" - non associative with precedence 45 - for @{ 'PredicatePTail $x }. +notation "hvbox( 𝐁 )" + non associative with precedence 70 + for @{ 'ClassB }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_squarecap_1.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_p_0.ma similarity index 91% rename from matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_squarecap_1.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_p_0.ma index 64e50fc91..9f9bbd754 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_squarecap_1.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_p_0.ma @@ -14,6 +14,6 @@ (* NOTATION FOR DELAYED UPDATING ********************************************) -notation "hvbox( ⊓ term 70 p )" - non associative with precedence 45 - for @{ 'PredicateSquareCap $p }. +notation "hvbox( 𝐏 )" + non associative with precedence 70 + for @{ 'ClassP }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/m_hook_1.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/m_hook_1.ma new file mode 100644 index 000000000..0860eaffa --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/m_hook_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* NOTATION FOR DELAYED UPDATING ********************************************) + +notation "hvbox( ɱ. break term 70 t )" + non associative with precedence 70 + for @{ 'MHook $t }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/nodelabel_m_0.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/nodelabel_m_0.ma new file mode 100644 index 000000000..f34f1a7ee --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/nodelabel_m_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* NOTATION FOR DELAYED UPDATING ********************************************) + +notation "hvbox( 𝗺 )" + non associative with precedence 70 + for @{ 'NodeLabelM }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma index 5b5036593..2ff6159cf 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma @@ -25,8 +25,8 @@ include "delayed_updating/notation/relations/black_rightarrow_df_4.ma". definition dfr (p) (q): relation2 prototerm prototerm ≝ λt1,t2. ∃b. let r ≝ p●𝗔◗b●𝗟◗q in - ∧∧ ⊓(⊗b) & r◖𝗱(↑❘q❘) ϵ t1 & - t2 ⇔ t1[⋔r←𝛗(↑❘q❘).t1⋔(p◖𝗦)] + ∧∧ ⊗b ϵ 𝐁 & r◖𝗱❘q❘ ϵ t1 & + t1[⋔r←𝛗❘q❘.(t1⋔(p◖𝗦))] ⇔ t2 . interpretation diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma index 5d6c3cfef..73d4cbf46 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma @@ -15,6 +15,7 @@ include "delayed_updating/reduction/dfr.ma". include "delayed_updating/reduction/ifr.ma". include "delayed_updating/substitution/fsubst_lift.ma". +include "delayed_updating/syntax/prototerm_proper_constructors.ma". (* DELAYED FOCUSED REDUCTION ************************************************) @@ -24,9 +25,15 @@ lemma dfr_lift_bi (f) (p) (q) (t1) (t2): t1 ϵ 𝐓 → * #b * #Hb #Ht1 #Ht2 @(ex_intro … (⊗b)) @and3_intro [ // -| lapply (in_comp_lift_bi f … Ht1) -Ht1 #Ht1 - - - - +| lapply (in_comp_lift_bi f … Ht1) -Ht1 #Ht1 +| lapply (eq_lift_bi f … Ht2) -Ht2 #Ht2 + @(subset_eq_trans … Ht2) -t2 + @(subset_eq_trans … (lift_fsubst …)) + [ lift_append_proper_dx - /4 width=1 by subset_in_ext_f1_dx, or_introl/ + /4 width=5 by in_comp_lift_bi, in_ppc_comp_trans, or_introl, ex2_intro/ | * #q #Hq #H1 #H0 @(ex2_intro … H1) @or_intror @conj // * [ lift_lcons_alt >lift_append_rcons_sn lift_lcons_alt >lift_append_rcons_sn diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_prototerm.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_prototerm.ma index 919326045..4a0615a3c 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_prototerm.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_prototerm.ma @@ -26,4 +26,10 @@ interpretation lemma in_comp_lift_bi (f) (p) (t): p ϵ t → ↑[f]p ϵ ↑[f]t. -/2 width=1 by subset_in_ext_f1_dx/ qed. +/2 width=1 by subset_in_ext_f1_dx/ +qed. + +lemma eq_lift_bi (f) (t1) (t2): + t1 ⇔ t2 → ↑[f]t1 ⇔ ↑[f]t2. +/2 width=1 by subset_equivalence_ext_f1_bi/ +qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma index 4db66c064..b9bc27c54 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma @@ -41,12 +41,13 @@ lemma lift_des_structure (q) (p) (f): (* Constructions with proper condition for path *****************************) -lemma lift_append_proper_dx (p2) (p1) (f): Ꝕp2 → +lemma lift_append_proper_dx (p2) (p1) (f): p2 ϵ 𝐏 → (⊗p1)●(↑[↑[p1]f]p2) = ↑[f](p1●p2). #p2 #p1 @(path_ind_lift … p1) -p1 // [ #n | #n #l #p1 |*: #p1 ] #IH #f #Hp2 [ elim (ppc_inv_lcons … Hp2) -Hp2 #l #q #H destruct // |