From: Ferruccio Guidi Date: Wed, 28 Dec 2022 16:47:38 +0000 (+0100) Subject: update in delayed_updating X-Git-Tag: make_still_working~15 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=2815c74c03f38089d0e27aba00e2280223b0f76f update in delayed_updating + some renaming --- diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_ibfr.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_ibfr.ma index 387dc8f15..48b6d1dfd 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_ibfr.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_ibfr.ma @@ -15,11 +15,11 @@ include "delayed_updating/reduction/dbfr.ma". include "delayed_updating/reduction/ibfr.ma". -include "delayed_updating/unwind/unwind2_prototerm_constructors.ma". -include "delayed_updating/unwind/unwind2_preterm_fsubst.ma". -include "delayed_updating/unwind/unwind2_preterm_eq.ma". -include "delayed_updating/unwind/unwind2_prototerm_lift.ma". -include "delayed_updating/unwind/unwind2_rmap_crux.ma". +include "delayed_updating/unwind_k/unwind2_prototerm_constructors.ma". +include "delayed_updating/unwind_k/unwind2_preterm_fsubst.ma". +include "delayed_updating/unwind_k/unwind2_preterm_eq.ma". +include "delayed_updating/unwind_k/unwind2_prototerm_lift.ma". +include "delayed_updating/unwind_k/unwind2_rmap_crux.ma". include "delayed_updating/substitution/fsubst_eq.ma". include "delayed_updating/substitution/lift_prototerm_eq.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_unprotected_neg.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_unprotected_neg.ma index a83a71d5f..ed87aa714 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_unprotected_neg.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/dbfr_unprotected_neg.ma @@ -14,7 +14,7 @@ include "delayed_updating/reduction/dbfr_constructors.ma". include "delayed_updating/reduction/ibfr_constructors.ma". -include "delayed_updating/unwind/unwind2_prototerm_constructors.ma". +include "delayed_updating/unwind_k/unwind2_prototerm_constructors.ma". include "delayed_updating/substitution/lift_prototerm_constructors.ma". include "ground/arith/pnat_two.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ibfr_unwind.ma b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ibfr_unwind.ma index 34feec243..56cfaa6ca 100644 --- a/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ibfr_unwind.ma +++ b/matita/matita/contribs/lambdadelta/delayed_updating/reduction/ibfr_unwind.ma @@ -14,10 +14,10 @@ include "delayed_updating/reduction/ibfr.ma". -include "delayed_updating/unwind/unwind2_preterm_fsubst.ma". -include "delayed_updating/unwind/unwind2_preterm_eq.ma". -include "delayed_updating/unwind/unwind2_prototerm_lift.ma". -include "delayed_updating/unwind/unwind2_rmap_crux.ma". +include "delayed_updating/unwind_k/unwind2_preterm_fsubst.ma". +include "delayed_updating/unwind_k/unwind2_preterm_eq.ma". +include "delayed_updating/unwind_k/unwind2_prototerm_lift.ma". +include "delayed_updating/unwind_k/unwind2_rmap_crux.ma". include "delayed_updating/substitution/fsubst_eq.ma". include "delayed_updating/substitution/lift_prototerm_eq.ma". diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap.ma deleted file mode 100644 index d6cdbce3d..000000000 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap.ma +++ /dev/null @@ -1,55 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/syntax/label.ma". -include "delayed_updating/notation/functions/black_righttriangle_2.ma". -include "ground/relocation/tr_uni.ma". -include "ground/relocation/tr_compose.ma". - -(* TAILED PREUNWIND FOR RELOCATION MAP **************************************) - -definition preunwind2_rmap (f) (l): tr_map ≝ -match l with -[ label_d k ⇒ f∘𝐮❨k❩ -| label_m ⇒ f -| label_L ⇒ ⫯f -| label_A ⇒ f -| label_S ⇒ f -]. - -interpretation - "tailed preunwind (relocation map)" - 'BlackRightTriangle f l = (preunwind2_rmap f l). - -(* Basic constructions ******************************************************) - -lemma preunwind2_rmap_d (f) (k:pnat): - f∘𝐮❨k❩ = ▶[f]𝗱k. -// qed. - -lemma preunwind2_rmap_m (f): - f = ▶[f]𝗺. -// qed. - -lemma preunwind2_rmap_L (f): - (⫯f) = ▶[f]𝗟. -// qed. - -lemma preunwind2_rmap_A (f): - f = ▶[f]𝗔. -// qed. - -lemma preunwind2_rmap_S (f): - f = ▶[f]𝗦. -// qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap_eq.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap_eq.ma deleted file mode 100644 index 32efd9f04..000000000 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap_eq.ma +++ /dev/null @@ -1,27 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/unwind/preunwind2_rmap.ma". -include "ground/relocation/tr_compose_eq.ma". -include "ground/relocation/tr_pn_eq.ma". - -(* TAILED PREUNWIND FOR RELOCATION MAP **************************************) - -(* Constructions with tr_map_eq *********************************************) - -lemma preunwind2_rmap_eq_repl (l): - stream_eq_repl … (λf1,f2. ▶[f1]l ≗ ▶[f2]l). -* // #k #f1 #f2 #Hf -/2 width=1 by tr_compose_eq_repl/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap_lift.ma deleted file mode 100644 index cc5b351ad..000000000 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/preunwind2_rmap_lift.ma +++ /dev/null @@ -1,34 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/unwind/preunwind2_rmap.ma". -include "delayed_updating/substitution/prelift_label.ma". -include "delayed_updating/substitution/prelift_rmap.ma". -include "ground/relocation/tr_uni_compose.ma". -include "ground/relocation/tr_compose_compose.ma". -include "ground/relocation/tr_compose_eq.ma". -include "ground/lib/stream_eq_eq.ma". - -(* TAILED PREUNWIND FOR RELOCATION MAP **************************************) - -(* Constructions with lift_path *********************************************) - -lemma preunwind2_lift_rmap_after (g) (f) (l): - ▶[g]🠡[f]l∘🠢[f]l ≗ ▶[g∘f]l. -#g #f * // #k -tr_compose_pap -/2 width=3 by tr_pap_eq_repl/ -qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_path_append.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_path_append.ma deleted file mode 100644 index 8796ce86f..000000000 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_path_append.ma +++ /dev/null @@ -1,244 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/unwind/unwind2_path.ma". -include "delayed_updating/syntax/path_inner.ma". -include "delayed_updating/syntax/path_proper.ma". -include "ground/xoa/ex_4_2.ma". - -(* TAILED UNWIND FOR PATH ***************************************************) - -(* Constructions with pic ***************************************************) - -lemma unwind2_path_pic (f) (p): - p ϵ 𝐈 → ⊗p = ▼[f]p. -#f * // * // #k #q #Hq -elim (pic_inv_d_dx … Hq) -qed-. - -(* Constructions with append and pic ****************************************) - -lemma unwind2_path_append_pic_sn (f) (p) (q): p ϵ 𝐈 → - (⊗p)●(▼[▶[f]p]q) = ▼[f](p●q). -#f #p * [ #Hp | * [ #k ] #q #_ ] // -[ <(unwind2_path_pic … Hp) -Hp // -| list_cons_comm #H0 - elim (unwind2_path_inv_append_ppc_dx … H0) -H0 // #r1 #r2 #Hr1 #_ #_ -r2 - elim (eq_inv_d_dx_structure … Hr1) -] -qed-. - -lemma eq_inv_m_sn_unwind2_path (f) (q) (p): - (𝗺◗q) = ▼[f]p → ⊥. -#f #q #p ->list_cons_comm #H0 -elim (unwind2_path_des_append_pic_sn … H0) list_cons_comm #H0 -elim (unwind2_path_des_append_pic_sn … H0) list_cons_comm #H0 -elim (unwind2_path_des_append_pic_sn … H0) list_cons_comm #H0 -elim (unwind2_path_des_append_pic_sn … H0) tr_compose_pap -/4 width=1 by tr_pap_eq_repl, eq_f2, eq_f/ -qed. - -lemma unwind2_lift_path_after (g) (f) (p): - ▼[g]🠡[f]p = ▼[g∘f]p. -#g #f * // * [ #k ] #p -[ tr_compose_pap - /4 width=1 by tr_pap_eq_repl, eq_f2, eq_f/ -| (Ht … Hp0) [|*: /2 width=2 by ex_intro/ ] -p -/2 width=1 by in_comp_unwind2_path_term/ -qed-. - -lemma unwind2_term_grafted (f) (t) (p): p ϵ 𝐈 → p ϵ ▵t → t ϵ 𝐓 → - ▼[▶[f]p](t⋔p) ⇔ (▼[f]t)⋔(⊗p). -/3 width=1 by unwind2_term_grafted_sn, unwind2_term_grafted_dx, conj/ qed. - -lemma unwind2_term_grafted_S_dx (f) (t) (p): p ϵ ▵t → t ϵ 𝐓 → - (▼[f]t)⋔((⊗p)◖𝗦) ⊆ ▼[▶[f]p](t⋔(p◖𝗦)). -#f #t #p #Hp #Ht #q * #r #Hr ->list_append_rcons_sn #H0 -elim (unwind2_path_inv_append_ppc_dx … (sym_eq … H0)) -H0 // -#p0 #q0 #Hp0 #Hq0 #H0 destruct ->(Ht … Hp0) [|*: /2 width=2 by ex_intro/ ] -p -elim (eq_inv_S_sn_unwind2_path … Hq0) -Hq0 -#r1 #r2 #Hr1 #Hr2 #H0 destruct -lapply (preterm_in_root_append_inv_structure_empty_dx … p0 … Ht Hr1) -[ /2 width=2 by ex_intro/ ] -Hr1 #Hr1 destruct -/2 width=1 by in_comp_unwind2_path_term/ -qed-. - -lemma unwind2_term_grafted_S (f) (t) (p): p ϵ ▵t → t ϵ 𝐓 → - ▼[▶[f]p](t⋔(p◖𝗦)) ⇔ (▼[f]t)⋔((⊗p)◖𝗦). -#f #t #p #Hp #Ht -@conj -[ >unwind2_rmap_S_dx >structure_S_dx - @unwind2_term_grafted_sn // (**) (* auto fails *) -| /2 width=1 by unwind2_term_grafted_S_dx/ -] -qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_preterm_fsubst.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_preterm_fsubst.ma deleted file mode 100644 index ecf0eaf0f..000000000 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_preterm_fsubst.ma +++ /dev/null @@ -1,101 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/unwind/unwind2_prototerm_eq.ma". -include "delayed_updating/unwind/unwind2_path_append.ma". -include "delayed_updating/substitution/fsubst.ma". -include "delayed_updating/syntax/preterm.ma". -include "delayed_updating/syntax/prototerm_proper.ma". - -(* TAILED UNWIND FOR PRETERM ************************************************) - -(* Constructions with fsubst and pic ****************************************) - -lemma unwind2_term_fsubst_pic_sn (f) (t) (u) (p): p ϵ 𝐈 → - (▼[f]t)[⋔(⊗p)←▼[▶[f]p]u] ⊆ ▼[f](t[⋔p←u]). -#f #t #u #p #Hp #ql * * -[ #rl * #r #Hr #H1 #H2 destruct - >unwind2_path_append_pic_sn - /4 width=3 by in_comp_unwind2_path_term, or_introl, ex2_intro/ -| * #q #Hq #H1 #H0 - @(ex2_intro … H1) @or_intror @conj // * - [ unwind2_path_append_ppc_dx - /4 width=5 by in_comp_unwind2_path_term, in_comp_tpc_trans, or_introl, ex2_intro/ -| * #q #Hq #H1 #H0 - @(ex2_intro … H1) @or_intror @conj // * - [ (nplus_zero_sn n) -<(nap_plus_unwind2_rmap_append_closed_Lq_dx … Hn) -Hn -nrplus_inj_dx >nrplus_inj_sn >nsucc_unfold // -qed-. - -lemma tls_succ_unwind2_rmap_push_closed (o) (f) (q) (n): - q ϵ 𝐂❨o,n,𝟎❩ → - f ≗ ⇂*[↑n]▶[⫯f]q. -#o #f #q #n #Hn -/2 width=2 by tls_succ_plus_unwind2_rmap_push_closed/ -qed-. - -lemma tls_succ_plus_unwind2_rmap_append_closed_Lq_dx (o) (f) (p) (q) (n): - q ϵ 𝐂❨o,n,𝟎❩ → - ∀m. ⇂*[m]▶[f]p ≗ ⇂*[↑(m+n)]▶[f](p●𝗟◗q). -#o #f #p #q #n #Hn #m -/2 width=2 by tls_succ_plus_unwind2_rmap_push_closed/ -qed-. - -lemma tls_succ_unwind2_rmap_closed (f) (q) (n): - q ϵ 𝐂❨Ⓕ,n,𝟎❩ → - ⇂f ≗ ⇂*[↑n]▶[f]q. -#f #q #n #Hn -@(stream_eq_canc_dx … (stream_tls_eq_repl …)) -[| @(unwind2_rmap_eq_repl … (tr_compose_id_dx …)) | skip ] -@(stream_eq_trans … (stream_tls_eq_repl …)) -[| @(lift_unwind2_rmap_after … ) | skip ] -list_append_assoc ->list_append_rcons_sn >(list_append_rcons_sn … b) -@(stream_eq_trans … (tr_compose_uni_dx_pap …)) nsucc_unfold >nplus_succ_dx >nplus_succ_dx tr_nap_plus_dx stream_tls_succ (tr_pap_eq_repl … (▶[f]p) … (unwind2_rmap_decompose …)) -unwind2_rmap_pap_le -*) -#f #p #n #Hn ->(tr_xap_eq_repl … (▶[f]p) … (unwind2_rmap_decompose …)) -nrplus_inj_dx -/2 width=1 by tr_tls_compose_uni_dx/ -qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_rmap_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_rmap_lift.ma deleted file mode 100644 index b42274ef8..000000000 --- a/matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind2_rmap_lift.ma +++ /dev/null @@ -1,43 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/unwind/unwind2_rmap.ma". -include "delayed_updating/unwind/preunwind2_rmap_lift.ma". -include "delayed_updating/unwind/preunwind2_rmap_eq.ma". -include "delayed_updating/substitution/lift_path.ma". -include "delayed_updating/syntax/path_structure.ma". - -(* TAILED UNWIND FOR RELOCATION MAP *****************************************) - -(* Constructions with lift_path *********************************************) - -lemma lift_unwind2_rmap_after (g) (f) (p): - 🠢[g]⊗p∘▶[f]p ≗ ▶[g∘f]p. -#g #f #p elim p -p // -* [ #k ] #p #IH // -[ tr_compose_pap +/2 width=3 by tr_pap_eq_repl/ +qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_path_append.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_path_append.ma new file mode 100644 index 000000000..cdff0a580 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_path_append.ma @@ -0,0 +1,244 @@ +(**************************************************************************) +(* ___ *) +(* ||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/unwind_k/unwind2_path.ma". +include "delayed_updating/syntax/path_inner.ma". +include "delayed_updating/syntax/path_proper.ma". +include "ground/xoa/ex_4_2.ma". + +(* TAILED UNWIND FOR PATH ***************************************************) + +(* Constructions with pic ***************************************************) + +lemma unwind2_path_pic (f) (p): + p ϵ 𝐈 → ⊗p = ▼[f]p. +#f * // * // #k #q #Hq +elim (pic_inv_d_dx … Hq) +qed-. + +(* Constructions with append and pic ****************************************) + +lemma unwind2_path_append_pic_sn (f) (p) (q): p ϵ 𝐈 → + (⊗p)●(▼[▶[f]p]q) = ▼[f](p●q). +#f #p * [ #Hp | * [ #k ] #q #_ ] // +[ <(unwind2_path_pic … Hp) -Hp // +| list_cons_comm #H0 + elim (unwind2_path_inv_append_ppc_dx … H0) -H0 // #r1 #r2 #Hr1 #_ #_ -r2 + elim (eq_inv_d_dx_structure … Hr1) +] +qed-. + +lemma eq_inv_m_sn_unwind2_path (f) (q) (p): + (𝗺◗q) = ▼[f]p → ⊥. +#f #q #p +>list_cons_comm #H0 +elim (unwind2_path_des_append_pic_sn … H0) list_cons_comm #H0 +elim (unwind2_path_des_append_pic_sn … H0) list_cons_comm #H0 +elim (unwind2_path_des_append_pic_sn … H0) list_cons_comm #H0 +elim (unwind2_path_des_append_pic_sn … H0) tr_compose_pap +/4 width=1 by tr_pap_eq_repl, eq_f2, eq_f/ +qed. + +lemma unwind2_lift_path_after (g) (f) (p): + ▼[g]🠡[f]p = ▼[g∘f]p. +#g #f * // * [ #k ] #p +[ tr_compose_pap + /4 width=1 by tr_pap_eq_repl, eq_f2, eq_f/ +| (Ht … Hp0) [|*: /2 width=2 by ex_intro/ ] -p +/2 width=1 by in_comp_unwind2_path_term/ +qed-. + +lemma unwind2_term_grafted (f) (t) (p): p ϵ 𝐈 → p ϵ ▵t → t ϵ 𝐓 → + ▼[▶[f]p](t⋔p) ⇔ (▼[f]t)⋔(⊗p). +/3 width=1 by unwind2_term_grafted_sn, unwind2_term_grafted_dx, conj/ qed. + +lemma unwind2_term_grafted_S_dx (f) (t) (p): p ϵ ▵t → t ϵ 𝐓 → + (▼[f]t)⋔((⊗p)◖𝗦) ⊆ ▼[▶[f]p](t⋔(p◖𝗦)). +#f #t #p #Hp #Ht #q * #r #Hr +>list_append_rcons_sn #H0 +elim (unwind2_path_inv_append_ppc_dx … (sym_eq … H0)) -H0 // +#p0 #q0 #Hp0 #Hq0 #H0 destruct +>(Ht … Hp0) [|*: /2 width=2 by ex_intro/ ] -p +elim (eq_inv_S_sn_unwind2_path … Hq0) -Hq0 +#r1 #r2 #Hr1 #Hr2 #H0 destruct +lapply (preterm_in_root_append_inv_structure_empty_dx … p0 … Ht Hr1) +[ /2 width=2 by ex_intro/ ] -Hr1 #Hr1 destruct +/2 width=1 by in_comp_unwind2_path_term/ +qed-. + +lemma unwind2_term_grafted_S (f) (t) (p): p ϵ ▵t → t ϵ 𝐓 → + ▼[▶[f]p](t⋔(p◖𝗦)) ⇔ (▼[f]t)⋔((⊗p)◖𝗦). +#f #t #p #Hp #Ht +@conj +[ >unwind2_rmap_S_dx >structure_S_dx + @unwind2_term_grafted_sn // (**) (* auto fails *) +| /2 width=1 by unwind2_term_grafted_S_dx/ +] +qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_preterm_fsubst.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_preterm_fsubst.ma new file mode 100644 index 000000000..708ac32a2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_preterm_fsubst.ma @@ -0,0 +1,101 @@ +(**************************************************************************) +(* ___ *) +(* ||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/unwind_k/unwind2_prototerm_eq.ma". +include "delayed_updating/unwind_k/unwind2_path_append.ma". +include "delayed_updating/substitution/fsubst.ma". +include "delayed_updating/syntax/preterm.ma". +include "delayed_updating/syntax/prototerm_proper.ma". + +(* TAILED UNWIND FOR PRETERM ************************************************) + +(* Constructions with fsubst and pic ****************************************) + +lemma unwind2_term_fsubst_pic_sn (f) (t) (u) (p): p ϵ 𝐈 → + (▼[f]t)[⋔(⊗p)←▼[▶[f]p]u] ⊆ ▼[f](t[⋔p←u]). +#f #t #u #p #Hp #ql * * +[ #rl * #r #Hr #H1 #H2 destruct + >unwind2_path_append_pic_sn + /4 width=3 by in_comp_unwind2_path_term, or_introl, ex2_intro/ +| * #q #Hq #H1 #H0 + @(ex2_intro … H1) @or_intror @conj // * + [ unwind2_path_append_ppc_dx + /4 width=5 by in_comp_unwind2_path_term, in_comp_tpc_trans, or_introl, ex2_intro/ +| * #q #Hq #H1 #H0 + @(ex2_intro … H1) @or_intror @conj // * + [ (nplus_zero_sn n) +<(nap_plus_unwind2_rmap_append_closed_Lq_dx … Hn) -Hn +nrplus_inj_dx >nrplus_inj_sn >nsucc_unfold // +qed-. + +lemma tls_succ_unwind2_rmap_push_closed (o) (f) (q) (n): + q ϵ 𝐂❨o,n,𝟎❩ → + f ≗ ⇂*[↑n]▶[⫯f]q. +#o #f #q #n #Hn +/2 width=2 by tls_succ_plus_unwind2_rmap_push_closed/ +qed-. + +lemma tls_succ_plus_unwind2_rmap_append_closed_Lq_dx (o) (f) (p) (q) (n): + q ϵ 𝐂❨o,n,𝟎❩ → + ∀m. ⇂*[m]▶[f]p ≗ ⇂*[↑(m+n)]▶[f](p●𝗟◗q). +#o #f #p #q #n #Hn #m +/2 width=2 by tls_succ_plus_unwind2_rmap_push_closed/ +qed-. + +lemma tls_succ_unwind2_rmap_closed (f) (q) (n): + q ϵ 𝐂❨Ⓕ,n,𝟎❩ → + ⇂f ≗ ⇂*[↑n]▶[f]q. +#f #q #n #Hn +@(stream_eq_canc_dx … (stream_tls_eq_repl …)) +[| @(unwind2_rmap_eq_repl … (tr_compose_id_dx …)) | skip ] +@(stream_eq_trans … (stream_tls_eq_repl …)) +[| @(lift_unwind2_rmap_after … ) | skip ] +list_append_assoc +>list_append_rcons_sn >(list_append_rcons_sn … b) +@(stream_eq_trans … (tr_compose_uni_dx_pap …)) nsucc_unfold >nplus_succ_dx >nplus_succ_dx tr_nap_plus_dx stream_tls_succ (tr_pap_eq_repl … (▶[f]p) … (unwind2_rmap_decompose …)) +unwind2_rmap_pap_le +*) +#f #p #n #Hn +>(tr_xap_eq_repl … (▶[f]p) … (unwind2_rmap_decompose …)) +nrplus_inj_dx +/2 width=1 by tr_tls_compose_uni_dx/ +qed. diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_rmap_lift.ma b/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_rmap_lift.ma new file mode 100644 index 000000000..1d3d54458 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/delayed_updating/unwind_k/unwind2_rmap_lift.ma @@ -0,0 +1,43 @@ +(**************************************************************************) +(* ___ *) +(* ||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/unwind_k/unwind2_rmap.ma". +include "delayed_updating/unwind_k/preunwind2_rmap_lift.ma". +include "delayed_updating/unwind_k/preunwind2_rmap_eq.ma". +include "delayed_updating/substitution/lift_path.ma". +include "delayed_updating/syntax/path_structure.ma". + +(* TAILED UNWIND FOR RELOCATION MAP *****************************************) + +(* Constructions with lift_path *********************************************) + +lemma lift_unwind2_rmap_after (g) (f) (p): + 🠢[g]⊗p∘▶[f]p ≗ ▶[g∘f]p. +#g #f #p elim p -p // +* [ #k ] #p #IH // +[