From: Ferruccio Guidi Date: Wed, 16 Apr 2014 16:33:20 +0000 (+0000) Subject: 3rd anniversary milestone X-Git-Tag: make_still_working~935 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=3cb5a8e407f0a783c27a4165187578aae980bc39 3rd anniversary milestone - recursion removed from alernative definition of lpx_sn - some corrections and updates --- diff --git a/matita/matita/contribs/lambdadelta/basic_2/computation/fpbs_fpbs.ma b/matita/matita/contribs/lambdadelta/basic_2/computation/fpbs_fpbs.ma index e821fe561..620bbe4f7 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/computation/fpbs_fpbs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/computation/fpbs_fpbs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "basic_2/computation/fpbs_alt.ma". +include "basic_2/computation/fpbs.ma". (* "BIG TREE" PARALLEL COMPUTATION FOR CLOSURES *****************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/relocation/lpx_sn_alt.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lpx_sn_alt.ma index 1fb1858b5..4f9ae350b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/relocation/lpx_sn_alt.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lpx_sn_alt.ma @@ -18,56 +18,17 @@ include "basic_2/relocation/lpx_sn.ma". (* SN POINTWISE EXTENSION OF A CONTEXT-SENSITIVE REALTION FOR TERMS *********) (* alternative definition of lpx_sn *) -inductive lpx_sn_alt (R:relation3 lenv term term): relation lenv ≝ -| lpx_sn_alt_intro: ∀L1,L2. - (∀I1,I2,K1,K2,V1,V2,i. - ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → I1 = I2 ∧ R K1 V1 V2 - ) → - (∀I1,I2,K1,K2,V1,V2,i. - ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → lpx_sn_alt R K1 K2 - ) → |L1| = |L2| → lpx_sn_alt R L1 L2 -. - -(* compact definition of lpx_sn_alt *****************************************) - -lemma lpx_sn_alt_ind_alt: ∀R. ∀S:relation lenv. - (∀L1,L2. |L1| = |L2| → ( - ∀I1,I2,K1,K2,V1,V2,i. - ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → - ∧∧ I1 = I2 & R K1 V1 V2 & lpx_sn_alt R K1 K2 & S K1 K2 - ) → S L1 L2) → - ∀L1,L2. lpx_sn_alt R L1 L2 → S L1 L2. -#R #S #IH #L1 #L2 #H elim H -L1 -L2 -#L1 #L2 #H1 #H2 #HL12 #IH2 @IH -IH // -HL12 -#I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 #HLK2 elim (H1 … HLK1 HLK2) -H1 -/3 width=7 by and4_intro/ -qed-. - -lemma lpx_sn_alt_inv_alt: ∀R,L1,L2. lpx_sn_alt R L1 L2 → - |L1| = |L2| ∧ - ∀I1,I2,K1,K2,V1,V2,i. +definition lpx_sn_alt: relation3 lenv term term → relation lenv ≝ + λR,L1,L2. |L1| = |L2| ∧ + (∀I1,I2,K1,K2,V1,V2,i. ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → - ∧∧ I1 = I2 & R K1 V1 V2 & lpx_sn_alt R K1 K2. -#R #L1 #L2 #H @(lpx_sn_alt_ind_alt … H) -L1 -L2 -#L1 #L2 #HL12 #IH @conj // -HL12 -#I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 #HLK2 elim (IH … HLK1 HLK2) -IH -HLK1 -HLK2 -/2 width=1 by and3_intro/ -qed-. - -lemma lpx_sn_alt_intro_alt: ∀R,L1,L2. |L1| = |L2| → - (∀I1,I2,K1,K2,V1,V2,i. - ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → - ∧∧ I1 = I2 & R K1 V1 V2 & lpx_sn_alt R K1 K2 - ) → lpx_sn_alt R L1 L2. -#R #L1 #L2 #HL12 #IH @lpx_sn_alt_intro // -HL12 -#I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 #HLK2 -elim (IH … HLK1 HLK2) -IH -HLK1 -HLK2 /2 width=1 by conj/ -qed. + I1 = I2 ∧ R K1 V1 V2 + ). (* Basic forward lemmas ******************************************************) lemma lpx_sn_alt_fwd_length: ∀R,L1,L2. lpx_sn_alt R L1 L2 → |L1| = |L2|. -#R #L1 #L2 #H elim (lpx_sn_alt_inv_alt … H) // +#R #L1 #L2 #H elim H // qed-. (* Basic inversion lemmas ***************************************************) @@ -79,10 +40,14 @@ qed-. lemma lpx_sn_alt_inv_pair1: ∀R,I,L2,K1,V1. lpx_sn_alt R (K1.ⓑ{I}V1) L2 → ∃∃K2,V2. lpx_sn_alt R K1 K2 & R K1 V1 V2 & L2 = K2.ⓑ{I}V2. -#R #I1 #L2 #K1 #V1 #H elim (lpx_sn_alt_inv_alt … H) -H +#R #I1 #L2 #K1 #V1 #H elim H -H #H #IH elim (length_inv_pos_sn … H) -H #I2 #K2 #V2 #HK12 #H destruct -elim (IH I1 I2 K1 K2 V1 V2 0) -IH /2 width=5 by ex3_2_intro/ +elim (IH I1 I2 K1 K2 V1 V2 0) // +#H #HV12 destruct @(ex3_2_intro … K2 V2) // -HV12 +@conj // -HK12 +#J1 #J2 #L1 #L2 #W1 #W2 #i #HKL1 #HKL2 elim (IH J1 J2 L1 L2 W1 W2 (i+1)) -IH +/2 width=1 by ldrop_drop, conj/ qed-. lemma lpx_sn_alt_inv_atom2: ∀R,L1. lpx_sn_alt R L1 (⋆) → L1 = ⋆. @@ -92,16 +57,20 @@ qed-. lemma lpx_sn_alt_inv_pair2: ∀R,I,L1,K2,V2. lpx_sn_alt R L1 (K2.ⓑ{I}V2) → ∃∃K1,V1. lpx_sn_alt R K1 K2 & R K1 V1 V2 & L1 = K1.ⓑ{I}V1. -#R #I2 #L1 #K2 #V2 #H elim (lpx_sn_alt_inv_alt … H) -H +#R #I2 #L1 #K2 #V2 #H elim H -H #H #IH elim (length_inv_pos_dx … H) -H #I1 #K1 #V1 #HK12 #H destruct -elim (IH I1 I2 K1 K2 V1 V2 0) -IH /2 width=5 by ex3_2_intro/ +elim (IH I1 I2 K1 K2 V1 V2 0) // +#H #HV12 destruct @(ex3_2_intro … K1 V1) // -HV12 +@conj // -HK12 +#J1 #J2 #L1 #L2 #W1 #W2 #i #HKL1 #HKL2 elim (IH J1 J2 L1 L2 W1 W2 (i+1)) -IH +/2 width=1 by ldrop_drop, conj/ qed-. (* Basic properties *********************************************************) lemma lpx_sn_alt_atom: ∀R. lpx_sn_alt R (⋆) (⋆). -#R @lpx_sn_alt_intro_alt // +#R @conj // #I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 elim (ldrop_inv_atom1 … HLK1) -HLK1 #H destruct qed. @@ -109,14 +78,14 @@ qed. lemma lpx_sn_alt_pair: ∀R,I,L1,L2,V1,V2. lpx_sn_alt R L1 L2 → R L1 V1 V2 → lpx_sn_alt R (L1.ⓑ{I}V1) (L2.ⓑ{I}V2). -#R #I #L1 #L2 #V1 #V2 #H #HV12 elim (lpx_sn_alt_inv_alt … H) -H -#HL12 #IH @lpx_sn_alt_intro_alt normalize // +#R #I #L1 #L2 #V1 #V2 #H #HV12 elim H -H +#HL12 #IH @conj normalize // #I1 #I2 #K1 #K2 #W1 #W2 #i @(nat_ind_plus … i) -i [ #HLK1 #HLK2 lapply (ldrop_inv_O2 … HLK1) -HLK1 #H destruct lapply (ldrop_inv_O2 … HLK2) -HLK2 #H destruct - /4 width=3 by lpx_sn_alt_intro_alt, and3_intro/ -| -HL12 -HV12 /3 width=5 by ldrop_inv_drop1/ + /2 width=1 by conj/ +| -HL12 -HV12 /3 width=6 by ldrop_inv_drop1/ ] qed. @@ -142,36 +111,15 @@ qed-. lemma lpx_sn_intro_alt: ∀R,L1,L2. |L1| = |L2| → (∀I1,I2,K1,K2,V1,V2,i. ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → - ∧∧ I1 = I2 & R K1 V1 V2 & lpx_sn R K1 K2 + I1 = I2 ∧ R K1 V1 V2 ) → lpx_sn R L1 L2. -#R #L1 #L2 #HL12 #IH @lpx_sn_alt_inv_lpx_sn -@lpx_sn_alt_intro_alt // -HL12 -#I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 #HLK2 -elim (IH … HLK1 HLK2) -IH -HLK1 -HLK2 /3 width=1 by lpx_sn_lpx_sn_alt, and3_intro/ -qed. - -lemma lpx_sn_ind_alt: ∀R. ∀S:relation lenv. - (∀L1,L2. |L1| = |L2| → ( - ∀I1,I2,K1,K2,V1,V2,i. - ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → - ∧∧ I1 = I2 & R K1 V1 V2 & lpx_sn R K1 K2 & S K1 K2 - ) → S L1 L2) → - ∀L1,L2. lpx_sn R L1 L2 → S L1 L2. -#R #S #IH1 #L1 #L2 #H lapply (lpx_sn_lpx_sn_alt … H) -H -#H @(lpx_sn_alt_ind_alt … H) -L1 -L2 -#L1 #L2 #HL12 #IH2 @IH1 -IH1 // -HL12 -#I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 #HLK2 elim (IH2 … HLK1 HLK2) -IH2 -HLK1 -HLK2 -/3 width=1 by lpx_sn_alt_inv_lpx_sn, and4_intro/ -qed-. +/4 width=4 by lpx_sn_alt_inv_lpx_sn, conj/ qed. lemma lpx_sn_inv_alt: ∀R,L1,L2. lpx_sn R L1 L2 → |L1| = |L2| ∧ ∀I1,I2,K1,K2,V1,V2,i. ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 → - ∧∧ I1 = I2 & R K1 V1 V2 & lpx_sn R K1 K2. + I1 = I2 ∧ R K1 V1 V2. #R #L1 #L2 #H lapply (lpx_sn_lpx_sn_alt … H) -H -#H elim (lpx_sn_alt_inv_alt … H) -H -#HL12 #IH @conj // -#I1 #I2 #K1 #K2 #V1 #V2 #i #HLK1 #HLK2 -elim (IH … HLK1 HLK2) -IH -HLK1 -HLK2 /3 width=1 by lpx_sn_alt_inv_lpx_sn, and3_intro/ +#H elim H -H /3 width=4 by conj/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml index cc0a402b0..0908b1e0a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml +++ b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml @@ -5,6 +5,7 @@ title = "\lambda\delta version 2" head = "cic:/matita/lambdadelta/basic_2/ (λδ version 2)" > +
Summary of the Specification
Here is a numerical acount of the specification's contents @@ -30,8 +32,13 @@ for native type assignment. - Closure of context-sensitive extended computation - for native validity. + Closure of native validity + for context-sensitive extended computation. + + + lazy equivalence for local environments + serves as irrelevant step in "big tree" computation + (anniversary milestone). Parametrized slicing for local environments @@ -61,7 +68,7 @@ Confluence for context-free parallel reduction on closures. - Term binders polarized to control ζ-reduction. + Term binders polarized to control ζ-reduction (not released). Context-sensitive subject equivalence