From 7593c0f74b944fb100493fb24b665ce3b8d1d252 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Wed, 21 Oct 2015 16:59:38 +0000 Subject: [PATCH] theory of multiple relocation completed --- .../cpys.ma => etc_new/cpys/cpys.etc} | 0 .../cpys_alt.ma => etc_new/cpys/cpys_alt.etc} | 0 .../cpys/cpys_cpys.etc} | 0 .../cpys/cpys_lift.etc} | 0 .../llor.ma => etc_new/llor/llor.etc} | 0 .../llor_alt.ma => etc_new/llor/llor_alt.etc} | 0 .../llor/llor_drop.etc} | 0 .../lambdadelta/basic_2/multiple/lifts.ma | 150 -------- .../basic_2/multiple/lifts_lift.ma | 63 ---- .../basic_2/multiple/lifts_vector.ma | 53 --- .../basic_2/{multiple => relocation}/drops.ma | 0 .../{multiple => relocation}/drops_drop.ma | 0 .../{multiple => relocation}/drops_drops.ma | 0 .../basic_2/{multiple => relocation}/fleq.ma | 0 .../{multiple => relocation}/fleq_fleq.ma | 0 .../basic_2/{multiple => relocation}/fqup.ma | 0 .../{multiple => relocation}/fqup_fqup.ma | 0 .../basic_2/{multiple => relocation}/fqus.ma | 0 .../{multiple => relocation}/fqus_alt.ma | 0 .../{multiple => relocation}/fqus_fqus.ma | 0 .../lambdadelta/basic_2/relocation/frees.ma | 41 +++ .../lambdadelta/basic_2/relocation/lifts.ma | 348 ++++++++++++++++++ .../basic_2/relocation/lifts_lifts.ma | 101 +++++ .../basic_2/relocation/lifts_lifts_vector.ma | 53 +++ .../lifts_simple.ma} | 31 +- .../basic_2/relocation/lifts_vector.ma | 114 ++++++ .../lifts_weight.ma} | 16 +- .../basic_2/{multiple => relocation}/lleq.ma | 0 .../{multiple => relocation}/lleq_alt.ma | 0 .../{multiple => relocation}/lleq_alt_rec.ma | 0 .../{multiple => relocation}/lleq_drop.ma | 0 .../{multiple => relocation}/lleq_fqus.ma | 0 .../{multiple => relocation}/lleq_lleq.ma | 0 .../{multiple => relocation}/lleq_llor.ma | 0 .../{multiple => relocation}/lleq_lreq.ma | 0 .../{multiple => relocation}/llpx_sn.ma | 0 .../{multiple => relocation}/llpx_sn_alt.ma | 0 .../llpx_sn_alt_rec.ma | 0 .../{multiple => relocation}/llpx_sn_drop.ma | 0 .../{multiple => relocation}/llpx_sn_frees.ma | 0 .../{multiple => relocation}/llpx_sn_llor.ma | 0 .../llpx_sn_lpx_sn.ma | 0 .../{multiple => relocation}/llpx_sn_lreq.ma | 0 .../{multiple => relocation}/llpx_sn_tc.ma | 0 44 files changed, 679 insertions(+), 291 deletions(-) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/cpys.ma => etc_new/cpys/cpys.etc} (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/cpys_alt.ma => etc_new/cpys/cpys_alt.etc} (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/cpys_cpys.ma => etc_new/cpys/cpys_cpys.etc} (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/cpys_lift.ma => etc_new/cpys/cpys_lift.etc} (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/llor.ma => etc_new/llor/llor.etc} (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/llor_alt.ma => etc_new/llor/llor_alt.etc} (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple/llor_drop.ma => etc_new/llor/llor_drop.etc} (100%) delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/multiple/lifts.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_vector.ma rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/drops.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/drops_drop.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/drops_drops.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fleq.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fleq_fleq.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fqup.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fqup_fqup.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fqus.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fqus_alt.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/fqus_fqus.ma (100%) create mode 100644 matita/matita/contribs/lambdadelta/basic_2/relocation/frees.ma create mode 100644 matita/matita/contribs/lambdadelta/basic_2/relocation/lifts.ma create mode 100644 matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts.ma create mode 100644 matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma rename matita/matita/contribs/lambdadelta/basic_2/{multiple/lifts_lift_vector.ma => relocation/lifts_simple.ma} (53%) create mode 100644 matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma rename matita/matita/contribs/lambdadelta/basic_2/{multiple/lifts_lifts.ma => relocation/lifts_weight.ma} (70%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_alt.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_alt_rec.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_drop.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_fqus.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_lleq.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_llor.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/lleq_lreq.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_alt.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_alt_rec.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_drop.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_frees.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_llor.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_lpx_sn.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_lreq.ma (100%) rename matita/matita/contribs/lambdadelta/basic_2/{multiple => relocation}/llpx_sn_tc.ma (100%) diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/cpys.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/cpys.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/cpys_alt.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys_alt.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/cpys_alt.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys_alt.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/cpys_cpys.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys_cpys.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/cpys_cpys.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys_cpys.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/cpys_lift.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys_lift.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/cpys_lift.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/cpys/cpys_lift.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llor.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/llor/llor.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llor.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/llor/llor.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llor_alt.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/llor/llor_alt.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llor_alt.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/llor/llor_alt.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llor_drop.ma b/matita/matita/contribs/lambdadelta/basic_2/etc_new/llor/llor_drop.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llor_drop.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc_new/llor/llor_drop.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts.ma b/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts.ma deleted file mode 100644 index 7a091abce..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts.ma +++ /dev/null @@ -1,150 +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 "basic_2/notation/relations/rliftstar_3.ma". -include "basic_2/substitution/lift.ma". -include "basic_2/multiple/mr2_plus.ma". - -(* GENERIC TERM RELOCATION **************************************************) - -inductive lifts: list2 ynat nat → relation term ≝ -| lifts_nil : ∀T. lifts (◊) T T -| lifts_cons: ∀T1,T,T2,cs,l,m. - ⬆[l,m] T1 ≡ T → lifts cs T T2 → lifts ({l, m} @ cs) T1 T2 -. - -interpretation "generic relocation (term)" - 'RLiftStar cs T1 T2 = (lifts cs T1 T2). - -(* Basic inversion lemmas ***************************************************) - -fact lifts_inv_nil_aux: ∀T1,T2,cs. ⬆*[cs] T1 ≡ T2 → cs = ◊ → T1 = T2. -#T1 #T2 #cs * -T1 -T2 -cs // -#T1 #T #T2 #l #m #cs #_ #_ #H destruct -qed-. - -lemma lifts_inv_nil: ∀T1,T2. ⬆*[◊] T1 ≡ T2 → T1 = T2. -/2 width=3 by lifts_inv_nil_aux/ qed-. - -fact lifts_inv_cons_aux: ∀T1,T2,cs. ⬆*[cs] T1 ≡ T2 → - ∀l,m,tl. cs = {l, m} @ tl → - ∃∃T. ⬆[l, m] T1 ≡ T & ⬆*[tl] T ≡ T2. -#T1 #T2 #cs * -T1 -T2 -cs -[ #T #l #m #tl #H destruct -| #T1 #T #T2 #cs #l #m #HT1 #HT2 #l0 #m0 #tl #H destruct - /2 width=3 by ex2_intro/ -qed-. - -lemma lifts_inv_cons: ∀T1,T2,l,m,cs. ⬆*[{l, m} @ cs] T1 ≡ T2 → - ∃∃T. ⬆[l, m] T1 ≡ T & ⬆*[cs] T ≡ T2. -/2 width=3 by lifts_inv_cons_aux/ qed-. - -(* Basic_1: was: lift1_sort *) -lemma lifts_inv_sort1: ∀T2,k,cs. ⬆*[cs] ⋆k ≡ T2 → T2 = ⋆k. -#T2 #k #cs elim cs -cs -[ #H <(lifts_inv_nil … H) -H // -| #l #m #cs #IH #H - elim (lifts_inv_cons … H) -H #X #H - >(lift_inv_sort1 … H) -H /2 width=1 by/ -] -qed-. - -(* Basic_1: was: lift1_lref *) -lemma lifts_inv_lref1: ∀T2,cs,i1. ⬆*[cs] #i1 ≡ T2 → - ∃∃i2. @⦃i1, cs⦄ ≡ i2 & T2 = #i2. -#T2 #cs elim cs -cs -[ #i1 #H <(lifts_inv_nil … H) -H /2 width=3 by at_nil, ex2_intro/ -| #l #m #cs #IH #i1 #H - elim (lifts_inv_cons … H) -H #X #H1 #H2 - elim (lift_inv_lref1 … H1) -H1 * #Hli1 #H destruct - elim (IH … H2) -IH -H2 /3 width=3 by at_lt, at_ge, ex2_intro/ -] -qed-. - -lemma lifts_inv_gref1: ∀T2,p,cs. ⬆*[cs] §p ≡ T2 → T2 = §p. -#T2 #p #cs elim cs -cs -[ #H <(lifts_inv_nil … H) -H // -| #l #m #cs #IH #H - elim (lifts_inv_cons … H) -H #X #H - >(lift_inv_gref1 … H) -H /2 width=1 by/ -] -qed-. - -(* Basic_1: was: lift1_bind *) -lemma lifts_inv_bind1: ∀a,I,T2,cs,V1,U1. ⬆*[cs] ⓑ{a,I} V1. U1 ≡ T2 → - ∃∃V2,U2. ⬆*[cs] V1 ≡ V2 & ⬆*[cs + 1] U1 ≡ U2 & - T2 = ⓑ{a,I} V2. U2. -#a #I #T2 #cs elim cs -cs -[ #V1 #U1 #H - <(lifts_inv_nil … H) -H /2 width=5 by ex3_2_intro, lifts_nil/ -| #l #m #cs #IHcs #V1 #U1 #H - elim (lifts_inv_cons … H) -H #X #H #HT2 - elim (lift_inv_bind1 … H) -H #V #U #HV1 #HU1 #H destruct - elim (IHcs … HT2) -IHcs -HT2 #V2 #U2 #HV2 #HU2 #H destruct - /3 width=5 by ex3_2_intro, lifts_cons/ -] -qed-. - -(* Basic_1: was: lift1_flat *) -lemma lifts_inv_flat1: ∀I,T2,cs,V1,U1. ⬆*[cs] ⓕ{I} V1. U1 ≡ T2 → - ∃∃V2,U2. ⬆*[cs] V1 ≡ V2 & ⬆*[cs] U1 ≡ U2 & - T2 = ⓕ{I} V2. U2. -#I #T2 #cs elim cs -cs -[ #V1 #U1 #H - <(lifts_inv_nil … H) -H /2 width=5 by ex3_2_intro, lifts_nil/ -| #l #m #cs #IHcs #V1 #U1 #H - elim (lifts_inv_cons … H) -H #X #H #HT2 - elim (lift_inv_flat1 … H) -H #V #U #HV1 #HU1 #H destruct - elim (IHcs … HT2) -IHcs -HT2 #V2 #U2 #HV2 #HU2 #H destruct - /3 width=5 by ex3_2_intro, lifts_cons/ -] -qed-. - -(* Basic forward lemmas *****************************************************) - -lemma lifts_simple_dx: ∀T1,T2,cs. ⬆*[cs] T1 ≡ T2 → 𝐒⦃T1⦄ → 𝐒⦃T2⦄. -#T1 #T2 #cs #H elim H -T1 -T2 -cs /3 width=5 by lift_simple_dx/ -qed-. - -lemma lifts_simple_sn: ∀T1,T2,cs. ⬆*[cs] T1 ≡ T2 → 𝐒⦃T2⦄ → 𝐒⦃T1⦄. -#T1 #T2 #cs #H elim H -T1 -T2 -cs /3 width=5 by lift_simple_sn/ -qed-. - -(* Basic properties *********************************************************) - -lemma lifts_bind: ∀a,I,T2,V1,V2,cs. ⬆*[cs] V1 ≡ V2 → - ∀T1. ⬆*[cs + 1] T1 ≡ T2 → - ⬆*[cs] ⓑ{a,I} V1. T1 ≡ ⓑ{a,I} V2. T2. -#a #I #T2 #V1 #V2 #cs #H elim H -V1 -V2 -cs -[ #V #T1 #H >(lifts_inv_nil … H) -H // -| #V1 #V #V2 #cs #l #m #HV1 #_ #IHV #T1 #H - elim (lifts_inv_cons … H) -H /3 width=3 by lift_bind, lifts_cons/ -] -qed. - -lemma lifts_flat: ∀I,T2,V1,V2,cs. ⬆*[cs] V1 ≡ V2 → - ∀T1. ⬆*[cs] T1 ≡ T2 → - ⬆*[cs] ⓕ{I} V1. T1 ≡ ⓕ{I} V2. T2. -#I #T2 #V1 #V2 #cs #H elim H -V1 -V2 -cs -[ #V #T1 #H >(lifts_inv_nil … H) -H // -| #V1 #V #V2 #cs #l #m #HV1 #_ #IHV #T1 #H - elim (lifts_inv_cons … H) -H /3 width=3 by lift_flat, lifts_cons/ -] -qed. - -lemma lifts_total: ∀cs,T1. ∃T2. ⬆*[cs] T1 ≡ T2. -#cs elim cs -cs /2 width=2 by lifts_nil, ex_intro/ -#l #m #cs #IH #T1 elim (lift_total T1 l m) -#T #HT1 elim (IH T) -IH /3 width=4 by lifts_cons, ex_intro/ -qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma b/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma deleted file mode 100644 index 2c693baaa..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma +++ /dev/null @@ -1,63 +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 "ground_2/ynat/ynat_max.ma". -include "basic_2/substitution/lift_lift.ma". -include "basic_2/multiple/mr2_minus.ma". -include "basic_2/multiple/lifts.ma". - -(* GENERIC TERM RELOCATION **************************************************) - -(* Properties concerning basic term relocation ******************************) - -(* Basic_1: was: lift1_xhg (right to left) *) -lemma lifts_lift_trans_le: ∀T1,T,cs. ⬆*[cs] T1 ≡ T → ∀T2. ⬆[0, 1] T ≡ T2 → - ∃∃T0. ⬆[0, 1] T1 ≡ T0 & ⬆*[cs + 1] T0 ≡ T2. -#T1 #T #cs #H elim H -T1 -T -cs -[ /2 width=3 by lifts_nil, ex2_intro/ -| #T1 #T3 #T #cs #l #m #HT13 #_ #IHT13 #T2 #HT2 - elim (IHT13 … HT2) -T #T #HT3 #HT2 - elim (lift_trans_le … HT13 … HT3) -T3 /3 width=5 by lifts_cons, ex2_intro/ -] -qed-. - -(* Basic_1: was: lift1_free (right to left) *) -lemma lifts_lift_trans: ∀cs,i,i0. @⦃i, cs⦄ ≡ i0 → - ∀cs0. cs + 1 ▭ i + 1 ≡ cs0 + 1 → - ∀T1,T0. ⬆*[cs0] T1 ≡ T0 → - ∀T2. ⬆[O, i0 + 1] T0 ≡ T2 → - ∃∃T. ⬆[0, i + 1] T1 ≡ T & ⬆*[cs] T ≡ T2. -#cs elim cs -cs -[ #i #x #H1 #cs0 #H2 #T1 #T0 #HT10 #T2 - <(at_inv_nil … H1) -x #HT02 - lapply (minuss_inv_nil1 … H2) -H2 #H - >(pluss_inv_nil2 … H) in HT10; -cs0 #H - >(lifts_inv_nil … H) -T1 /2 width=3 by lifts_nil, ex2_intro/ -| #l #m #cs #IHcs #i #i0 #H1 #cs0 #H2 #T1 #T0 #HT10 #T2 #HT02 - elim (at_inv_cons … H1) -H1 * #Hil #Hi0 - [ elim (minuss_inv_cons1_lt … H2) -H2 /2 width=1 by ylt_succ/ #cs1 #Hcs1 - yplus_SO2 >yplus_SO2 >yminus_succ #H - elim (pluss_inv_cons2 … H) -H #cs2 #H1 #H2 destruct - elim (lifts_inv_cons … HT10) -HT10 #T #HT1 #HT0 - elim (IHcs … Hi0 … Hcs1 … HT0 … HT02) -IHcs -Hi0 -Hcs1 -T0 #T0 #HT0 #HT02 - elim (lift_trans_le … HT1 … HT0) -T /2 width=1 by/ #T #HT1 - yplus_SO2 >ymax_pre_sn - /3 width=5 by lifts_cons, ex2_intro, ylt_fwd_le_succ1/ - | >commutative_plus in Hi0; #Hi0 - lapply (minuss_inv_cons1_ge … H2 ?) -H2 /2 width=1 by yle_succ/ (lifts_inv_sort2 … H) -T1 // +| #i2 #i #t2 #Hi2 #T1 #t #H #t1 #Ht21 elim (lifts_inv_lref2 … H) -H + #i1 #Hi1 #H destruct /3 width=6 by lifts_lref, after_fwd_at1/ +| #p #t2 #T1 #t #H >(lifts_inv_gref2 … H) -T1 // +| #a #I #W2 #W #U2 #U #t2 #_ #_ #IHW #IHU #T1 #t #H + elim (lifts_inv_bind2 … H) -H #W1 #U1 #HW1 #HU1 #H destruct + /4 width=3 by lifts_bind, after_true/ +| #I #W2 #W #U2 #U #t2 #_ #_ #IHW #IHU #T1 #t #H + elim (lifts_inv_flat2 … H) -H #W1 #U1 #HW1 #HU1 #H destruct + /3 width=3 by lifts_flat/ +] +qed-. + +(* Basic_2A1: includes: lift_mono *) +theorem lifts_mono: ∀t,T,U1. ⬆*[t] T ≡ U1 → ∀U2. ⬆*[t] T ≡ U2 → U1 = U2. +#t #T #U1 #H elim H -t -T -U1 +[ /2 width=2 by lifts_inv_sort1/ +| #i1 #j #t #Hi1j #X #HX elim (lifts_inv_lref1 … HX) -HX + /4 width=4 by at_mono, eq_f/ +| /2 width=2 by lifts_inv_gref1/ +| #a #I #V1 #V2 #T1 #T2 #t #_ #_ #IHV12 #IHT12 #X #HX elim (lifts_inv_bind1 … HX) -HX + #V #T #HV1 #HT1 #HX destruct /3 width=1 by eq_f2/ +| #I #V1 #V2 #T1 #T2 #t #_ #_ #IHV12 #IHT12 #X #HX elim (lifts_inv_flat1 … HX) -HX + #V #T #HV1 #HT1 #HX destruct /3 width=1 by eq_f2/ +] +qed-. + +(* Basic_1: was: lift1_lift1 (left to right) *) +(* Basic_1: includes: lift_free (left to right) lift_d lift1_xhg (right to left) lift1_free (right to left) *) +(* Basic_2A1: includes: lift_trans_be lift_trans_le lift_trans_ge lifts_lift_trans_le lifts_lift_trans *) +theorem lifts_trans: ∀T1,T,t1. ⬆*[t1] T1 ≡ T → ∀T2,t2. ⬆*[t2] T ≡ T2 → + ∀t. t2 ⊚ t1 ≡ t → ⬆*[t] T1 ≡ T2. +#T1 #T #t1 #H elim H -T1 -T -t1 +[ #k #t1 #T2 #t2 #H >(lifts_inv_sort1 … H) -T2 // +| #i1 #i #t1 #Hi1 #T2 #t2 #H #t #Ht21 elim (lifts_inv_lref1 … H) -H + #i2 #Hi2 #H destruct /3 width=6 by lifts_lref, after_fwd_at/ +| #p #t1 #T2 #t2 #H >(lifts_inv_gref1 … H) -T2 // +| #a #I #W1 #W #U1 #U #t1 #_ #_ #IHW #IHU #T2 #t2 #H + elim (lifts_inv_bind1 … H) -H #W2 #U2 #HW2 #HU2 #H destruct + /4 width=3 by lifts_bind, after_true/ +| #I #W1 #W #U1 #U #t1 #_ #_ #IHW #IHU #T2 #t2 #H + elim (lifts_inv_flat1 … H) -H #W2 #U2 #HW2 #HU2 #H destruct + /3 width=3 by lifts_flat/ +] +qed-. + +(* Basic_2A1: includes: lift_conf_O1 lift_conf_be *) +theorem lifts_conf: ∀T,T1,t1. ⬆*[t1] T ≡ T1 → ∀T2,t. ⬆*[t] T ≡ T2 → + ∀t2. t2 ⊚ t1 ≡ t → ⬆*[t2] T1 ≡ T2. +#T #T1 #t1 #H elim H -T -T1 -t1 +[ #k #t1 #T2 #t #H >(lifts_inv_sort1 … H) -T2 // +| #i #i1 #t1 #Hi1 #T2 #t #H #t2 #Ht21 elim (lifts_inv_lref1 … H) -H + #i2 #Hi2 #H destruct /3 width=6 by lifts_lref, after_fwd_at2/ +| #p #t1 #T2 #t #H >(lifts_inv_gref1 … H) -T2 // +| #a #I #W #W1 #U #U1 #t1 #_ #_ #IHW #IHU #T2 #t #H + elim (lifts_inv_bind1 … H) -H #W2 #U2 #HW2 #HU2 #H destruct + /4 width=3 by lifts_bind, after_true/ +| #I #W #W1 #U #U1 #t1 #_ #_ #IHW #IHU #T2 #t #H + elim (lifts_inv_flat1 … H) -H #W2 #U2 #HW2 #HU2 #H destruct + /3 width=3 by lifts_flat/ +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma new file mode 100644 index 000000000..fb5953c26 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma @@ -0,0 +1,53 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "basic_2/relocation/lifts_lifts.ma". +include "basic_2/relocation/lifts_vector.ma". + +(* GENERIC TERM VECTOR RELOCATION *******************************************) + +(* Main properties **********************************************************) + +(* Basic_1: includes: lifts_inj *) +theorem liftsv_inj: ∀T1s,Us,t. ⬆*[t] T1s ≡ Us → + ∀T2s. ⬆*[t] T2s ≡ Us → T1s = T2s. +#T1s #Us #t #H elim H -T1s -Us +[ #T2s #H >(liftsv_inv_nil2 … H) -H // +| #T1s #Us #T1 #U #HT1U #_ #IHT1Us #X #H destruct + elim (liftsv_inv_cons2 … H) -H #T2 #T2s #HT2U #HT2Us #H destruct + >(lifts_inj … HT1U … HT2U) -U /3 width=1 by eq_f/ +] +qed-. + +(* Basic_2A1: includes: liftv_mono *) +theorem liftsv_mono: ∀Ts,U1s,t. ⬆*[t] Ts ≡ U1s → + ∀U2s. ⬆*[t] Ts ≡ U2s → U1s = U2s. +#Ts #U1s #t #H elim H -Ts -U1s +[ #U2s #H >(liftsv_inv_nil1 … H) -H // +| #Ts #U1s #T #U1 #HTU1 #_ #IHTU1s #X #H destruct + elim (liftsv_inv_cons1 … H) -H #U2 #U2s #HTU2 #HTU2s #H destruct + >(lifts_mono … HTU1 … HTU2) -T /3 width=1 by eq_f/ +] +qed-. + +(* Basic_1: includes: lifts1_xhg (right to left) *) +(* Basic_2A1: includes: liftsv_liftv_trans_le *) +theorem liftsv_trans: ∀T1s,Ts,t1. ⬆*[t1] T1s ≡ Ts → ∀T2s,t2. ⬆*[t2] Ts ≡ T2s → + ∀t. t2 ⊚ t1 ≡ t → ⬆*[t] T1s ≡ T2s. +#T1s #Ts #t1 #H elim H -T1s -Ts +[ #T2s #t2 #H >(liftsv_inv_nil1 … H) -T2s /2 width=3 by liftsv_nil/ +| #T1s #Ts #T1 #T #HT1 #_ #IHT1s #X #t2 #H elim (liftsv_inv_cons1 … H) -H + #T2 #T2s #HT2 #HT2s #H destruct /3 width=6 by lifts_trans, liftsv_cons/ +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_simple.ma similarity index 53% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift_vector.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_simple.ma index e09e0f00a..389f724d2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_simple.ma @@ -12,24 +12,21 @@ (* *) (**************************************************************************) -include "basic_2/substitution/lift_lift_vector.ma". -include "basic_2/multiple/lifts_lift.ma". -include "basic_2/multiple/lifts_vector.ma". +include "basic_2/grammar/term_simple.ma". +include "basic_2/relocation/lifts.ma". -(* GENERIC RELOCATION *******************************************************) +(* GENERIC TERM RELOCATION **************************************************) -(* Main properties **********************************************************) +(* Forward lemmas on simple terms *******************************************) -(* Basic_1: was: lifts1_xhg (right to left) *) -lemma liftsv_liftv_trans_le: ∀T1s,Ts,cs. ⬆*[cs] T1s ≡ Ts → - ∀T2s:list term. ⬆[0, 1] Ts ≡ T2s → - ∃∃T0s. ⬆[0, 1] T1s ≡ T0s & ⬆*[cs + 1] T0s ≡ T2s. -#T1s #Ts #cs #H elim H -T1s -Ts -[ #T1s #H - >(liftv_inv_nil1 … H) -T1s /2 width=3 by liftsv_nil, liftv_nil, ex2_intro/ -| #T1s #Ts #T1 #T #HT1 #_ #IHT1s #X #H - elim (liftv_inv_cons1 … H) -H #T2 #T2s #HT2 #HT2s #H destruct - elim (IHT1s … HT2s) -Ts #Ts #HT1s #HT2s - elim (lifts_lift_trans_le … HT1 … HT2) -T /3 width=5 by liftsv_cons, liftv_cons, ex2_intro/ -] +(* Basic_2A1: includes: lift_simple_dx *) +lemma lifts_simple_dx: ∀T1,T2,t. ⬆*[t] T1 ≡ T2 → 𝐒⦃T1⦄ → 𝐒⦃T2⦄. +#T1 #T2 #t #H elim H -T1 -T2 -t // +#a #I #V1 #V2 #T1 #T2 #t #_ #_ #_ #_ #H elim (simple_inv_bind … H) +qed-. + +(* Basic_2A1: includes: lift_simple_sn *) +lemma lifts_simple_sn: ∀T1,T2,t. ⬆*[t] T1 ≡ T2 → 𝐒⦃T2⦄ → 𝐒⦃T1⦄. +#T1 #T2 #t #H elim H -T1 -T2 -t // +#a #I #V1 #V2 #T1 #T2 #t #_ #_ #_ #_ #H elim (simple_inv_bind … H) qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma new file mode 100644 index 000000000..89ead4cf5 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma @@ -0,0 +1,114 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "basic_2/grammar/term_vector.ma". +include "basic_2/relocation/lifts.ma". + +(* GENERIC TERM VECTOR RELOCATION *******************************************) + +(* Basic_2A1: includes: liftv_nil liftv_cons *) +inductive liftsv (t:trace) : relation (list term) ≝ +| liftsv_nil : liftsv t (◊) (◊) +| liftsv_cons: ∀T1s,T2s,T1,T2. + ⬆*[t] T1 ≡ T2 → liftsv t T1s T2s → + liftsv t (T1 @ T1s) (T2 @ T2s) +. + +interpretation "generic relocation (vector)" + 'RLiftStar t T1s T2s = (liftsv t T1s T2s). + +(* Basic inversion lemmas ***************************************************) + +fact liftsv_inv_nil1_aux: ∀X,Y,t. ⬆*[t] X ≡ Y → X = ◊ → Y = ◊. +#X #Y #t * -X -Y // +#T1s #T2s #T1 #T2 #_ #_ #H destruct +qed-. + +(* Basic_2A1: includes: liftv_inv_nil1 *) +lemma liftsv_inv_nil1: ∀Y,t. ⬆*[t] ◊ ≡ Y → Y = ◊. +/2 width=5 by liftsv_inv_nil1_aux/ qed-. + +fact liftsv_inv_cons1_aux: ∀X,Y,t. ⬆*[t] X ≡ Y → + ∀T1,T1s. X = T1 @ T1s → + ∃∃T2,T2s. ⬆*[t] T1 ≡ T2 & ⬆*[t] T1s ≡ T2s & + Y = T2 @ T2s. +#X #Y #t * -X -Y +[ #U1 #U1s #H destruct +| #T1s #T2s #T1 #T2 #HT12 #HT12s #U1 #U1s #H destruct /2 width=5 by ex3_2_intro/ +] +qed-. + +(* Basic_2A1: includes: liftv_inv_cons1 *) +lemma liftsv_inv_cons1: ∀T1,T1s,Y,t. ⬆*[t] T1 @ T1s ≡ Y → + ∃∃T2,T2s. ⬆*[t] T1 ≡ T2 & ⬆*[t] T1s ≡ T2s & + Y = T2 @ T2s. +/2 width=3 by liftsv_inv_cons1_aux/ qed-. + +fact liftsv_inv_nil2_aux: ∀X,Y,t. ⬆*[t] X ≡ Y → Y = ◊ → X = ◊. +#X #Y #t * -X -Y // +#T1s #T2s #T1 #T2 #_ #_ #H destruct +qed-. + +lemma liftsv_inv_nil2: ∀X,t. ⬆*[t] X ≡ ◊ → X = ◊. +/2 width=5 by liftsv_inv_nil2_aux/ qed-. + +fact liftsv_inv_cons2_aux: ∀X,Y,t. ⬆*[t] X ≡ Y → + ∀T2,T2s. Y = T2 @ T2s → + ∃∃T1,T1s. ⬆*[t] T1 ≡ T2 & ⬆*[t] T1s ≡ T2s & + X = T1 @ T1s. +#X #Y #t * -X -Y +[ #U2 #U2s #H destruct +| #T1s #T2s #T1 #T2 #HT12 #HT12s #U2 #U2s #H destruct /2 width=5 by ex3_2_intro/ +] +qed-. + +lemma liftsv_inv_cons2: ∀X,T2,T2s,t. ⬆*[t] X ≡ T2 @ T2s → + ∃∃T1,T1s. ⬆*[t] T1 ≡ T2 & ⬆*[t] T1s ≡ T2s & + X = T1 @ T1s. +/2 width=3 by liftsv_inv_cons2_aux/ qed-. + +(* Basic_1: was: lifts1_flat (left to right) *) +lemma lifts_inv_applv1: ∀V1s,U1,T2,t. ⬆*[t] Ⓐ V1s.U1 ≡ T2 → + ∃∃V2s,U2. ⬆*[t] V1s ≡ V2s & ⬆*[t] U1 ≡ U2 & + T2 = Ⓐ V2s.U2. +#V1s elim V1s -V1s +[ /3 width=5 by ex3_2_intro, liftsv_nil/ +| #V1 #V1s #IHV1s #T1 #X #t #H elim (lifts_inv_flat1 … H) -H + #V2 #Y #HV12 #HY #H destruct elim (IHV1s … HY) -IHV1s -HY + #V2s #T2 #HV12s #HT12 #H destruct /3 width=5 by ex3_2_intro, liftsv_cons/ +] +qed-. + +lemma lifts_inv_applv2: ∀V2s,U2,T1,t. ⬆*[t] T1 ≡ Ⓐ V2s.U2 → + ∃∃V1s,U1. ⬆*[t] V1s ≡ V2s & ⬆*[t] U1 ≡ U2 & + T1 = Ⓐ V1s.U1. +#V2s elim V2s -V2s +[ /3 width=5 by ex3_2_intro, liftsv_nil/ +| #V2 #V2s #IHV2s #T2 #X #t #H elim (lifts_inv_flat2 … H) -H + #V1 #Y #HV12 #HY #H destruct elim (IHV2s … HY) -IHV2s -HY + #V1s #T1 #HV12s #HT12 #H destruct /3 width=5 by ex3_2_intro, liftsv_cons/ +] +qed-. + +(* Basic properties *********************************************************) + +(* Basic_1: was: lifts1_flat (right to left) *) +lemma lifts_applv: ∀V1s,V2s,t. ⬆*[t] V1s ≡ V2s → + ∀T1,T2. ⬆*[t] T1 ≡ T2 → + ⬆*[t] Ⓐ V1s. T1 ≡ Ⓐ V2s. T2. +#V1s #V2s #t #H elim H -V1s -V2s /3 width=1 by lifts_flat/ +qed. + +(* Basic_2A1: removed theorems 1: liftv_total *) +(* Basic_1: removed theorems 2: lifts1_nil lifts1_cons *) diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lifts.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_weight.ma similarity index 70% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lifts.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_weight.ma index cff6bf238..17952bba8 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lifts.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_weight.ma @@ -12,14 +12,14 @@ (* *) (**************************************************************************) -include "basic_2/multiple/lifts_lift.ma". +include "basic_2/grammar/term_weight.ma". +include "basic_2/relocation/lifts.ma". -(* GENERIC RELOCATION *******************************************************) +(* GENERIC TERM RELOCATION **************************************************) -(* Main properties **********************************************************) +(* Forward lemmas on weight for terms ***************************************) -(* Basic_1: was: lift1_lift1 (left to right) *) -theorem lifts_trans: ∀T1,T,cs1. ⬆*[cs1] T1 ≡ T → ∀T2:term. ∀cs2. ⬆*[cs2] T ≡ T2 → - ⬆*[cs1 @@ cs2] T1 ≡ T2. -#T1 #T #cs1 #H elim H -T1 -T -cs1 /3 width=3 by lifts_cons/ -qed. +(* Basic_2A1: includes: lift_fwd_tw *) +lemma lifts_fwd_tw: ∀T1,T2,t. ⬆*[t] T1 ≡ T2 → ♯{T1} = ♯{T2}. +#T1 #T2 #t #H elim H -T1 -T2 -t normalize // +qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_alt.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_alt.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_alt.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_alt.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_alt_rec.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_alt_rec.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_alt_rec.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_alt_rec.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_drop.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_drop.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_drop.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_drop.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_fqus.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_fqus.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_fqus.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_lleq.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_lleq.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_lleq.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_lleq.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_llor.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_llor.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_llor.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_llor.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_lreq.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_lreq.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/lleq_lreq.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/lleq_lreq.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_alt.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_alt.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_alt.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_alt.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_alt_rec.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_alt_rec.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_alt_rec.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_alt_rec.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_drop.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_drop.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_drop.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_drop.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_frees.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_frees.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_frees.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_frees.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_llor.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_llor.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_llor.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_llor.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_lpx_sn.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_lpx_sn.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_lpx_sn.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_lpx_sn.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_lreq.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_lreq.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_lreq.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_lreq.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_tc.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_tc.ma similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/multiple/llpx_sn_tc.ma rename to matita/matita/contribs/lambdadelta/basic_2/relocation/llpx_sn_tc.ma -- 2.39.2