X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_equivalence%2Fcpcs_cprs.ma;h=838b2d620f5ab62328f9d691208cc63a115a6f65;hp=90fd0231372ba45ccfb34a2eae16335d4b5863f5;hb=ca7327c20c6031829fade8bb84a3a1bb66113f54;hpb=25c634037771dff0138e5e8e3d4378183ff49b86 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cprs.ma index 90fd02313..838b2d620 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cprs.ma @@ -21,7 +21,7 @@ include "basic_2/rt_equivalence/cpcs.ma". (* Inversion lemmas with context sensitive r-computation on terms ***********) lemma cpcs_inv_cprs (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ⬌*[h] T2 → - ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h] T & ❪G,L❫ ⊢ T2 ➡*[h] T. + ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h,0] T & ❪G,L❫ ⊢ T2 ➡*[h,0] T. #h #G #L #T1 #T2 #H @(cpcs_ind_dx … H) -T2 [ /3 width=3 by ex2_intro/ | #T #T2 #_ #HT2 * #T0 #HT10 elim HT2 -HT2 #HT2 #HT0 @@ -44,7 +44,7 @@ qed-. (* Basic_2A1: was: cpcs_inv_abst1 *) lemma cpcs_inv_abst_sn (h) (G) (L): ∀p,W1,T1,X. ❪G,L❫ ⊢ ⓛ[p]W1.T1 ⬌*[h] X → - ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h] ⓛ[p]W2.T2. + ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h,0] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h,0] ⓛ[p]W2.T2. #h #G #L #p #W1 #T1 #T #H elim (cpcs_inv_cprs … H) -H #X #H1 #H2 elim (cpms_inv_abst_sn … H1) -H1 #W2 #T2 #HW12 #HT12 #H destruct @@ -54,7 +54,7 @@ qed-. (* Basic_2A1: was: cpcs_inv_abst2 *) lemma cpcs_inv_abst_dx (h) (G) (L): ∀p,W1,T1,X. ❪G,L❫ ⊢ X ⬌*[h] ⓛ[p]W1.T1 → - ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h] ⓛ[p]W2.T2. + ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h,0] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h,0] ⓛ[p]W2.T2. /3 width=1 by cpcs_inv_abst_sn, cpcs_sym/ qed-. (* Basic_1: was: pc3_gen_sort_abst *) @@ -69,70 +69,70 @@ qed-. (* Properties with context sensitive r-computation on terms *****************) (* Basic_1: was: pc3_pr3_r *) -lemma cpcs_cprs_dx (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cpcs_cprs_dx (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T2 #H @(cprs_ind_dx … H) -T2 /3 width=3 by cpcs_cpr_step_dx, cpcs_step_dx, cpc_cpcs/ qed. (* Basic_1: was: pc3_pr3_x *) -lemma cpcs_cprs_sn (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T2 ➡*[h] T1 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cpcs_cprs_sn (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T1 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T2 #H @(cprs_ind_sn … H) -T2 /3 width=3 by cpcs_cpr_div, cpcs_step_sn, cpcs_cprs_dx/ qed. (* Basic_2A1: was: cpcs_cprs_strap1 *) lemma cpcs_cprs_step_dx (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ⬌*[h] T → - ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. + ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T #HT1 #T2 #H @(cprs_ind_dx … H) -T2 /2 width=3 by cpcs_cpr_step_dx/ qed-. (* Basic_2A1: was: cpcs_cprs_strap2 *) -lemma cpcs_cprs_step_sn (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T → +lemma cpcs_cprs_step_sn (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T → ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T #H #T2 #HT2 @(cprs_ind_sn … H) -T1 /2 width=3 by cpcs_cpr_step_sn/ qed-. lemma cpcs_cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ⬌*[h] T → - ∀T2. ❪G,L❫ ⊢ T2 ➡*[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. + ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T #HT1 #T2 #H @(cprs_ind_sn … H) -T2 /2 width=3 by cpcs_cpr_div/ qed-. (* Basic_1: was: pc3_pr3_conf *) -lemma cpcs_cprs_conf (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T ➡*[h] T1 → +lemma cpcs_cprs_conf (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T ➡*[h,0] T1 → ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T #H #T2 #HT2 @(cprs_ind_dx … H) -T1 /2 width=3 by cpcs_cpr_conf/ qed-. (* Basic_1: was: pc3_pr3_t *) (* Basic_1: note: pc3_pr3_t should be renamed *) -lemma cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T → - ∀T2. ❪G,L❫ ⊢ T2 ➡*[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T → + ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T1 #T #HT1 #T2 #H @(cprs_ind_sn … H) -T2 /2 width=3 by cpcs_cpr_div, cpcs_cprs_dx/ qed. -lemma cprs_cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T → - ∀T2. ❪G,L❫ ⊢ T2 ➡[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cprs_cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T → + ∀T2. ❪G,L❫ ⊢ T2 ➡[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. /3 width=5 by cpm_cpms, cprs_div/ qed-. -lemma cpr_cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h] T → - ∀T2. ❪G,L❫ ⊢ T2 ➡*[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cpr_cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h,0] T → + ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2. /3 width=3 by cpm_cpms, cprs_div/ qed-. -lemma cpr_cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h] T1 → - ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cpr_cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 → + ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T #T1 #HT1 #T2 #HT2 elim (cprs_strip … HT1 … HT2) -HT1 -HT2 /2 width=3 by cpr_cprs_div/ qed-. -lemma cprs_cpr_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h] T1 → - ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 → ❪G,L❫ ⊢ T2 ⬌*[h] T1. +lemma cprs_cpr_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 → + ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 → ❪G,L❫ ⊢ T2 ⬌*[h] T1. #h #G #L #T #T1 #HT1 #T2 #HT2 elim (cprs_strip … HT1 … HT2) -HT1 -HT2 /2 width=3 by cprs_cpr_div/ qed-. -lemma cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h] T1 → - ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. +lemma cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 → + ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2. #h #G #L #T #T1 #HT1 #T2 #HT2 elim (cprs_conf … HT1 … HT2) -HT1 -HT2 /2 width=3 by cprs_div/ qed-. @@ -147,7 +147,7 @@ elim (cpcs_inv_cprs … HT12) -HT12 /3 width=5 by cprs_flat, cprs_div/ qed. -lemma cpcs_flat_dx_cpr_rev (h) (G) (L): ∀V1,V2. ❪G,L❫ ⊢ V2 ➡[h] V1 → +lemma cpcs_flat_dx_cpr_rev (h) (G) (L): ∀V1,V2. ❪G,L❫ ⊢ V2 ➡[h,0] V1 → ∀T1,T2. ❪G,L❫ ⊢ T1 ⬌*[h] T2 → ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬌*[h] ⓕ[I]V2.T2. /3 width=1 by cpr_cpcs_sn, cpcs_flat/ qed.