From 1083ac3b1acac5f1ac1fa40a9a417dd9d268dced Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Sat, 28 Jul 2018 15:40:56 +0200 Subject: [PATCH] update in ground_2 and basic_2 + modification in cnv allows to improve cnv_cpm_trans_lpr_aux + modification in lsubv allows to prove its transitivity + one lemma added to the arithmetic library --- .../lambdadelta/basic_2/dynamic/cnv.ma | 6 ++-- .../basic_2/dynamic/cnv_cpm_trans.ma | 8 ++--- .../lambdadelta/basic_2/dynamic/lsubv.ma | 28 ++++++++++------ .../basic_2/dynamic/lsubv_drops.ma | 4 +-- .../basic_2/dynamic/lsubv_lsuba.ma | 2 +- .../basic_2/dynamic/lsubv_lsubv.ma | 33 +++++++++++++++++++ .../lambdadelta/basic_2/dynamic/partial.txt | 2 +- .../lambdadelta/basic_2/web/basic_2_src.tbl | 4 +-- .../lambdadelta/ground_2/lib/arith.ma | 3 ++ 9 files changed, 67 insertions(+), 23 deletions(-) create mode 100644 matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_lsubv.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma index bfa880d6c..398ef6783 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma @@ -24,7 +24,7 @@ inductive cnv (a) (h): relation3 genv lenv term ≝ | cnv_zero: ∀I,G,K,V. cnv a h G K V → cnv a h G (K.ⓑ{I}V) (#0) | cnv_lref: ∀I,G,K,i. cnv a h G K (#i) → cnv a h G (K.ⓘ{I}) (#↑i) | cnv_bind: ∀p,I,G,L,V,T. cnv a h G L V → cnv a h G (L.ⓑ{I}V) T → cnv a h G L (ⓑ{p,I}V.T) -| cnv_appl: ∀n,p,G,L,V,W0,T,U0. (a = Ⓣ → n = 1) → cnv a h G L V → cnv a h G L T → +| cnv_appl: ∀n,p,G,L,V,W0,T,U0. (a = Ⓣ → n ≤ 1) → cnv a h G L V → cnv a h G L T → ⦃G, L⦄ ⊢ V ➡*[1, h] W0 → ⦃G, L⦄ ⊢ T ➡*[n, h] ⓛ{p}W0.U0 → cnv a h G L (ⓐV.T) | cnv_cast: ∀G,L,U,T,U0. cnv a h G L U → cnv a h G L T → ⦃G, L⦄ ⊢ U ➡*[h] U0 → ⦃G, L⦄ ⊢ T ➡*[1, h] U0 → cnv a h G L (ⓝU.T) @@ -103,7 +103,7 @@ lemma cnv_inv_bind (a) (h): ∀p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T ![a, h] /2 width=4 by cnv_inv_bind_aux/ qed-. fact cnv_inv_appl_aux (a) (h): ∀G,L,X. ⦃G, L⦄ ⊢ X ![a, h] → ∀V,T. X = ⓐV.T → - ∃∃n,p,W0,U0. a = Ⓣ → n = 1 & ⦃G, L⦄ ⊢ V ![a, h] & ⦃G, L⦄ ⊢ T ![a, h] & + ∃∃n,p,W0,U0. a = Ⓣ → n ≤ 1 & ⦃G, L⦄ ⊢ V ![a, h] & ⦃G, L⦄ ⊢ T ![a, h] & ⦃G, L⦄ ⊢ V ➡*[1, h] W0 & ⦃G, L⦄ ⊢ T ➡*[n, h] ⓛ{p}W0.U0. #a #h #G #L #X * -L -X [ #G #L #s #X1 #X2 #H destruct @@ -117,7 +117,7 @@ qed-. (* Basic_2A1: uses: snv_inv_appl *) lemma cnv_inv_appl (a) (h): ∀G,L,V,T. ⦃G, L⦄ ⊢ ⓐV.T ![a, h] → - ∃∃n,p,W0,U0. a = Ⓣ → n = 1 & ⦃G, L⦄ ⊢ V ![a, h] & ⦃G, L⦄ ⊢ T ![a, h] & + ∃∃n,p,W0,U0. a = Ⓣ → n ≤ 1 & ⦃G, L⦄ ⊢ V ![a, h] & ⦃G, L⦄ ⊢ T ![a, h] & ⦃G, L⦄ ⊢ V ➡*[1, h] W0 & ⦃G, L⦄ ⊢ T ➡*[n, h] ⓛ{p}W0.U0. /2 width=3 by cnv_inv_appl_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma index 2d9f53b9c..29d40c3ef 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma @@ -23,12 +23,12 @@ include "basic_2/dynamic/lsubv_cnv.ma". (* Properties with context-free parallel reduction for local environments *****) -fact cnv_cpm_trans_lpr_aux (a) (h) (o): a = Ⓕ → +fact cnv_cpm_trans_lpr_aux (a) (h) (o): ∀G0,L0,T0. (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) → (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) → ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_trans_lpr a h G1 L1 T1. -#a #h #o #Ha #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ] +#a #h #o #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ] [ #s #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #_ destruct -IH2 -IH1 -H1 elim (cpm_inv_sort1 … H2) -H2 * #H1 #H2 destruct // | #i #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #HL12 destruct -IH2 @@ -69,7 +69,7 @@ fact cnv_cpm_trans_lpr_aux (a) (h) (o): a = Ⓕ → lapply (cpms_trans … HXV2 … HXW1) -XW1 (S_pred … Hm) -- 2.39.2