From 2cc4eb5d0210be58286e028278852122dcb68052 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Thu, 20 Jan 2022 20:48:22 +0100 Subject: [PATCH] update in delayed_updating + a premise removed from lift_fsubst_sn + dfr and ifr restated to take equiprovability into account + notatation update for preterms --- .../class_t_0.ma} | 6 +++--- .../delayed_updating/reduction/dfr.ma | 10 ++++++---- .../delayed_updating/reduction/dfr_ifr.ma | 14 +++++++++++--- .../delayed_updating/reduction/ifr.ma | 9 +++++---- .../substitution/fsubst_lift.ma | 17 ++++++++++------- .../substitution/lift_prototerm.ma | 6 ++++++ .../substitution/lift_structure.ma | 10 +++++++++- .../delayed_updating/syntax/preterm.ma | 13 ++++--------- 8 files changed, 54 insertions(+), 31 deletions(-) rename matita/matita/contribs/lambdadelta/delayed_updating/notation/{relations/predicate_t_hook_1.ma => functions/class_t_0.ma} (91%) diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_t_hook_1.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_t_0.ma similarity index 91% rename from matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_t_hook_1.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_t_0.ma index 34af172fb..182544bf0 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/predicate_t_hook_1.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_t_0.ma @@ -14,6 +14,6 @@ (* NOTATION FOR DELAYED UPDATING ********************************************) -notation "hvbox( Ƭ term 70 x )" - non associative with precedence 45 - for @{ 'PredicateTHook $x }. +notation "hvbox( 𝐓 )" + non associative with precedence 70 + for @{ 'ClassT }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma index ed077ae2c..5b5036593 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma @@ -16,15 +16,17 @@ include "delayed_updating/syntax/path_depth.ma". include "delayed_updating/syntax/path_structure.ma". include "delayed_updating/syntax/path_balanced.ma". include "delayed_updating/syntax/prototerm_constructors.ma". +include "delayed_updating/syntax/prototerm_equivalence.ma". include "delayed_updating/substitution/fsubst.ma". include "delayed_updating/notation/relations/black_rightarrow_df_4.ma". (* DELAYED FOCUSED REDUCTION ************************************************) -inductive dfr (p) (q) (t): predicate prototerm ≝ -| dfr_beta (b): - let r ≝ p●𝗔◗b●𝗟◗q in - r◖𝗱(↑❘q❘) ϵ t → ⊓(⊗b) → dfr p q t (t[⋔r←𝛗(↑❘q❘).t⋔(p◖𝗦)]) +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◖𝗦)] . 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 9a713d1e5..5d6c3cfef 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma @@ -18,7 +18,15 @@ include "delayed_updating/substitution/fsubst_lift.ma". (* DELAYED FOCUSED REDUCTION ************************************************) -lemma dfr_lift_bi (f) (p) (q) (t1) (t2): Ƭt1 → +lemma dfr_lift_bi (f) (p) (q) (t1) (t2): t1 ϵ 𝐓 → t1 ➡𝐝𝐟[p,q] t2 → ↑[f]t1 ➡𝐟[⊗p,⊗q] ↑[f]t2. -#f #p #q #t1 #t2 #Ht1 -* -t2 #b #Hr #Hb +#f #p #q #t1 #t2 #H0t1 +* #b * #Hb #Ht1 #Ht2 +@(ex_intro … (⊗b)) @and3_intro +[ // +| lapply (in_comp_lift_bi f … Ht1) -Ht1 #Ht1 + + + + + diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr.ma index d087bdbb7..582f6ed57 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr.ma @@ -21,10 +21,11 @@ include "delayed_updating/notation/relations/black_rightarrow_f_4.ma". (* IMMEDIATE FOCUSED REDUCTION ************************************************) -inductive ifr (p) (q) (t): predicate prototerm ≝ -| ifr_beta (b): - let r ≝ p●𝗔◗b●𝗟◗q in - r◖𝗱(↑❘q❘) ϵ t → ⊓(⊗b) → ifr p q t (t[⋔r←↑[𝐮❨↑❘q❘❩]t⋔(p◖𝗦)]) +definition ifr (p) (q): relation2 prototerm prototerm ≝ + λt1,t2. ∃b. + let r ≝ p●𝗔◗b●𝗟◗q in + ∧∧ ⊓(⊗b) & r◖𝗱(↑❘q❘) ϵ t1 & + t2 ⇔ t1[⋔r←↑[𝐮❨↑❘q❘❩]t1⋔(p◖𝗦)] . interpretation diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma index c9d656028..08ff3ebb3 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma @@ -20,20 +20,23 @@ include "delayed_updating/syntax/prototerm_proper.ma". (* FOCALIZED SUBSTITUTION ***************************************************) -lemma lift_fsubst_sn (f) (t) (u) (p): Ꝕu → p ⧸ϵ t → +lemma lift_fsubst_sn (f) (t) (u) (p): Ꝕu → (↑[f]t)[⋔(⊗p)←↑[↑[p]f]u] ⊆ ↑[f](t[⋔p←u]). -#f #t #u #p #Hu #Hp #ql * * +#f #t #u #p #Hu #ql * * [ #rl * #r #Hr #H1 #H2 destruct >lift_append_proper_dx /4 width=1 by subset_in_ext_f1_dx, or_introl/ | * #q #Hq #H1 #H0 - @(ex2_intro … H1) @or_intror @conj // - #r #H2 destruct - @H0 -H0 [|