From a4cacf8e269910184348a037106551dbc8a46fd4 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Thu, 23 Jun 2022 12:54:36 +0200 Subject: [PATCH] update in delayed_updating + unwind2_path_after_lift + prelift + refactoring for lift --- .../delayed_updating/reduction/dfr_lift.ma | 1 - .../delayed_updating/reduction/ifr_lift.ma | 55 +++++++++++++++++++ .../substitution/{lift.ma => lift_gen.ma} | 0 .../{lift_eq.ma => lift_gen_eq.ma} | 2 +- .../substitution/lift_path_after.ma | 2 +- .../substitution/lift_path_head.ma | 2 +- .../{lift_id.ma => lift_path_id.ma} | 10 +--- .../substitution/lift_path_length.ma | 2 +- .../substitution/lift_path_prelift.ma | 31 +++++++++++ .../substitution/lift_path_proper.ma | 2 +- .../substitution/lift_path_structure.ma | 2 +- .../substitution/lift_path_uni.ma | 2 +- .../substitution/lift_prototerm.ma | 2 +- .../substitution/lift_prototerm_id.ma | 2 +- .../substitution/lift_rmap_head.ma | 2 +- .../substitution/lift_rmap_id.ma | 26 +++++++++ .../substitution/prelift_label.ma | 54 ++++++++++++++++++ .../substitution/prelift_rmap.ma | 55 +++++++++++++++++++ .../unwind/unwind2_path_lift.ma | 22 +++++++- .../unwind/unwind2_prototerm_lift.ma | 12 +++- 20 files changed, 261 insertions(+), 25 deletions(-) create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr_lift.ma rename matita/matita/contribs/lambdadelta/delayed_updating/substitution/{lift.ma => lift_gen.ma} (100%) rename matita/matita/contribs/lambdadelta/delayed_updating/substitution/{lift_eq.ma => lift_gen_eq.ma} (99%) rename matita/matita/contribs/lambdadelta/delayed_updating/substitution/{lift_id.ma => lift_path_id.ma} (86%) create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_prelift.ma create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_rmap_id.ma create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/substitution/prelift_label.ma create mode 100644 matita/matita/contribs/lambdadelta/delayed_updating/substitution/prelift_rmap.ma diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_lift.ma index 9fbf809b3..f71d6974e 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_lift.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_lift.ma @@ -13,7 +13,6 @@ (**************************************************************************) include "delayed_updating/reduction/dfr.ma". -include "delayed_updating/reduction/ifr.ma". include "delayed_updating/substitution/fsubst_lift.ma". include "delayed_updating/substitution/fsubst_eq.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr_lift.ma new file mode 100644 index 000000000..6d5cb47f0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr_lift.ma @@ -0,0 +1,55 @@ +(**************************************************************************) +(* ___ *) +(* ||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/reduction/ifr.ma". + +include "delayed_updating/unwind/unwind2_path_lift.ma". + +include "delayed_updating/substitution/fsubst_lift.ma". +include "delayed_updating/substitution/fsubst_eq.ma". +include "delayed_updating/substitution/lift_prototerm_eq.ma". +include "delayed_updating/substitution/lift_path_head.ma". +include "delayed_updating/substitution/lift_rmap_head.ma". + +(* IMMEDIATE FOCUSED REDUCTION **********************************************) + +(* Constructions with lift **************************************************) + +theorem ifr_lift_bi (f) (p) (q) (t1) (t2): + t1 ➡𝐢𝐟[p,q] t2 → ↑[f]t1 ➡𝐢𝐟[↑[f]p,↑[↑[p◖𝗔◖𝗟]f]q] ↑[f]t2. +#f #p #q #t1 #t2 +* #n * #H1n #Ht1 #Ht2 +@(ex_intro … ((↑[p●𝗔◗𝗟◗q]f)@⧣❨n❩)) @and3_intro +[ -Ht1 -Ht2 + lift_path_L_sn + >list_append_rcons_sn in H1n; list_append_rcons_sn in H1n; #H1n >lift_rmap_A_dx + /2 width=1 by tls_lift_rmap_append_closed/ +(* Note: crux of the proof ends *) +] +qed. +*) \ No newline at end of file diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_gen.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_gen.ma diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_eq.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_gen_eq.ma similarity index 99% rename from matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_eq.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_gen_eq.ma index 317e1f424..e589276a8 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_eq.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_gen_eq.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "delayed_updating/substitution/lift.ma". +include "delayed_updating/substitution/lift_gen.ma". include "ground/relocation/tr_pap_pap.ma". include "ground/relocation/tr_pap_eq.ma". include "ground/relocation/tr_pn_eq.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_after.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_after.ma index 869d680fe..1bdf3c592 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_after.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_after.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "delayed_updating/substitution/lift_eq.ma". +include "delayed_updating/substitution/lift_gen_eq.ma". include "ground/relocation/tr_compose_pap.ma". include "ground/relocation/tr_compose_pn.ma". include "ground/relocation/tr_compose_tls.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_head.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_head.ma index 71b11f5d6..772cc8d09 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_head.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_head.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "delayed_updating/substitution/lift_eq.ma". +include "delayed_updating/substitution/lift_gen_eq.ma". include "delayed_updating/syntax/path_head.ma". include "delayed_updating/syntax/path_reverse.ma". include "ground/relocation/xap.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_id.ma b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_id.ma similarity index 86% rename from matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_id.ma rename to matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_id.ma index c2376b52e..cac770811 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_id.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_path_id.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "delayed_updating/substitution/lift_eq.ma". +include "delayed_updating/substitution/lift_gen_eq.ma". include "ground/relocation/tr_id_pap.ma". include "ground/relocation/tr_id_tls.ma". @@ -28,11 +28,3 @@ lemma lift_path_id (p): | tr_compose_push_bi // ] qed. + +lemma unwind2_path_after_lift (p) (f1) (f2): + ▼[f2]↑[f1]p = ▼[f2∘f1]p. +#p @(path_ind_unwind … p) -p // [ #n #l ] #p #IH #f1 #f2 +[ lift_path_lcons_prelift + >IH -IH + >(unwind2_path_eq_repl … (tr_compose_assoc …)) + >(unwind2_path_eq_repl … (tr_compose_assoc …)) + tr_compose_push_bi // +] +qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_prototerm_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_prototerm_lift.ma index 8e3d2cf2f..8d987dfb7 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_prototerm_lift.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_prototerm_lift.ma @@ -22,10 +22,18 @@ include "delayed_updating/unwind/unwind2_prototerm.ma". (* Constructions with lift_prototerm ****************************************) -lemma unwind2_lift_term_after (f1) (f2) (t): +lemma lift_unwind2_term_after (f1) (f2) (t): ↑[f2]▼[f1]t ⇔ ▼[f2∘f1]t. #f1 #f2 #t @subset_eq_trans [| @subset_inclusion_ext_f1_compose ] @subset_equivalence_ext_f1_exteq #p -@unwind2_lift_path_after +@lift_unwind2_path_after +qed. + +lemma unwind2_term_after_lift (f1) (f2) (t): + ▼[f2]↑[f1]t ⇔ ▼[f2∘f1]t. +#f1 #f2 #t @subset_eq_trans +[| @subset_inclusion_ext_f1_compose ] +@subset_equivalence_ext_f1_exteq #p +@unwind2_path_after_lift qed. -- 2.39.2