From dd74d1964ef07de249385a48f28302b427c0d287 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Sat, 17 Mar 2018 18:19:15 +0100 Subject: [PATCH] update in basic_2 + fpbs completed (some lemmas parked) --- .../fpbg_lift.ma => etc/fpbg/fpbg_lift.etc} | 0 .../lambdadelta/basic_2/etc/fpbs/fpbs_fpb.etc | 16 ++++++++++ .../fpbs_lfprs.ma => etc/fpbs/fpbs_lfprs.etc} | 0 .../basic_2/rt_computation/csx_ffdeq.ma | 26 +++++++++++++++++ .../basic_2/rt_computation/csx_fpbq.ma | 29 +++++++++++++++++++ .../basic_2/rt_computation/fpbs_aaa.ma | 8 ++--- .../basic_2/rt_computation/fpbs_csx.ma | 22 +++++--------- .../basic_2/rt_computation/fpbs_fpb.ma | 25 +++------------- .../basic_2/rt_computation/fpbs_fpbs.ma | 4 +-- .../basic_2/rt_computation/partial.txt | 4 +-- .../lambdadelta/basic_2/web/basic_2_src.tbl | 10 ++----- 11 files changed, 93 insertions(+), 51 deletions(-) rename matita/matita/contribs/lambdadelta/basic_2/{rt_computation/fpbg_lift.ma => etc/fpbg/fpbg_lift.etc} (100%) create mode 100644 matita/matita/contribs/lambdadelta/basic_2/etc/fpbs/fpbs_fpb.etc rename matita/matita/contribs/lambdadelta/basic_2/{rt_computation/fpbs_lfprs.ma => etc/fpbs/fpbs_lfprs.etc} (100%) create mode 100644 matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_ffdeq.ma create mode 100644 matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lift.ma b/matita/matita/contribs/lambdadelta/basic_2/etc/fpbg/fpbg_lift.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lift.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc/fpbg/fpbg_lift.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/etc/fpbs/fpbs_fpb.etc b/matita/matita/contribs/lambdadelta/basic_2/etc/fpbs/fpbs_fpb.etc new file mode 100644 index 000000000..40a2eb057 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/etc/fpbs/fpbs_fpb.etc @@ -0,0 +1,16 @@ +(* Properties on extended context-sensitive parallel computation for terms **) + +lemma fpbs_cpx_trans_neq: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → + ∀U2. ⦃G2, L2⦄ ⊢ T2 ➡[h, o] U2 → (T2 = U2 → ⊥) → + ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ➡[h, o] U1 & T1 = U1 → ⊥ & ⦃G1, L1, U1⦄ ≥[h, o] ⦃G2, L2, U2⦄. +#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2 elim (fpbs_inv_alt … H) -H +#L00 #L0 #T0 #HT10 #H10 #HL00 #HL02 lapply (lleq_cpx_trans … HTU2 … HL02) -HTU2 +#HTU2 lapply (cpx_lleq_conf_sn … HTU2 … HL02) -HL02 +#HL02 lapply (lpxs_cpx_trans … HTU2 … HL00) -HTU2 +#HTU2 elim (fqus_cpxs_trans_neq … H10 … HTU2 HnTU2) -H10 -HTU2 -HnTU2 +#U0 #HTU0 #HnTU0 #HU02 elim (eq_term_dec T1 T0) #HnT10 destruct +[ -HT10 elim (cpxs_neq_inv_step_sn … HTU0 HnTU0) -HTU0 -HnTU0 +| -HnTU0 elim (cpxs_neq_inv_step_sn … HT10 HnT10) -HT10 -HnT10 +] +/4 width=10 by fpbs_intro_alt, cpxs_trans, ex3_intro/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lfprs.ma b/matita/matita/contribs/lambdadelta/basic_2/etc/fpbs/fpbs_lfprs.etc similarity index 100% rename from matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lfprs.ma rename to matita/matita/contribs/lambdadelta/basic_2/etc/fpbs/fpbs_lfprs.etc diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_ffdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_ffdeq.ma new file mode 100644 index 000000000..5645c46b8 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_ffdeq.ma @@ -0,0 +1,26 @@ +(**************************************************************************) +(* ___ *) +(* ||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/static/ffdeq.ma". +include "basic_2/rt_computation/csx_lfdeq.ma". + +(* STRONGLY NORMALIZING TERMS FOR UNCOUNTED PARALLEL RT-TRANSITION **********) + +(* Properties with degree-based equivalence for closures ********************) + +lemma csx_ffdeq_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → + ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄. +#h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2 +/3 width=3 by csx_lfdeq_conf, csx_tdeq_trans/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma new file mode 100644 index 000000000..3df556855 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma @@ -0,0 +1,29 @@ +(**************************************************************************) +(* ___ *) +(* ||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/rt_transition/fpbq.ma". +include "basic_2/rt_computation/csx_fqus.ma". +include "basic_2/rt_computation/csx_ffdeq.ma". +include "basic_2/rt_computation/csx_lfpx.ma". + +(* STRONGLY NORMALIZING TERMS FOR UNCOUNTED PARALLEL RT-TRANSITION **********) + +(* Properties with parallel rst-transition for closures *********************) + +(* Basic_2A1: was: csx_fpb_conf *) +lemma csx_fpbq_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → + ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄. +#h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * +/2 width=6 by csx_cpx_trans, csx_fquq_conf, csx_lfpx_conf, csx_ffdeq_conf/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_aaa.ma index 5432caf82..601758e03 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_aaa.ma @@ -12,12 +12,12 @@ (* *) (**************************************************************************) -include "basic_2/reduction/fpbq_aaa.ma". -include "basic_2/computation/fpbs.ma". +include "basic_2/rt_transition/fpbq_aaa.ma". +include "basic_2/rt_computation/fpbs.ma". -(* "QRST" PARALLEL COMPUTATION FOR CLOSURES *********************************) +(* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************) -(* Properties on atomic arity assignment for terms **************************) +(* Properties with atomic arity assignment for terms ************************) lemma fpbs_aaa_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ∀A1. ⦃G1, L1⦄ ⊢ T1 ⁝ A1 → ∃A2. ⦃G2, L2⦄ ⊢ T2 ⁝ A2. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_csx.ma index c756c4ab8..a15e715f1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_csx.ma @@ -12,22 +12,16 @@ (* *) (**************************************************************************) -include "basic_2/computation/fpbs.ma". -include "basic_2/computation/csx_lleq.ma". -include "basic_2/computation/csx_lpx.ma". +include "basic_2/rt_computation/csx_fpbq.ma". +include "basic_2/rt_computation/fpbs.ma". -(* CONTEXT-SENSITIVE EXTENDED STRONGLY NORMALIZING TERMS ********************) +(* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************) -(* Advanced properties ******************************************************) +(* Properties with sn for uncounted parallel rt-transition for terms ********) -lemma csx_fpb_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬊*[h, o] T1 → - ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬊*[h, o] T2. -#h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -/2 width=5 by csx_cpx_trans, csx_fquq_conf, csx_lpx_conf, csx_lleq_conf/ -qed-. - -lemma csx_fpbs_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬊*[h, o] T1 → - ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬊*[h, o] T2. +(* Basic_2A1: was: csx_fpbs_conf *) +lemma fpbs_csx_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → + ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄. #h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2 -/2 width=5 by csx_fpb_conf/ +/2 width=5 by csx_fpbq_conf/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpb.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpb.ma index b9c657735..632fe7dc6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpb.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpb.ma @@ -12,29 +12,12 @@ (* *) (**************************************************************************) -include "basic_2/reduction/fpbq_alt.ma". -include "basic_2/computation/fpbs_alt.ma". +include "basic_2/rt_transition/fpbq_fpb.ma". +include "basic_2/rt_computation/fpbs.ma". -(* "QRST" PARALLEL COMPUTATION FOR CLOSURES *********************************) +(* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************) -(* Properties on extended context-sensitive parallel computation for terms **) - -lemma fpbs_cpx_trans_neq: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → - ∀U2. ⦃G2, L2⦄ ⊢ T2 ➡[h, o] U2 → (T2 = U2 → ⊥) → - ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ➡[h, o] U1 & T1 = U1 → ⊥ & ⦃G1, L1, U1⦄ ≥[h, o] ⦃G2, L2, U2⦄. -#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2 elim (fpbs_inv_alt … H) -H -#L00 #L0 #T0 #HT10 #H10 #HL00 #HL02 lapply (lleq_cpx_trans … HTU2 … HL02) -HTU2 -#HTU2 lapply (cpx_lleq_conf_sn … HTU2 … HL02) -HL02 -#HL02 lapply (lpxs_cpx_trans … HTU2 … HL00) -HTU2 -#HTU2 elim (fqus_cpxs_trans_neq … H10 … HTU2 HnTU2) -H10 -HTU2 -HnTU2 -#U0 #HTU0 #HnTU0 #HU02 elim (eq_term_dec T1 T0) #HnT10 destruct -[ -HT10 elim (cpxs_neq_inv_step_sn … HTU0 HnTU0) -HTU0 -HnTU0 -| -HnTU0 elim (cpxs_neq_inv_step_sn … HT10 HnT10) -HT10 -HnT10 -] -/4 width=10 by fpbs_intro_alt, cpxs_trans, ex3_intro/ -qed-. - -(* Properties on "rst" proper parallel reduction on closures ****************) +(* Properties with proper parallel rst-reduction on closures ****************) lemma fpb_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpbs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpbs.ma index d3d14d184..12d5d8de6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpbs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpbs.ma @@ -12,9 +12,9 @@ (* *) (**************************************************************************) -include "basic_2/computation/fpbs.ma". +include "basic_2/rt_computation/fpbs.ma". -(* "QRST" PARALLEL COMPUTATION FOR CLOSURES *********************************) +(* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************) (* Main properties **********************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/partial.txt b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/partial.txt index 1297cfb04..6516dbc12 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/partial.txt +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/partial.txt @@ -2,8 +2,8 @@ cpxs.ma cpxs_tdeq.ma cpxs_theq.ma cpxs_theq_vector.ma cpxs_drops.ma cpxs_fqus.ma cpxs_ext.ma lpxs.ma lpxs_length.ma lpxs_lpx.ma lpxs_cpxs.ma lfpxs.ma lfpxs_length.ma lfpxs_drops.ma lfpxs_fqup.ma lfpxs_lfdeq.ma lfpxs_ffdeq.ma lfpxs_aaa.ma lfpxs_cpxs.ma lfpxs_lpxs.ma lfpxs_lfpxs.ma -csx.ma csx_simple.ma csx_simple_theq.ma csx_drops.ma csx_fqus.ma csx_lsubr.ma csx_lfdeq.ma csx_aaa.ma csx_gcp.ma csx_gcr.ma csx_lfpx.ma csx_cnx.ma csx_cpxs.ma csx_lfpxs.ma csx_csx.ma +csx.ma csx_simple.ma csx_simple_theq.ma csx_drops.ma csx_fqus.ma csx_lsubr.ma csx_lfdeq.ma csx_ffdeq.ma csx_aaa.ma csx_gcp.ma csx_gcr.ma csx_lfpx.ma csx_cnx.ma csx_fpbq.ma csx_cpxs.ma csx_lfpxs.ma csx_csx.ma csx_vector.ma csx_cnx_vector.ma csx_csx_vector.ma lfsx.ma lfsx_drops.ma lfsx_fqup.ma lfsx_lpx.ma lfsx_lpxs.ma lfsx_lfpxs.ma lfsx_csx.ma lfsx_lfsx.ma lsubsx.ma lsubsx_lfsx.ma lsubsx_lsubsx.ma -fpbs.ma fpbs_fqus.ma fpbs_fqup.ma fpbs_cpxs.ma fpbs_lfpxs.ma +fpbs.ma fpbs_fqup.ma fpbs_fqus.ma fpbs_aaa.ma fpbs_fpb.ma fpbs_cpxs.ma fpbs_lfpxs.ma fpbs_csx.ma fpbs_fpbs.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl index 4852da28e..7c3e2412b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl +++ b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl @@ -86,14 +86,8 @@ table { [ [ "" ] "fsb ( ⦥[?,?] ⦃?,?,?⦄ )" "fsb_alt ( ⦥⦥[?,?] ⦃?,?,?⦄ )" "fsb_aaa" + "fsb_csx" * ] } ] - [ { "strongly normalizing rt-computation" * } { - [ [ "" ] "llsx_csx" * ] - [ [ "" ] "csx_fpbs" * ] - } - ] [ { "parallel qrst-computation" * } { [ [ "" ] "fpbg ( ⦃?,?,?⦄ >≛[?,?] ⦃?,?,?⦄ )" "fpbg_lift" + "fpbg_fleq" + "fpbg_fpbs" + "fpbg_fpbg" * ] - [ [ "" ] "fpbs_alt" + "fpbs_aaa" + "fpbs_fpb" + "fpbs_fpbs" * ] } ] [ { "decomposed rt-computation" * } { @@ -107,14 +101,14 @@ table { ] *) [ { "uncounted context-sensitive parallel rst-computation" * } { - [ [ "for closures" ] "fpbs" + "( ⦃?,?,?⦄ ≥[?,?] ⦃?,?,?⦄ )" "fpbs_fqup" + "fpbs_fqus" + "fpbs_cpxs" + "fpbs_lfpxs" * ] + [ [ "for closures" ] "fpbs" + "( ⦃?,?,?⦄ ≥[?,?] ⦃?,?,?⦄ )" "fpbs_fqup" + "fpbs_fqus" + "fpbs_aaa" + "fpbs_fpb" + "fpbs_cpxs" + "fpbs_lfpxs" + "fpbs_csx" + "fpbs_fpbs" * ] } ] [ { "uncounted context-sensitive parallel rt-computation" * } { [ [ "refinement for lenvs on selected entries" ] "lsubsx" + "( ? ⊢ ? ⊆ⓧ[?,?,?] ? )" "lsubsx_lfsx" + "lsubsx_lsubsx" * ] [ [ "strongly normalizing for lenvs on referred entries" ] "lfsx" + "( ? ⊢ ⬈*[?,?,?] 𝐒⦃?⦄ )" "lfsx_drops" + "lfsx_fqup" + "lfsx_cpx" + "lfsx_cpxs" + "lfsx_lfpxs" + "lfsx_lfsx" * ] [ [ "strongly normalizing for term vectors" ] "csx_vector" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "csx_cnx_vector" + "csx_csx_vector" * ] - [ [ "strongly normalizing for terms" ] "csx" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "csx_simple" + "csx_simple_theq" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_lfdeq" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lfpx" + "csx_cnx" + "csx_cpxs" + "csx_lfpxs" + "csx_csx" * ] + [ [ "strongly normalizing for terms" ] "csx" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "csx_simple" + "csx_simple_theq" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_lfdeq" + "csx_ffdeq" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lfpx" + "csx_cnx" + "csx_fpbq" + "csx_cpxs" + "csx_lfpxs" + "csx_csx" * ] [ [ "for lenvs on referred entries" ] "lfpxs" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] ? )" "lfpxs_length" + "lfpxs_drops" + "lfpxs_fqup" + "lfpxs_lfdeq" + "lfpxs_ffdeq" + "lfpxs_aaa" + "lfpxs_cpxs" + "lfpxs_lpxs" + "lfpxs_lfpxs" * ] [ [ "for lenvs on all entries" ] "lpxs" + "( ⦃?,?⦄ ⊢ ⬈*[?] ? )" "lpxs_length" + "lpxs_lpx" + "lpxs_cpxs" * ] [ [ "for binders" ] "cpxs_ext" + "( ⦃?,?⦄ ⊢ ? ⬈*[?] ? )" * ] -- 2.39.2