From 3bf7a0b4185dbffe5b822c907956acdbe2d1c559 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Tue, 21 Jun 2022 01:33:06 +0200 Subject: [PATCH] update in delayed_updating + WIP on lift + notation changed for delayed updating (term constructor) + minor corrections --- .../functions/phi_2.ma => etc/phi_2.etc} | 0 .../{class_d_phi_0.ma => class_d_tau_0.ma} | 4 +- .../notation/functions/tau_2.ma | 19 +++ .../delayed_updating/reduction/dfr.ma | 2 +- .../substitution/fsubst_eq.ma | 2 + .../substitution/fsubst_lift.ma | 54 +++++++ .../substitution/lift_constructors.ma | 8 +- .../delayed_updating/substitution/lift_eq.ma | 134 ++++++++++++++++++ .../delayed_updating/syntax/bdd_term.ma | 50 +++---- .../syntax/prototerm_constructors.ma | 10 +- .../syntax/prototerm_constructors_eq.ma | 2 +- .../syntax/prototerm_proper_constructors.ma | 2 +- .../unwind/unwind2_constructors.ma | 6 +- .../unwind/unwind2_preterm_fsubst.ma | 2 +- .../unwind/unwind_gen_structure.ma | 4 +- 15 files changed, 254 insertions(+), 45 deletions(-) rename matita/matita/contribs/lambdadelta/delayed_updating/{notation/functions/phi_2.ma => etc/phi_2.etc} (100%) rename matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/{class_d_phi_0.ma => class_d_tau_0.ma} (95%) create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/tau_2.ma create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/phi_2.ma b/matita/matita/contribs/lambdadelta/delayed_updating/etc/phi_2.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/phi_2.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/etc/phi_2.etc diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_phi_0.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_tau_0.ma similarity index 95% rename from matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_phi_0.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_tau_0.ma index d45317626..8b21ae579 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_phi_0.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_tau_0.ma @@ -14,6 +14,6 @@ (* NOTATION FOR DELAYED UPDATING ********************************************) -notation "hvbox( 𝐃𝛗 )" +notation "hvbox( 𝐃𝛕 )" non associative with precedence 70 - for @{ 'ClassDPhi }. + for @{ 'ClassDTau }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/tau_2.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/tau_2.ma new file mode 100644 index 000000000..099360cce --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/tau_2.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 76 n. break term 70 t )" + non associative with precedence 70 + for @{ 'Tau $n $t }. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma index 738553c7d..193136433 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma @@ -26,7 +26,7 @@ definition dfr (p) (q): relation2 prototerm prototerm ≝ λt1,t2. ∃n:pnat. let r ≝ p●𝗔◗𝗟◗q in ∧∧ (𝗟◗q)ᴿ = ↳[n](rᴿ) & r◖𝗱n ϵ t1 & - t1[⋔r←𝛗n.(t1⋔(p◖𝗦))] ⇔ t2 + t1[⋔r←𝛕n.(t1⋔(p◖𝗦))] ⇔ t2 . interpretation diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_eq.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_eq.ma index a3a349419..c3f6cfa11 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_eq.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_eq.ma @@ -15,6 +15,8 @@ include "delayed_updating/substitution/fsubst.ma". include "delayed_updating/syntax/prototerm_eq.ma". +(* FOCALIZED SUBSTITUTION ***************************************************) + (* Constructions with subset_equivalence ************************************) lemma subset_inclusion_fsubst_bi (t1) (t2) (u1) (u2) (p): diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma new file mode 100644 index 000000000..e1be5ded0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/fsubst_lift.ma @@ -0,0 +1,54 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +include "delayed_updating/substitution/fsubst.ma". +include "delayed_updating/substitution/lift_prototerm_eq.ma". +(* +include "delayed_updating/syntax/preterm.ma". +include "delayed_updating/syntax/prototerm_proper.ma". +*) +(* FOCALIZED SUBSTITUTION ***************************************************) + +(* Constructions with lift for preterm **************************************) + +lemma lift_term_fsubst_sn (f) (t) (u) (p): + (↑[f]t)[⋔(↑[f]p)←↑[↑[p]f]u] ⊆ ↑[f](t[⋔p←u]). +#f #t #u #p #ql * * +[ #rl * #r #Hr #H1 #H2 destruct + >lift_path_append + /4 width=3 by in_comp_lift_path_term, or_introl, ex2_intro/ +| * #q #Hq #H1 #H0 + @(ex2_intro … H1) @or_intror @conj // -Hq #r #H2 destruct + /2 width=2 by/ +] +qed-. + +lemma lift_term_fsubst_dx (f) (t) (u) (p): + ↑[f](t[⋔p←u]) ⊆ (↑[f]t)[⋔(↑[f]p)←↑[↑[p]f]u]. +#f #t #u #p #ql * #q * * +[ #r #Hu #H1 #H2 destruct + @or_introl @ex2_intro + [|| nsucc_pnpred