From: Ferruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it> Date: Thu, 13 Jun 2019 15:07:51 +0000 (+0200) Subject: some restyling ... X-Git-Tag: make_still_working~245 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=f308429a0fde273605a2330efc63268b4ac36c99;p=helm.git some restyling ... + fixing some notations + fixing some spaces --- diff --git a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cnv_eta.ma b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cnv_eta.ma index 2b3dfcd4c..c3c661085 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cnv_eta.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cnv_eta.ma @@ -20,7 +20,7 @@ include "basic_2/dynamic/cnv.ma". (* Extended validy (basic_2B) vs. restricted validity (basic_1A) ************) (* Note: extended validity of a closure, height of cnv_appl > 1 *) -lemma cnv_extended (h) (p): âG,L,s. â¦G, L.ââs.ââ{p}âs.âs.â#0⦠⢠â#2.#0 !*[h]. +lemma cnv_extended (h) (p): âG,L,s. â¦G,L.ââs.ââ{p}âs.âs.â#0⦠⢠â#2.#0 !*[h]. #h #p #G #L #s @(cnv_appl ⦠2 p ⦠(âs) ⦠(âs)) [ // @@ -32,7 +32,7 @@ lemma cnv_extended (h) (p): âG,L,s. â¦G, L.ââs.ââ{p}âs.âs.â#0 qed. (* Note: restricted validity of the η-expanded closure, height of cnv_appl = 1 **) -lemma vnv_restricted (h) (p): âG,L,s. â¦G, L.ââs.ââ{p}âs.âs.ââ{p}âs.â#0.#1⦠⢠â#2.#0 ![h]. +lemma vnv_restricted (h) (p): âG,L,s. â¦G,L.ââs.ââ{p}âs.âs.ââ{p}âs.â#0.#1⦠⢠â#2.#0 ![h]. #h #p #G #L #s @(cnv_appl ⦠1 p ⦠(âs) ⦠(â#0.#2)) [ /2 width=1 by ylt_inj/ diff --git a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma index bb4edfd67..72b4b347c 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma @@ -51,7 +51,7 @@ lapply (cpm_inv_appl1 ⦠H) -H * * qed-. lemma cpr_inv_Delta_sn (h) (G) (L) (s): - âX. â¦G, L⦠⢠Delta s â¡[h] X â Delta s = X. + âX. â¦G,L⦠⢠Delta s â¡[h] X â Delta s = X. #h #G #L #s #X #H elim (cpm_inv_abst1 ⦠H) -H #X1 #X2 #H1 #H2 #H destruct lapply (cpr_inv_sort1 ⦠H1) -H1 #H destruct @@ -60,19 +60,19 @@ qed-. (* Main properties **********************************************************) -theorem cpr_Omega_12 (h) (G) (L) (s): â¦G, L⦠⢠Omega1 s â¡[h] Omega2 s. +theorem cpr_Omega_12 (h) (G) (L) (s): â¦G,L⦠⢠Omega1 s â¡[h] Omega2 s. /2 width=1 by cpm_beta/ qed. -theorem cpr_Omega_23 (h) (G) (L) (s): â¦G, L⦠⢠Omega2 s â¡[h] Omega3 s. +theorem cpr_Omega_23 (h) (G) (L) (s): â¦G,L⦠⢠Omega2 s â¡[h] Omega3 s. /5 width=3 by cpm_eps, cpm_appl, cpm_bind, cpm_delta, Delta_lifts/ qed. -theorem cpr_Omega_31 (h) (G) (L) (s): â¦G, L⦠⢠Omega3 s â¡[h] Omega1 s. +theorem cpr_Omega_31 (h) (G) (L) (s): â¦G,L⦠⢠Omega3 s â¡[h] Omega1 s. /4 width=3 by cpm_zeta, Delta_lifts, lifts_flat/ qed. (* Main inversion properties ************************************************) theorem cpr_inv_Omega1_sn (h) (G) (L) (s): - âX. â¦G, L⦠⢠Omega1 s â¡[h] X â + âX. â¦G,L⦠⢠Omega1 s â¡[h] X â â¨â¨ Omega1 s = X | Omega2 s = X. #h #G #L #s #X #H elim (cpm_inv_appl1 ⦠H) -H * [ #W2 #T2 #HW2 #HT2 #H destruct @@ -87,7 +87,7 @@ theorem cpr_inv_Omega1_sn (h) (G) (L) (s): ] qed-. -theorem cpr_Omega_21_false (h) (G) (L) (s): â¦G, L⦠⢠Omega2 s â¡[h] Omega1 s â â¥. +theorem cpr_Omega_21_false (h) (G) (L) (s): â¦G,L⦠⢠Omega2 s â¡[h] Omega1 s â â¥. #h #G #L #s #H elim (cpm_inv_bind1 ⦠H) -H * [ #W #T #_ #_ whd in ⢠(??%?â?); #H destruct | #X #H #_ #_ #_ diff --git a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma index 6ee55d8d0..f75a20a29 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma @@ -36,16 +36,16 @@ lemma ApplDelta_lifts (f:rtmap) (s0) (s): â¬*[f] (ApplDelta s0 s) â (ApplDelta s0 s). /5 width=1 by lifts_sort, lifts_lref, lifts_bind, lifts_flat/ qed. -lemma cpr_ApplOmega_12 (h) (G) (L) (s0) (s): â¦G, L⦠⢠ApplOmega1 s0 s â¡[h] ApplOmega2 s0 s. +lemma cpr_ApplOmega_12 (h) (G) (L) (s0) (s): â¦G,L⦠⢠ApplOmega1 s0 s â¡[h] ApplOmega2 s0 s. /2 width=1 by cpm_beta/ qed. -lemma cpr_ApplOmega_23 (h) (G) (L) (s0) (s): â¦G, L⦠⢠ApplOmega2 s0 s â¡[h] ApplOmega3 s0 s. +lemma cpr_ApplOmega_23 (h) (G) (L) (s0) (s): â¦G,L⦠⢠ApplOmega2 s0 s â¡[h] ApplOmega3 s0 s. /6 width=3 by cpm_eps, cpm_appl, cpm_bind, cpm_delta, ApplDelta_lifts/ qed. -lemma cpr_ApplOmega_34 (h) (G) (L) (s0) (s): â¦G, L⦠⢠ApplOmega3 s0 s â¡[h] ApplOmega4 s0 s. +lemma cpr_ApplOmega_34 (h) (G) (L) (s0) (s): â¦G,L⦠⢠ApplOmega3 s0 s â¡[h] ApplOmega4 s0 s. /4 width=3 by cpm_zeta, ApplDelta_lifts, lifts_sort, lifts_flat/ qed. -lemma cpxs_ApplOmega_14 (h) (G) (L) (s0) (s): â¦G, L⦠⢠ApplOmega1 s0 s â¬*[h] ApplOmega4 s0 s. +lemma cpxs_ApplOmega_14 (h) (G) (L) (s0) (s): â¦G,L⦠⢠ApplOmega1 s0 s â¬*[h] ApplOmega4 s0 s. /5 width=4 by cpxs_strap1, cpm_fwd_cpx/ qed. lemma fqup_ApplOmega_41 (G) (L) (s0) (s): â¦G,L,ApplOmega4 s0 s⦠â+ â¦G,L,ApplOmega1 s0 sâ¦. diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_flifts_basic.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_flifts_basic.ma index 9b7f6fa2b..7ebdc5dab 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_flifts_basic.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_flifts_basic.ma @@ -23,7 +23,7 @@ theorem flifts_basic_swap (T) (d1) (d2) (h1) (h2): d2 ⤠d1 â â[d2,h2]â[d1,h1]T = â[h2+d1,h1]â[d2,h2]T. /3 width=1 by flifts_comp, basic_swap/ qed-. (* -lemma flift_join: âe1,e2,T. â¬[e1, e2] â[0, e1] T â¡ â[0, e1 + e2] T. +lemma flift_join: âe1,e2,T. â¬[e1,e2] â[0,e1] T â¡ â[0,e1 + e2] T. #e1 #e2 #T lapply (flift_lift T 0 (e1+e2)) #H elim (lift_split ⦠H e1 e1) -H // #U #H diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/mf_cpr.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/mf_cpr.ma index 2e7f3d5ef..059a1f66f 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/mf_cpr.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/mf_cpr.ma @@ -20,9 +20,9 @@ include "apps_2/functional/mf_exteq.ma". (* Properties with relocation ***********************************************) -lemma mf_delta_drops (h) (G): âK,V1,V2. â¦G, K⦠⢠V1 â¡[h] V2 â +lemma mf_delta_drops (h) (G): âK,V1,V2. â¦G,K⦠⢠V1 â¡[h] V2 â âT,L,l. â¬*[l] L â K.âV1 â - âgv,lv. â¦G, L⦠⢠â[gv,â¡[lâ#l]lv]T â¡[h] â[gv,â¡[lââ[âl]V2]lv]T. + âgv,lv. â¦G,L⦠⢠â[gv,â¡[lâ#l]lv]T â¡[h] â[gv,â¡[lââ[âl]V2]lv]T. #h #G #K #V1 #V2 #HV #T elim T -T * // [ #i #L #l #HKL #gv #lv >mf_lref >mf_lref diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/deq.ma b/matita/matita/contribs/lambdadelta/apps_2/models/deq.ma index 5d0f2d324..849ad9dd4 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/deq.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/deq.ma @@ -19,7 +19,7 @@ include "static_2/syntax/genv.ma". (* DENOTATIONAL EQUIVALENCE ************************************************) definition deq (M): relation4 genv lenv term term â - λG,L,T1,T2. âgv,lv. lv ϵ â¦Lâ§[gv] â â¦T1â§[gv, lv] â{M} â¦T2â§[gv, lv]. + λG,L,T1,T2. âgv,lv. lv ϵ â¦Lâ§[gv] â â¦T1â§[gv,lv] â{M} â¦T2â§[gv,lv]. interpretation "denotational equivalence (model)" 'RingEq M G L T1 T2 = (deq M G L T1 T2). diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/deq_cpr.ma b/matita/matita/contribs/lambdadelta/apps_2/models/deq_cpr.ma index 181acf2e6..3e085aeea 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/deq_cpr.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/deq_cpr.ma @@ -21,7 +21,7 @@ include "apps_2/models/deq.ma". (* Forward lemmas with context-sensitive parallel reduction for terms *******) lemma cpr_fwd_deq (h) (M): is_model M â is_extensional M â - âG,L,T1,T2. â¦G, L⦠⢠T1 â¡[h] T2 â â¦G, L⦠⢠T1 â{M} T2. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¡[h] T2 â â¦G,L⦠⢠T1 â{M} T2. #h #M #H1M #H2M #G #L #T1 #T2 #H @(cpr_ind ⦠H) -G -L -T1 -T2 [ /2 width=2 by deq_refl/ | #G #K #V1 #V2 #W2 #_ #IH #HVW2 #gv #v #H diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/li.ma b/matita/matita/contribs/lambdadelta/apps_2/models/li.ma index 4d36f1427..b3ad39157 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/li.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/li.ma @@ -20,7 +20,7 @@ include "apps_2/notation/models/inwbrackets_4.ma". inductive li (M) (gv): relation2 lenv (evaluation M) â | li_atom: âlv. li M gv (â) lv -| li_abbr: âlv,d,L,V. li M gv L lv â â¦Vâ§[gv, lv] = d â li M gv (L.âV) (⫯[0âd]lv) +| li_abbr: âlv,d,L,V. li M gv L lv â â¦Vâ§[gv,lv] = d â li M gv (L.âV) (⫯[0âd]lv) | li_abst: âlv,d,L,W. li M gv L lv â li M gv (L.âW) (⫯[0âd]lv) | li_unit: âlv,d,I,L. li M gv L lv â li M gv (L.â¤{I}) (⫯[0âd]lv) | li_veq : âlv1,lv2,L. li M gv L lv1 â lv1 â lv2 â li M gv L lv2 diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/model_props.ma b/matita/matita/contribs/lambdadelta/apps_2/models/model_props.ma index b3acfc262..d06b4efda 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/model_props.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/model_props.ma @@ -26,34 +26,34 @@ record is_model (M): Prop â { (* Note: application: compatibility *) mp: compatible_3 ⦠(ap M) (sq M) (sq M) (sq M); (* Note: interpretation: sort *) - ms: âgv,lv,s. â¦âsâ§{M}[gv, lv] â sv M s; + ms: âgv,lv,s. â¦âsâ§{M}[gv,lv] â sv M s; (* Note: interpretation: local reference *) - ml: âgv,lv,i. â¦#iâ§{M}[gv, lv] â lv i; + ml: âgv,lv,i. â¦#iâ§{M}[gv,lv] â lv i; (* Note: interpretation: global reference *) - mg: âgv,lv,l. â¦Â§lâ§{M}[gv, lv] â gv l; + mg: âgv,lv,l. â¦Â§lâ§{M}[gv,lv] â gv l; (* Note: interpretation: intensional binder *) - mi: âp,gv1,gv2,lv1,lv2,W,T. â¦Wâ§{M}[gv1, lv1] â â¦Wâ§{M}[gv2, lv2] â - (âd. â¦Tâ§{M}[gv1, ⫯[0âd]lv1] â â¦Tâ§{M}[gv2, ⫯[0âd]lv2]) â - â¦â{p}W.Tâ§[gv1, lv1] â â¦â{p}W.Tâ§[gv2, lv2]; + mi: âp,gv1,gv2,lv1,lv2,W,T. â¦Wâ§{M}[gv1,lv1] â â¦Wâ§{M}[gv2,lv2] â + (âd. â¦Tâ§{M}[gv1,⫯[0âd]lv1] â â¦Tâ§{M}[gv2,⫯[0âd]lv2]) â + â¦â{p}W.Tâ§[gv1,lv1] â â¦â{p}W.Tâ§[gv2,lv2]; (* Note: interpretation: abbreviation *) - md: âp,gv,lv,V,T. â¦â{p}V.Tâ§{M}[gv, lv] â â¦Vâ§[gv, lv] â[p] â¦Tâ§[gv, ⫯[0ââ¦Vâ§[gv, lv]]lv]; + md: âp,gv,lv,V,T. â¦â{p}V.Tâ§{M}[gv,lv] â â¦Vâ§[gv,lv] â[p] â¦Tâ§[gv,⫯[0ââ¦Vâ§[gv,lv]]lv]; (* Note: interpretation: application *) - ma: âgv,lv,V,T. â¦âV.Tâ§{M}[gv, lv] â â¦Vâ§[gv, lv] @ â¦Tâ§[gv, lv]; + ma: âgv,lv,V,T. â¦âV.Tâ§{M}[gv,lv] â â¦Vâ§[gv,lv] @ â¦Tâ§[gv,lv]; (* Note: interpretation: ζ-equivalence *) mz: âd1,d2. d1 â{M}[â] d2 â d2; (* Note: interpretation: ϵ-equivalence *) - me: âgv,lv,W,T. â¦âW.Tâ§{M}[gv, lv] â â¦Tâ§[gv, lv]; + me: âgv,lv,W,T. â¦âW.Tâ§{M}[gv,lv] â â¦Tâ§[gv,lv]; (* Note: interpretation: β-requivalence *) - mb: âp,gv,lv,d,W,T. d @ â¦â{p}W.Tâ§{M}[gv, lv] â d â[p] â¦Tâ§[gv, ⫯[0âd]lv]; + mb: âp,gv,lv,d,W,T. d @ â¦â{p}W.Tâ§{M}[gv,lv] â d â[p] â¦Tâ§[gv,⫯[0âd]lv]; (* Note: interpretation: θ-requivalence *) mh: âp,d1,d2,d3. d1 @ (d2 â{M}[p] d3) â d2 â[p] (d1 @ d3) }. record is_extensional (M): Prop â { (* Note: interpretation: extensional abstraction *) - mx: âp,gv1,gv2,lv1,lv2,W1,W2,T1,T2. â¦W1â§{M}[gv1, lv1] â â¦W2â§{M}[gv2, lv2] â - (âd. â¦T1â§{M}[gv1, ⫯[0âd]lv1] â â¦T2â§{M}[gv2, ⫯[0âd]lv2]) â - â¦â{p}W1.T1â§[gv1, lv1] â â¦â{p}W2.T2â§[gv2, lv2] + mx: âp,gv1,gv2,lv1,lv2,W1,W2,T1,T2. â¦W1â§{M}[gv1,lv1] â â¦W2â§{M}[gv2,lv2] â + (âd. â¦T1â§{M}[gv1,⫯[0âd]lv1] â â¦T2â§{M}[gv2,⫯[0âd]lv2]) â + â¦â{p}W1.T1â§[gv1,lv1] â â¦â{p}W2.T2â§[gv2,lv2] }. record is_injective (M): Prop â { diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/tm.ma b/matita/matita/contribs/lambdadelta/apps_2/models/tm.ma index a0f7b84d1..00358c9a2 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/tm.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/tm.ma @@ -20,7 +20,7 @@ include "apps_2/models/model.ma". definition tm_dd â term. -definition tm_sq (h) (T1) (T2) â â¦â, â⦠⢠T1 â¬*[h] T2. +definition tm_sq (h) (T1) (T2) â â¦â,â⦠⢠T1 â¬*[h] T2. definition tm_sv (s) â âs. diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/veq.ma b/matita/matita/contribs/lambdadelta/apps_2/models/veq.ma index 4d3d16c1e..3d9e440a7 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/veq.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/veq.ma @@ -83,7 +83,7 @@ qed-. lemma ti_comp (M): is_model M â âT,gv1,gv2. gv1 â gv2 â âlv1,lv2. lv1 â lv2 â - â¦Tâ§[gv1, lv1] â{M} â¦Tâ§[gv2, lv2]. + â¦Tâ§[gv1,lv1] â{M} â¦Tâ§[gv2,lv2]. #M #HM #T elim T -T * [||| #p * | * ] [ /4 width=5 by seq_trans, seq_sym, ms/ | /4 width=5 by seq_sym, ml, mq/ diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma b/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma index d7a225140..13a0f9113 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma @@ -22,7 +22,7 @@ include "apps_2/models/veq.ma". fact lifts_fwd_vpush_aux (M): is_model M â is_extensional M â âf,T1,T2. â¬*[f] T1 â T2 â âm. ðâ´m,1âµ = f â - âgv,lv,d. â¦T1â§[gv, lv] â{M} â¦T2â§[gv, ⫯[mâd]lv]. + âgv,lv,d. â¦T1â§[gv,lv] â{M} â¦T2â§[gv,⫯[mâd]lv]. #M #H1M #H2M #f #T1 #T2 #H elim H -f -T1 -T2 [ #f #s #m #Hf #gv #lv #d @(mq ⦠H1M) [4,5: /3 width=2 by seq_sym, ms/ |1,2: skip ] @@ -67,5 +67,5 @@ qed-. lemma lifts_SO_fwd_vpush (M) (gv): is_model M â is_extensional M â âT1,T2. â¬*[1] T1 â T2 â - âlv,d. â¦T1â§[gv, lv] â{M} â¦T2â§[gv, ⫯[0âd]lv]. + âlv,d. â¦T1â§[gv,lv] â{M} â¦T2â§[gv,⫯[0âd]lv]. /2 width=3 by lifts_fwd_vpush_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/vpushs.ma b/matita/matita/contribs/lambdadelta/apps_2/models/vpushs.ma index dabd2c431..34e9de237 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/vpushs.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/vpushs.ma @@ -20,7 +20,7 @@ include "apps_2/models/veq.ma". inductive vpushs (M) (gv) (lv): relation2 lenv (evaluation M) â | vpushs_atom: vpushs M gv lv (â) lv -| vpushs_abbr: âv,d,K,V. vpushs M gv lv K v â â¦Vâ§[gv, v] = d â vpushs M gv lv (K.âV) (⫯[0âd]v) +| vpushs_abbr: âv,d,K,V. vpushs M gv lv K v â â¦Vâ§[gv,v] = d â vpushs M gv lv (K.âV) (⫯[0âd]v) | vpushs_abst: âv,d,K,V. vpushs M gv lv K v â vpushs M gv lv (K.âV) (⫯[0âd]v) | vpushs_unit: âv,d,I,K. vpushs M gv lv K v â vpushs M gv lv (K.â¤{I}) (⫯[0âd]v) | vpushs_repl: âv1,v2,L. vpushs M gv lv L v1 â v1 â v2 â vpushs M gv lv L v2 @@ -51,7 +51,7 @@ lemma vpushs_inv_atom (M) (gv) (lv): is_model M â fact vpushs_inv_abbr_aux (M) (gv) (lv): is_model M â ây,L. L â¨{M}[gv] lv â y â âK,V. K.âV = L â - ââv. K â¨[gv] lv â v & ⫯[0ââ¦Vâ§[gv, v]]v â y. + ââv. K â¨[gv] lv â v & ⫯[0ââ¦Vâ§[gv,v]]v â y. #M #gv #lv #HM #y #L #H elim H -y -L [ #Y #X #H destruct | #v #d #K #V #Hv #Hd #_ #Y #X #H destruct @@ -66,7 +66,7 @@ qed-. lemma vpushs_inv_abbr (M) (gv) (lv): is_model M â ây,K,V. K.âV â¨{M}[gv] lv â y â - ââv. K â¨[gv] lv â v & ⫯[0ââ¦Vâ§[gv, v]]v â y. + ââv. K â¨[gv] lv â v & ⫯[0ââ¦Vâ§[gv,v]]v â y. /2 width=3 by vpushs_inv_abbr_aux/ qed-. fact vpushs_inv_abst_aux (M) (gv) (lv): is_model M â diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma b/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma index 59f9b3e84..8ac169986 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/vpushs_fold.ma @@ -21,8 +21,8 @@ include "apps_2/models/vpushs.ma". lemma vpushs_fold (M): is_model M â is_extensional M â âL,T1,T2,gv,lv. - (âv. L â¨[gv] lv â v â â¦T1â§[gv, v] â â¦T2â§[gv, v]) â - â¦L+T1â§[gv, lv] â{M} â¦L+T2â§[gv, lv]. + (âv. L â¨[gv] lv â v â â¦T1â§[gv,v] â â¦T2â§[gv,v]) â + â¦L+T1â§[gv,lv] â{M} â¦L+T2â§[gv,lv]. #M #H1M #H2M #L elim L -L [| #K * [| * ]] [ #T1 #T2 #gv #lv #H12 >fold_atom >fold_atom @@ -44,8 +44,8 @@ qed. (* Inversion lemmas with fold for restricted closures ***********************) lemma vpushs_inv_fold (M): is_model M â is_injective M â - âL,T1,T2,gv,lv. â¦L+T1â§[gv, lv] â{M} â¦L+T2â§[gv, lv] â - âv. L â¨[gv] lv â v â â¦T1â§[gv, v] â â¦T2â§[gv, v]. + âL,T1,T2,gv,lv. â¦L+T1â§[gv,lv] â{M} â¦L+T2â§[gv,lv] â + âv. L â¨[gv] lv â v â â¦T1â§[gv,v] â â¦T2â§[gv,v]. #M #H1M #H2M #L elim L -L [| #K * [| * ]] [ #T1 #T2 #gv #lv >fold_atom >fold_atom #H12 #v #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma index fe0b19cf3..0fa415ae4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma @@ -28,9 +28,9 @@ inductive cnv (a:ynat) (h): relation3 genv lenv term â | 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. yinj n < a â 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) + â¦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) + â¦G,L⦠⢠U â¡*[h] U0 â â¦G,L⦠⢠T â¡*[1,h] U0 â cnv a h G L (âU.T) . interpretation "context-sensitive native validity (term)" @@ -44,8 +44,8 @@ interpretation "context-sensitive extended native validity (term)" (* Basic inversion lemmas ***************************************************) -fact cnv_inv_zero_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â X = #0 â - ââI,K,V. â¦G, K⦠⢠V ![a, h] & L = K.â{I}V. +fact cnv_inv_zero_aux (a) (h): âG,L,X. â¦G,L⦠⢠X ![a,h] â X = #0 â + ââI,K,V. â¦G,K⦠⢠V ![a,h] & L = K.â{I}V. #a #h #G #L #X * -G -L -X [ #G #L #s #H destruct | #I #G #K #V #HV #_ /2 width=5 by ex2_3_intro/ @@ -56,12 +56,12 @@ fact cnv_inv_zero_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â X = #0 â ] qed-. -lemma cnv_inv_zero (a) (h): âG,L. â¦G, L⦠⢠#0 ![a, h] â - ââI,K,V. â¦G, K⦠⢠V ![a, h] & L = K.â{I}V. +lemma cnv_inv_zero (a) (h): âG,L. â¦G,L⦠⢠#0 ![a,h] â + ââI,K,V. â¦G,K⦠⢠V ![a,h] & L = K.â{I}V. /2 width=3 by cnv_inv_zero_aux/ qed-. -fact cnv_inv_lref_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âi. X = #(âi) â - ââI,K. â¦G, K⦠⢠#i ![a, h] & L = K.â{I}. +fact cnv_inv_lref_aux (a) (h): âG,L,X. â¦G,L⦠⢠X ![a,h] â âi. X = #(âi) â + ââI,K. â¦G,K⦠⢠#i ![a,h] & L = K.â{I}. #a #h #G #L #X * -G -L -X [ #G #L #s #j #H destruct | #I #G #K #V #_ #j #H destruct @@ -72,11 +72,11 @@ fact cnv_inv_lref_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âi. X = ] qed-. -lemma cnv_inv_lref (a) (h): âG,L,i. â¦G, L⦠⢠#âi ![a, h] â - ââI,K. â¦G, K⦠⢠#i ![a, h] & L = K.â{I}. +lemma cnv_inv_lref (a) (h): âG,L,i. â¦G,L⦠⢠#âi ![a,h] â + ââI,K. â¦G,K⦠⢠#i ![a,h] & L = K.â{I}. /2 width=3 by cnv_inv_lref_aux/ qed-. -fact cnv_inv_gref_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âl. X = §l â â¥. +fact cnv_inv_gref_aux (a) (h): âG,L,X. â¦G,L⦠⢠X ![a,h] â âl. X = §l â â¥. #a #h #G #L #X * -G -L -X [ #G #L #s #l #H destruct | #I #G #K #V #_ #l #H destruct @@ -88,13 +88,13 @@ fact cnv_inv_gref_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âl. X = qed-. (* Basic_2A1: uses: snv_inv_gref *) -lemma cnv_inv_gref (a) (h): âG,L,l. â¦G, L⦠⢠§l ![a, h] â â¥. +lemma cnv_inv_gref (a) (h): âG,L,l. â¦G,L⦠⢠§l ![a,h] â â¥. /2 width=8 by cnv_inv_gref_aux/ qed-. -fact cnv_inv_bind_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â +fact cnv_inv_bind_aux (a) (h): âG,L,X. â¦G,L⦠⢠X ![a,h] â âp,I,V,T. X = â{p,I}V.T â - â§â§ â¦G, L⦠⢠V ![a, h] - & â¦G, L.â{I}V⦠⢠T ![a, h]. + â§â§ â¦G,L⦠⢠V ![a,h] + & â¦G,L.â{I}V⦠⢠T ![a,h]. #a #h #G #L #X * -G -L -X [ #G #L #s #q #Z #X1 #X2 #H destruct | #I #G #K #V #_ #q #Z #X1 #X2 #H destruct @@ -106,14 +106,14 @@ fact cnv_inv_bind_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â qed-. (* Basic_2A1: uses: snv_inv_bind *) -lemma cnv_inv_bind (a) (h): âp,I,G,L,V,T. â¦G, L⦠⢠â{p,I}V.T ![a, h] â - â§â§ â¦G, L⦠⢠V ![a, h] - & â¦G, L.â{I}V⦠⢠T ![a, h]. +lemma cnv_inv_bind (a) (h): âp,I,G,L,V,T. â¦G,L⦠⢠â{p,I}V.T ![a,h] â + â§â§ â¦G,L⦠⢠V ![a,h] + & â¦G,L.â{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. yinj n < a & â¦G, L⦠⢠V ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠V â¡*[1, h] W0 & â¦G, L⦠⢠T â¡*[n, h] â{p}W0.U0. +fact cnv_inv_appl_aux (a) (h): âG,L,X. â¦G,L⦠⢠X ![a,h] â âV,T. X = âV.T â + âân,p,W0,U0. yinj n < a & â¦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 | #I #G #K #V #_ #X1 #X2 #H destruct @@ -125,14 +125,14 @@ fact cnv_inv_appl_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âV,T. X 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. yinj n < a & â¦G, L⦠⢠V ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠V â¡*[1, h] W0 & â¦G, L⦠⢠T â¡*[n, h] â{p}W0.U0. +lemma cnv_inv_appl (a) (h): âG,L,V,T. â¦G,L⦠⢠âV.T ![a,h] â + âân,p,W0,U0. yinj n < a & â¦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-. -fact cnv_inv_cast_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âU,T. X = âU.T â - ââU0. â¦G, L⦠⢠U ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠U â¡*[h] U0 & â¦G, L⦠⢠T â¡*[1, h] U0. +fact cnv_inv_cast_aux (a) (h): âG,L,X. â¦G,L⦠⢠X ![a,h] â âU,T. X = âU.T â + ââU0. â¦G,L⦠⢠U ![a,h] & â¦G,L⦠⢠T ![a,h] & + â¦G,L⦠⢠U â¡*[h] U0 & â¦G,L⦠⢠T â¡*[1,h] U0. #a #h #G #L #X * -G -L -X [ #G #L #s #X1 #X2 #H destruct | #I #G #K #V #_ #X1 #X2 #H destruct @@ -144,16 +144,16 @@ fact cnv_inv_cast_aux (a) (h): âG,L,X. â¦G, L⦠⢠X ![a, h] â âU,T. X qed-. (* Basic_2A1: uses: snv_inv_appl *) -lemma cnv_inv_cast (a) (h): âG,L,U,T. â¦G, L⦠⢠âU.T ![a, h] â - ââU0. â¦G, L⦠⢠U ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠U â¡*[h] U0 & â¦G, L⦠⢠T â¡*[1, h] U0. +lemma cnv_inv_cast (a) (h): âG,L,U,T. â¦G,L⦠⢠âU.T ![a,h] â + ââU0. â¦G,L⦠⢠U ![a,h] & â¦G,L⦠⢠T ![a,h] & + â¦G,L⦠⢠U â¡*[h] U0 & â¦G,L⦠⢠T â¡*[1,h] U0. /2 width=3 by cnv_inv_cast_aux/ qed-. (* Basic forward lemmas *****************************************************) lemma cnv_fwd_flat (a) (h) (I) (G) (L): - âV,T. â¦G, L⦠⢠â{I}V.T ![a,h] â - â§â§ â¦G, L⦠⢠V ![a,h] & â¦G, L⦠⢠T ![a,h]. + âV,T. â¦G,L⦠⢠â{I}V.T ![a,h] â + â§â§ â¦G,L⦠⢠V ![a,h] & â¦G,L⦠⢠T ![a,h]. #a #h * #G #L #V #T #H [ elim (cnv_inv_appl ⦠H) #n #p #W #U #_ #HV #HT #_ #_ | elim (cnv_inv_cast ⦠H) #U #HV #HT #_ #_ diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_aaa.ma index c63a1aa12..aa0c10865 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_aaa.ma @@ -22,7 +22,7 @@ include "basic_2/dynamic/cnv.ma". (* Forward lemmas on atomic arity assignment for terms **********************) (* Basic_2A1: uses: snv_fwd_aaa *) -lemma cnv_fwd_aaa (a) (h): âG,L,T. â¦G, L⦠⢠T ![a, h] â âA. â¦G, L⦠⢠T â A. +lemma cnv_fwd_aaa (a) (h): âG,L,T. â¦G,L⦠⢠T ![a,h] â âA. â¦G,L⦠⢠T â A. #a #h #G #L #T #H elim H -G -L -T [ /2 width=2 by aaa_sort, ex_intro/ | #I #G #L #V #_ * /3 width=2 by aaa_zero, ex_intro/ @@ -46,7 +46,7 @@ qed-. (* Forward lemmas with t_bound rt_transition for terms **********************) lemma cnv_fwd_cpm_SO (a) (h) (G) (L): - âT. â¦G, L⦠⢠T ![a, h] â âU. â¦G,L⦠⢠T â¡[1,h] U. + âT. â¦G,L⦠⢠T ![a,h] â âU. â¦G,L⦠⢠T â¡[1,h] U. #a #h #G #L #T #H elim (cnv_fwd_aaa ⦠H) -H #A #HA /2 width=2 by aaa_cpm_SO/ @@ -55,7 +55,7 @@ qed-. (* Forward lemmas with t_bound rt_computation for terms *********************) lemma cnv_fwd_cpms_total (a) (h) (n) (G) (L): - âT. â¦G, L⦠⢠T ![a, h] â âU. â¦G,L⦠⢠T â¡*[n,h] U. + âT. â¦G,L⦠⢠T ![a,h] â âU. â¦G,L⦠⢠T â¡*[n,h] U. #a #h #n #G #L #T #H elim (cnv_fwd_aaa ⦠H) -H #A #HA /2 width=2 by cpms_total_aaa/ @@ -64,9 +64,9 @@ qed-. (* Advanced inversion lemmas ************************************************) lemma cnv_inv_appl_pred (a) (h) (G) (L): - âV,T. â¦G, L⦠⢠âV.T ![yinj a, h] â - ââp,W0,U0. â¦G, L⦠⢠V ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠V â¡*[1, h] W0 & â¦G, L⦠⢠T â¡*[âa, h] â{p}W0.U0. + âV,T. â¦G,L⦠⢠âV.T ![yinj a,h] â + ââp,W0,U0. â¦G,L⦠⢠V ![a,h] & â¦G,L⦠⢠T ![a,h] & + â¦G,L⦠⢠V â¡*[1,h] W0 & â¦G,L⦠⢠T â¡*[âa,h] â{p}W0.U0. #a #h #G #L #V #T #H elim (cnv_inv_appl ⦠H) -H #n #p #W #U #Ha #HV #HT #HVW #HTU lapply (ylt_inv_inj ⦠Ha) -Ha #Ha diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpes.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpes.ma index e2eca5cdf..190165fe6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpes.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpes.ma @@ -21,42 +21,42 @@ include "basic_2/dynamic/cnv_aaa.ma". lemma cnv_appl_cpes (a) (h) (G) (L): ân. yinj n < a â - âV. â¦G, L⦠⢠V ![a, h] â âT. â¦G, L⦠⢠T ![a, h] â - âW. â¦G, L⦠⢠V â¬*[h,1,0] W â - âp,U. â¦G, L⦠⢠T â¡*[n, h] â{p}W.U â â¦G, L⦠⢠âV.T ![a, h]. + âV. â¦G,L⦠⢠V ![a,h] â âT. â¦G,L⦠⢠T ![a,h] â + âW. â¦G,L⦠⢠V â¬*[h,1,0] W â + âp,U. â¦G,L⦠⢠T â¡*[n,h] â{p}W.U â â¦G,L⦠⢠âV.T ![a,h]. #a #h #G #L #n #Hn #V #HV #T #HT #W * /4 width=11 by cnv_appl, cpms_cprs_trans, cpms_bind/ qed. lemma cnv_cast_cpes (a) (h) (G) (L): - âU. â¦G, L⦠⢠U ![a, h] â - âT. â¦G, L⦠⢠T ![a, h] â â¦G, L⦠⢠U â¬*[h,0,1] T â â¦G, L⦠⢠âU.T ![a, h]. + âU. â¦G,L⦠⢠U ![a,h] â + âT. â¦G,L⦠⢠T ![a,h] â â¦G,L⦠⢠U â¬*[h,0,1] T â â¦G,L⦠⢠âU.T ![a,h]. #a #h #G #L #U #HU #T #HT * /2 width=3 by cnv_cast/ qed. (* Inversion lemmas with t-bound rt-equivalence for terms *******************) lemma cnv_inv_appl_cpes (a) (h) (G) (L): - âV,T. â¦G, L⦠⢠âV.T ![a, h] â - âân,p,W,U. yinj n < a & â¦G, L⦠⢠V ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠V â¬*[h,1,0] W & â¦G, L⦠⢠T â¡*[n, h] â{p}W.U. + âV,T. â¦G,L⦠⢠âV.T ![a,h] â + âân,p,W,U. yinj n < a & â¦G,L⦠⢠V ![a,h] & â¦G,L⦠⢠T ![a,h] & + â¦G,L⦠⢠V â¬*[h,1,0] W & â¦G,L⦠⢠T â¡*[n,h] â{p}W.U. #a #h #G #L #V #T #H elim (cnv_inv_appl ⦠H) -H #n #p #W #U #Hn #HV #HT #HVW #HTU /3 width=7 by cpms_div, ex5_4_intro/ qed-. lemma cnv_inv_appl_pred_cpes (a) (h) (G) (L): - âV,T. â¦G, L⦠⢠âV.T ![yinj a, h] â - ââp,W,U. â¦G, L⦠⢠V ![a, h] & â¦G, L⦠⢠T ![a, h] & - â¦G, L⦠⢠V â¬*[h,1,0] W & â¦G, L⦠⢠T â¡*[âa, h] â{p}W.U. + âV,T. â¦G,L⦠⢠âV.T ![yinj a,h] â + ââp,W,U. â¦G,L⦠⢠V ![a,h] & â¦G,L⦠⢠T ![a,h] & + â¦G,L⦠⢠V â¬*[h,1,0] W & â¦G,L⦠⢠T â¡*[âa,h] â{p}W.U. #a #h #G #L #V #T #H elim (cnv_inv_appl_pred ⦠H) -H #p #W #U #HV #HT #HVW #HTU /3 width=7 by cpms_div, ex4_3_intro/ qed-. lemma cnv_inv_cast_cpes (a) (h) (G) (L): - âU,T. â¦G, L⦠⢠âU.T ![a, h] â - â§â§ â¦G, L⦠⢠U ![a, h] & â¦G, L⦠⢠T ![a, h] & â¦G, L⦠⢠U â¬*[h,0,1] T. + âU,T. â¦G,L⦠⢠âU.T ![a,h] â + â§â§ â¦G,L⦠⢠U ![a,h] & â¦G,L⦠⢠T ![a,h] & â¦G,L⦠⢠U â¬*[h,0,1] T. #a #h #G #L #U #T #H elim (cnv_inv_cast ⦠H) -H /3 width=3 by cpms_div, and3_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma index f0eb6355b..141a733c2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma @@ -24,7 +24,7 @@ include "basic_2/dynamic/cnv_preserve_sub.ma". (* Sub diamond propery with t-bound rt-transition for terms *****************) fact cnv_cpm_conf_lpr_atom_atom_aux (h) (G) (L1) (L2) (I): - ââT. â¦G,L1⦠⢠âª{I} â¡*[0,h] T & â¦G, L2⦠⢠âª{I} â¡*[O,h] T. + ââT. â¦G,L1⦠⢠âª{I} â¡*[0,h] T & â¦G,L2⦠⢠âª{I} â¡*[O,h] T. /2 width=3 by ex2_intro/ qed-. fact cnv_cpm_conf_lpr_atom_ess_aux (h) (G) (L1) (L2) (s): @@ -388,8 +388,8 @@ qed-. fact cnv_cpm_conf_lpr_aux (a) (h): âG0,L0,T0. - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpm_trans_lpr a h G1 L1 T1) â - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpm_trans_lpr a h G1 L1 T1) â + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â âG1,L1,T1. G0 = G1 â L0 = L1 â T0 = T1 â IH_cnv_cpm_conf_lpr a h G1 L1 T1. #a #h #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]] [ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #HX1 #n2 #X2 #HX2 #L1 #HL1 #L2 #HL2 destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma index d1f41252b..c10cdba20 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma @@ -23,8 +23,8 @@ include "basic_2/dynamic/cnv_fsb.ma". (* Inversion lemmas with restricted rt-transition for terms *****************) lemma cnv_cpr_tdeq_fwd_refl (a) (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡[h] T2 â T1 â T2 â - â¦G, L⦠⢠T1 ![a,h] â T1 = T2. + âT1,T2. â¦G,L⦠⢠T1 â¡[h] T2 â T1 â T2 â + â¦G,L⦠⢠T1 ![a,h] â T1 = T2. #a #h #G #L #T1 #T2 #H @(cpr_ind ⦠H) -G -L -T1 -T2 [ // | #G #K #V1 #V2 #X2 #_ #_ #_ #H1 #_ -a -G -K -V1 -V2 @@ -55,9 +55,9 @@ lemma cnv_cpr_tdeq_fwd_refl (a) (h) (G) (L): qed-. lemma cpm_tdeq_inv_bind_sn (a) (h) (n) (p) (I) (G) (L): - âV,T1. â¦G, L⦠⢠â{p,I}V.T1 ![a,h] â - âX. â¦G, L⦠⢠â{p,I}V.T1 â¡[n,h] X â â{p,I}V.T1 â X â - ââT2. â¦G,L⦠⢠V ![a,h] & â¦G, L.â{I}V⦠⢠T1 ![a,h] & â¦G, L.â{I}V⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = â{p,I}V.T2. + âV,T1. â¦G,L⦠⢠â{p,I}V.T1 ![a,h] â + âX. â¦G,L⦠⢠â{p,I}V.T1 â¡[n,h] X â â{p,I}V.T1 â X â + ââT2. â¦G,L⦠⢠V ![a,h] & â¦G,L.â{I}V⦠⢠T1 ![a,h] & â¦G,L.â{I}V⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = â{p,I}V.T2. #a #h #n #p #I #G #L #V #T1 #H0 #X #H1 #H2 elim (cpm_inv_bind1 ⦠H1) -H1 * [ #XV #T2 #HXV #HT12 #H destruct @@ -75,8 +75,8 @@ qed-. lemma cpm_tdeq_inv_appl_sn (a) (h) (n) (G) (L): âV,T1. â¦G,L⦠⢠âV.T1 ![a,h] â âX. â¦G,L⦠⢠âV.T1 â¡[n,h] X â âV.T1 â X â - ââm,q,W,U1,T2. yinj m < a & â¦G,L⦠⢠V ![a,h] & â¦G, L⦠⢠V â¡*[1,h] W & â¦G, L⦠⢠T1 â¡*[m,h] â{q}W.U1 - & â¦G,Lâ¦â¢ T1 ![a,h] & â¦G, L⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = âV.T2. + ââm,q,W,U1,T2. yinj m < a & â¦G,L⦠⢠V ![a,h] & â¦G,L⦠⢠V â¡*[1,h] W & â¦G,L⦠⢠T1 â¡*[m,h] â{q}W.U1 + & â¦G,Lâ¦â¢ T1 ![a,h] & â¦G,L⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = âV.T2. #a #h #n #G #L #V #T1 #H0 #X #H1 #H2 elim (cpm_inv_appl1 ⦠H1) -H1 * [ #XV #T2 #HXV #HT12 #H destruct @@ -92,11 +92,11 @@ elim (cpm_inv_appl1 ⦠H1) -H1 * qed-. lemma cpm_tdeq_inv_cast_sn (a) (h) (n) (G) (L): - âU1,T1. â¦G, L⦠⢠âU1.T1 ![a,h] â - âX. â¦G, L⦠⢠âU1.T1 â¡[n,h] X â âU1.T1 â X â + âU1,T1. â¦G,L⦠⢠âU1.T1 ![a,h] â + âX. â¦G,L⦠⢠âU1.T1 â¡[n,h] X â âU1.T1 â X â ââU0,U2,T2. â¦G,L⦠⢠U1 â¡*[h] U0 & â¦G,L⦠⢠T1 â¡*[1,h] U0 - & â¦G, L⦠⢠U1 ![a,h] & â¦G, L⦠⢠U1 â¡[n,h] U2 & U1 â U2 - & â¦G, L⦠⢠T1 ![a,h] & â¦G, L⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = âU2.T2. + & â¦G,L⦠⢠U1 ![a,h] & â¦G,L⦠⢠U1 â¡[n,h] U2 & U1 â U2 + & â¦G,L⦠⢠T1 ![a,h] & â¦G,L⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = âU2.T2. #a #h #n #G #L #U1 #T1 #H0 #X #H1 #H2 elim (cpm_inv_cast1 ⦠H1) -H1 [ * || * ] [ #U2 #T2 #HU12 #HT12 #H destruct @@ -115,9 +115,9 @@ elim (cpm_inv_cast1 ⦠H1) -H1 [ * || * ] qed-. lemma cpm_tdeq_inv_bind_dx (a) (h) (n) (p) (I) (G) (L): - âX. â¦G, L⦠⢠X ![a,h] â - âV,T2. â¦G, L⦠⢠X â¡[n,h] â{p,I}V.T2 â X â â{p,I}V.T2 â - ââT1. â¦G,L⦠⢠V ![a,h] & â¦G, L.â{I}V⦠⢠T1 ![a,h] & â¦G, L.â{I}V⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = â{p,I}V.T1. + âX. â¦G,L⦠⢠X ![a,h] â + âV,T2. â¦G,L⦠⢠X â¡[n,h] â{p,I}V.T2 â X â â{p,I}V.T2 â + ââT1. â¦G,L⦠⢠V ![a,h] & â¦G,L.â{I}V⦠⢠T1 ![a,h] & â¦G,L.â{I}V⦠⢠T1 â¡[n,h] T2 & T1 â T2 & X = â{p,I}V.T1. #a #h #n #p #I #G #L #X #H0 #V #T2 #H1 #H2 elim (tdeq_inv_pair2 ⦠H2) #V0 #T1 #_ #_ #H destruct elim (cpm_tdeq_inv_bind_sn ⦠H0 ⦠H1 H2) -H0 -H1 -H2 #T0 #HV #HT1 #H1T12 #H2T12 #H destruct @@ -134,14 +134,14 @@ lemma cpm_tdeq_ind (a) (h) (n) (G) (Q:relation3 â¦): Q (L.â{I}V) T1 T2 â Q L (â{p,I}V.T1) (â{p,I}V.T2) ) â (âm. yinj m < a â - âL,V. â¦G,L⦠⢠V ![a,h] â âW. â¦G, L⦠⢠V â¡*[1,h] W â - âp,T1,U1. â¦G, L⦠⢠T1 â¡*[m,h] â{p}W.U1 â â¦G,Lâ¦â¢ T1 ![a,h] â - âT2. â¦G, L⦠⢠T1 â¡[n,h] T2 â T1 â T2 â + âL,V. â¦G,L⦠⢠V ![a,h] â âW. â¦G,L⦠⢠V â¡*[1,h] W â + âp,T1,U1. â¦G,L⦠⢠T1 â¡*[m,h] â{p}W.U1 â â¦G,Lâ¦â¢ T1 ![a,h] â + âT2. â¦G,L⦠⢠T1 â¡[n,h] T2 â T1 â T2 â Q L T1 T2 â Q L (âV.T1) (âV.T2) ) â (âL,U0,U1,T1. â¦G,L⦠⢠U1 â¡*[h] U0 â â¦G,L⦠⢠T1 â¡*[1,h] U0 â - âU2. â¦G, L⦠⢠U1 ![a,h] â â¦G, L⦠⢠U1 â¡[n,h] U2 â U1 â U2 â - âT2. â¦G, L⦠⢠T1 ![a,h] â â¦G, L⦠⢠T1 â¡[n,h] T2 â T1 â T2 â + âU2. â¦G,L⦠⢠U1 ![a,h] â â¦G,L⦠⢠U1 â¡[n,h] U2 â U1 â U2 â + âT2. â¦G,L⦠⢠T1 ![a,h] â â¦G,L⦠⢠T1 â¡[n,h] T2 â T1 â T2 â Q L U1 U2 â Q L T1 T2 â Q L (âU1.T1) (âU2.T2) ) â âL,T1. â¦G,L⦠⢠T1 ![a,h] â @@ -170,9 +170,9 @@ qed-. (* Advanced properties with restricted rt-transition for terms **************) lemma cpm_tdeq_free (a) (h) (n) (G) (L): - âT1. â¦G, L⦠⢠T1 ![a,h] â - âT2. â¦G, L⦠⢠T1 â¡[n,h] T2 â T1 â T2 â - âF,K. â¦F, K⦠⢠T1 â¡[n,h] T2. + âT1. â¦G,L⦠⢠T1 ![a,h] â + âT2. â¦G,L⦠⢠T1 â¡[n,h] T2 â T1 â T2 â + âF,K. â¦F,K⦠⢠T1 â¡[n,h] T2. #a #h #n #G #L #T1 #H0 #T2 #H1 #H2 @(cpm_tdeq_ind ⦠H0 ⦠H1 H2) -L -T1 -T2 [ #I #L #H #F #K destruct // @@ -189,9 +189,9 @@ qed-. (* Advanced inversion lemmas with restricted rt-transition for terms ********) lemma cpm_tdeq_inv_bind_sn_void (a) (h) (n) (p) (I) (G) (L): - âV,T1. â¦G, L⦠⢠â{p,I}V.T1 ![a,h] â - âX. â¦G, L⦠⢠â{p,I}V.T1 â¡[n,h] X â â{p,I}V.T1 â X â - ââT2. â¦G,L⦠⢠V ![a,h] & â¦G, L.â{I}V⦠⢠T1 ![a,h] & â¦G, L.â§â¦ ⢠T1 â¡[n,h] T2 & T1 â T2 & X = â{p,I}V.T2. + âV,T1. â¦G,L⦠⢠â{p,I}V.T1 ![a,h] â + âX. â¦G,L⦠⢠â{p,I}V.T1 â¡[n,h] X â â{p,I}V.T1 â X â + ââT2. â¦G,L⦠⢠V ![a,h] & â¦G,L.â{I}V⦠⢠T1 ![a,h] & â¦G,L.â§â¦ ⢠T1 â¡[n,h] T2 & T1 â T2 & X = â{p,I}V.T2. #a #h #n #p #I #G #L #V #T1 #H0 #X #H1 #H2 elim (cpm_tdeq_inv_bind_sn ⦠H0 ⦠H1 H2) -H0 -H1 -H2 #T2 #HV #HT1 #H1T12 #H2T12 #H /3 width=5 by ex5_intro, cpm_tdeq_free/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma index 8ea98673b..3dbea60d6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma @@ -18,16 +18,16 @@ include "basic_2/dynamic/cnv_cpm_tdeq.ma". (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************) definition IH_cnv_cpm_tdeq_conf_lpr (a) (h): relation3 genv lenv term â - λG,L0,T0. â¦G, L0⦠⢠T0 ![a,h] â - ân1,T1. â¦G, L0⦠⢠T0 â¡[n1,h] T1 â T0 â T1 â - ân2,T2. â¦G, L0⦠⢠T0 â¡[n2,h] T2 â T0 â T2 â - âL1. â¦G, L0⦠⢠â¡[h] L1 â âL2. â¦G, L0⦠⢠â¡[h] L2 â - ââT. â¦G, L1⦠⢠T1 â¡[n2-n1,h] T & T1 â T & â¦G, L2⦠⢠T2 â¡[n1-n2,h] T & T2 â T. + λG,L0,T0. â¦G,L0⦠⢠T0 ![a,h] â + ân1,T1. â¦G,L0⦠⢠T0 â¡[n1,h] T1 â T0 â T1 â + ân2,T2. â¦G,L0⦠⢠T0 â¡[n2,h] T2 â T0 â T2 â + âL1. â¦G,L0⦠⢠â¡[h] L1 â âL2. â¦G,L0⦠⢠â¡[h] L2 â + ââT. â¦G,L1⦠⢠T1 â¡[n2-n1,h] T & T1 â T & â¦G,L2⦠⢠T2 â¡[n1-n2,h] T & T2 â T. (* Diamond propery with restricted rt-transition for terms ******************) fact cnv_cpm_tdeq_conf_lpr_atom_atom_aux (h) (G0) (L1) (L2) (I): - ââT. â¦G0,L1⦠⢠âª{I} â¡[h] T & âª{I} â T & â¦G0, L2⦠⢠âª{I} â¡[h] T & âª{I} â T. + ââT. â¦G0,L1⦠⢠âª{I} â¡[h] T & âª{I} â T & â¦G0,L2⦠⢠âª{I} â¡[h] T & âª{I} â T. #h #G0 #L1 #L2 #I /2 width=5 by ex4_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma index 3a3919fc4..44b8fe219 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma @@ -18,7 +18,7 @@ include "basic_2/dynamic/cnv_cpm_tdeq.ma". (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************) definition IH_cnv_cpm_tdeq_cpm_trans (a) (h): relation3 genv lenv term â - λG,L,T1. â¦G, L⦠⢠T1 ![a,h] â + λG,L,T1. â¦G,L⦠⢠T1 ![a,h] â ân1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â T1 â T â ân2,T2. â¦G,L⦠⢠T â¡[n2,h] T2 â ââT0. â¦G,L⦠⢠T1 â¡[n2,h] T0 & â¦G,L⦠⢠T0 â¡[n1,h] T2 & T0 â T2. @@ -26,7 +26,7 @@ definition IH_cnv_cpm_tdeq_cpm_trans (a) (h): relation3 genv lenv term â (* Transitive properties restricted rt-transition for terms *****************) fact cnv_cpm_tdeq_cpm_trans_sub (a) (h) (G0) (L0) (T0): - (âG,L,T. â¦G0, L0, T0⦠>[h] â¦G, L, T⦠â IH_cnv_cpm_trans_lpr a h G L T) â + (âG,L,T. â¦G0,L0,T0⦠>[h] â¦G,L,T⦠â IH_cnv_cpm_trans_lpr a h G L T) â (âG,L,T. â¦G0,L0,T0⦠â+ â¦G,L,T⦠â IH_cnv_cpm_tdeq_cpm_trans a h G L T) â âG,L,T1. G0 = G â L0 = L â T0 = T1 â IH_cnv_cpm_tdeq_cpm_trans a h G L T1. #a #h #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]] @@ -89,7 +89,7 @@ fact cnv_cpm_tdeq_cpm_trans_sub (a) (h) (G0) (L0) (T0): qed-. fact cnv_cpm_tdeq_cpm_trans_aux (a) (h) (G0) (L0) (T0): - (âG,L,T. â¦G0, L0, T0⦠>[h] â¦G, L, T⦠â IH_cnv_cpm_trans_lpr a h G L T) â + (âG,L,T. â¦G0,L0,T0⦠>[h] â¦G,L,T⦠â IH_cnv_cpm_trans_lpr a h G L T) â IH_cnv_cpm_tdeq_cpm_trans a h G0 L0 T0. #a #h #G0 #L0 #T0 @(fqup_wf_ind (â) ⦠G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH #IH0 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 8c720f4ca..21f0e500c 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 @@ -25,8 +25,8 @@ include "basic_2/dynamic/lsubv_cnv.ma". fact cnv_cpm_trans_lpr_aux (a) (h): âG0,L0,T0. - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpm_trans_lpr a h G1 L1 T1) â + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦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 #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ] [ #s #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #_ destruct -IH2 -IH1 -H1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma index d1d60870d..11d2b3652 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma @@ -78,7 +78,7 @@ fact cnv_cpms_conf_lpr_step_tdneq_sub (a) (h) (G0) (L0) (T0) (m11) (m12) (m21) ( lapply (cnv_cpm_trans_lpr_aux ⦠IH1 IH2 ⦠H1X01 ⦠L0 ?) // #HX1 lapply (cnv_cpm_trans_lpr_aux ⦠IH1 IH2 ⦠H1X02 ⦠L0 ?) // #HX2 elim (cnv_cpm_conf_lpr_aux ⦠IH2 IH1 ⦠H1X01 ⦠H1X02 ⦠L0 ⦠L0) // #Z0 #HXZ10 #HXZ20 -cut (â¦G0,L0,T0⦠>[h] â¦G0,L0,X2â¦) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *) +cut (â¦G0, L0, T0⦠>[h] â¦G0, L0, X2â¦) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *) lapply (fpbg_fpbs_trans ?? G0 ? L0 ? Z0 ? ⦠H1fpbg) [ /2 width=2 by cpms_fwd_fpbs/ ] #H2fpbg lapply (cnv_cpms_trans_lpr_sub ⦠IH2 ⦠HXZ20 ⦠L0 ?) // #HZ0 elim (IH1 ⦠HXT2 ⦠HXZ20 ⦠L2 ⦠L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HXT2 -HXZ20 #Z2 #HTZ2 #HZ02 @@ -135,7 +135,7 @@ fact cnv_cpms_conf_lpr_tdneq_tdneq_aux (a) (h) (G0) (L0) (T0) (m11) (m12) (m21) lapply (cnv_cpm_trans_lpr_aux ⦠IH1 IH2 ⦠HX01 ⦠L0 ?) // #HX1 lapply (cnv_cpm_trans_lpr_aux ⦠IH1 IH2 ⦠HX02 ⦠L0 ?) // #HX2 elim (cnv_cpm_conf_lpr_aux ⦠IH2 IH1 ⦠HX01 ⦠HX02 ⦠L0 ⦠L0) // #Z0 #HXZ10 #HXZ20 -cut (â¦G0,L0,T0⦠>[h] â¦G0,L0,X1â¦) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *) +cut (â¦G0, L0, T0⦠>[h] â¦G0, L0, X1â¦) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *) lapply (fpbg_fpbs_trans ?? G0 ? L0 ? Z0 ? ⦠H1fpbg) [ /2 width=2 by cpms_fwd_fpbs/ ] #H2fpbg lapply (cnv_cpms_trans_lpr_sub ⦠IH2 ⦠HXZ10 ⦠L0 ?) // #HZ0 elim (IH1 ⦠HXT1 ⦠HXZ10 ⦠L1 ⦠L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HXT1 -HXZ10 #Z1 #HTZ1 #HZ01 diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma index 44790ef38..8394bfa8d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma @@ -19,10 +19,10 @@ include "basic_2/dynamic/cnv_cpm_tdeq_trans.ma". (* Properties with restricted rt-computation for terms **********************) fact cpms_tdneq_fwd_step_sn_aux (a) (h) (n) (G) (L) (T1): - âT2. â¦G, L⦠⢠T1 â¡*[n,h] T2 â â¦G, L⦠⢠T1 ![a,h] â (T1 â T2 â â¥) â + âT2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â â¦G,L⦠⢠T1 ![a,h] â (T1 â T2 â â¥) â (âG0,L0,T0. â¦G,L,T1⦠>[h] â¦G0,L0,T0⦠â IH_cnv_cpms_conf_lpr a h G0 L0 T0) â (âG0,L0,T0. â¦G,L,T1⦠>[h] â¦G0,L0,T0⦠â IH_cnv_cpm_trans_lpr a h G0 L0 T0) â - âân1,n2,T0. â¦G, L⦠⢠T1 â¡[n1,h] T0 & T1 â T0 â ⥠& â¦G, L⦠⢠T0 â¡*[n2,h] T2 & n1+n2 = n. + âân1,n2,T0. â¦G,L⦠⢠T1 â¡[n1,h] T0 & T1 â T0 â ⥠& â¦G,L⦠⢠T0 â¡*[n2,h] T2 & n1+n2 = n. #a #h #n #G #L #T1 #T2 #H @(cpms_ind_sn ⦠H) -n -T1 [ #_ #H2T2 elim H2T2 -H2T2 // @@ -43,9 +43,9 @@ fact cpms_tdneq_fwd_step_sn_aux (a) (h) (n) (G) (L) (T1): qed-. fact cpms_tdeq_ind_sn (a) (h) (G) (L) (T2) (Q:relation2 â¦): - (â¦G, L⦠⢠T2 ![a,h] â Q 0 T2) â - (ân1,n2,T1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â â¦G, L⦠⢠T1 ![a,h] â T1 â T â â¦G, L⦠⢠T â¡*[n2,h] T2 â â¦G, L⦠⢠T ![a,h] â T â T2 â Q n2 T â Q (n1+n2) T1) â - ân,T1. â¦G, L⦠⢠T1 â¡*[n,h] T2 â â¦G, L⦠⢠T1 ![a,h] â T1 â T2 â + (â¦G,L⦠⢠T2 ![a,h] â Q 0 T2) â + (ân1,n2,T1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â â¦G,L⦠⢠T1 ![a,h] â T1 â T â â¦G,L⦠⢠T â¡*[n2,h] T2 â â¦G,L⦠⢠T ![a,h] â T â T2 â Q n2 T â Q (n1+n2) T1) â + ân,T1. â¦G,L⦠⢠T1 â¡*[n,h] T2 â â¦G,L⦠⢠T1 ![a,h] â T1 â T2 â (âG0,L0,T0. â¦G,L,T1⦠>[h] â¦G0,L0,T0⦠â IH_cnv_cpms_conf_lpr a h G0 L0 T0) â (âG0,L0,T0. â¦G,L,T1⦠>[h] â¦G0,L0,T0⦠â IH_cnv_cpm_trans_lpr a h G0 L0 T0) â Q n T1. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma index 7bcc3f1fc..9483346c4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma @@ -20,8 +20,8 @@ include "basic_2/dynamic/cnv.ma". (* Advanced dproperties *****************************************************) (* Basic_2A1: uses: snv_lref *) -lemma cnv_lref_drops (a) (h) (G): âI,K,V,i,L. â¦G, K⦠⢠V ![a, h] â - â¬*[i] L â K.â{I}V â â¦G, L⦠⢠#i ![a, h]. +lemma cnv_lref_drops (a) (h) (G): âI,K,V,i,L. â¦G,K⦠⢠V ![a,h] â + â¬*[i] L â K.â{I}V â â¦G,L⦠⢠#i ![a,h]. #a #h #G #I #K #V #i elim i -i [ #L #HV #H lapply (drops_fwd_isid ⦠H ?) -H // #H destruct @@ -36,8 +36,8 @@ qed. (* Basic_2A1: uses: snv_inv_lref *) lemma cnv_inv_lref_drops (a) (h) (G): - âi,L. â¦G, L⦠⢠#i ![a, h] â - ââI,K,V. â¬*[i] L â K.â{I}V & â¦G, K⦠⢠V ![a, h]. + âi,L. â¦G,L⦠⢠#i ![a,h] â + ââI,K,V. â¬*[i] L â K.â{I}V & â¦G,K⦠⢠V ![a,h]. #a #h #G #i elim i -i [ #L #H elim (cnv_inv_zero ⦠H) -H #I #K #V #HV #H destruct @@ -50,15 +50,15 @@ lemma cnv_inv_lref_drops (a) (h) (G): qed-. lemma cnv_inv_lref_pair (a) (h) (G): - âi,L. â¦G, L⦠⢠#i ![a, h] â - âI,K,V. â¬*[i] L â K.â{I}V â â¦G, K⦠⢠V ![a, h]. + âi,L. â¦G,L⦠⢠#i ![a,h] â + âI,K,V. â¬*[i] L â K.â{I}V â â¦G,K⦠⢠V ![a,h]. #a #h #G #i #L #H #I #K #V #HLK elim (cnv_inv_lref_drops ⦠H) -H #Z #Y #X #HLY #HX lapply (drops_mono ⦠HLY ⦠HLK) -L #H destruct // qed-. lemma cnv_inv_lref_atom (a) (h) (b) (G): - âi,L. â¦G, L⦠⢠#i ![a, h] â + âi,L. â¦G,L⦠⢠#i ![a,h] â â¬*[b,ðâ´iâµ] L â â â â¥. #a #h #b #G #i #L #H #Hi elim (cnv_inv_lref_drops ⦠H) -H #Z #Y #X #HLY #_ @@ -67,7 +67,7 @@ lapply (drops_mono ⦠HLY ⦠Hi) -L #H destruct qed-. lemma cnv_inv_lref_unit (a) (h) (G): - âi,L. â¦G, L⦠⢠#i ![a, h] â + âi,L. â¦G,L⦠⢠#i ![a,h] â âI,K. â¬*[i] L â K.â¤{I} â â¥. #a #h #G #i #L #H #I #K #HLK elim (cnv_inv_lref_drops ⦠H) -H #Z #Y #X #HLY #_ diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fqus.ma index 113ffe922..678495b8e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fqus.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fqus.ma @@ -20,8 +20,8 @@ include "basic_2/dynamic/cnv_drops.ma". (* Properties with supclosure ***********************************************) (* Basic_2A1: uses: snv_fqu_conf *) -lemma cnv_fqu_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠T1 ![a, h] â â¦G2, L2⦠⢠T2 ![a, h]. +lemma cnv_fqu_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠T1 ![a,h] â â¦G2,L2⦠⢠T2 ![a,h]. #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ #I1 #G1 #L1 #V1 #H elim (cnv_inv_zero ⦠H) -H #I2 #L2 #V2 #HV2 #H destruct // @@ -43,22 +43,22 @@ lemma cnv_fqu_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2 qed-. (* Basic_2A1: uses: snv_fquq_conf *) -lemma cnv_fquq_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮ â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠T1 ![a, h] â â¦G2, L2⦠⢠T2 ![a, h]. +lemma cnv_fquq_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮ â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠T1 ![a,h] â â¦G2,L2⦠⢠T2 ![a,h]. #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H [|*] /2 width=5 by cnv_fqu_conf/ qed-. (* Basic_2A1: uses: snv_fqup_conf *) -lemma cnv_fqup_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+ â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠T1 ![a, h] â â¦G2, L2⦠⢠T2 ![a, h]. +lemma cnv_fqup_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+ â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠T1 ![a,h] â â¦G2,L2⦠⢠T2 ![a,h]. #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 /3 width=5 by fqup_strap1, cnv_fqu_conf/ qed-. (* Basic_2A1: uses: snv_fqus_conf *) -lemma cnv_fqus_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â* â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠T1 ![a, h] â â¦G2, L2⦠⢠T2 ![a, h]. +lemma cnv_fqus_conf (a) (h): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â* â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠T1 ![a,h] â â¦G2,L2⦠⢠T2 ![a,h]. #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqus_inv_fqup ⦠H) -H [|*] /2 width=5 by cnv_fqup_conf/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma index 763faf1d9..bf6732dab 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma @@ -20,13 +20,13 @@ include "basic_2/dynamic/cnv_aaa.ma". (* Forward lemmas with strongly rst-normalizing closures ********************) (* Basic_2A1: uses: snv_fwd_fsb *) -lemma cnv_fwd_fsb (a) (h): âG,L,T. â¦G, L⦠⢠T ![a, h] â â¥[h] ðâ¦G, L, Tâ¦. +lemma cnv_fwd_fsb (a) (h): âG,L,T. â¦G,L⦠⢠T ![a,h] â â¥[h] ðâ¦G,L,Tâ¦. #a #h #G #L #T #H elim (cnv_fwd_aaa ⦠H) -H /2 width=2 by aaa_fsb/ qed-. (* Forward lemmas with strongly rt-normalizing terms ************************) -lemma cnv_fwd_csx (a) (h): âG,L,T. â¦G,L⦠⢠T ![a,h] â â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma cnv_fwd_csx (a) (h): âG,L,T. â¦G,L⦠⢠T ![a,h] â â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. #a #h #G #L #T #H /3 width=2 by cnv_fwd_fsb, fsb_inv_csx/ qed-. @@ -34,5 +34,5 @@ qed-. (* Inversion lemmas with proper parallel rst-computation for closures *******) lemma cnv_fpbg_refl_false (a) (h) (G) (L) (T): - â¦G, L⦠⢠T ![a,h] â â¦G, L, T⦠>[h] â¦G, L, T⦠â â¥. + â¦G,L⦠⢠T ![a,h] â â¦G,L,T⦠>[h] â¦G,L,T⦠â â¥. /3 width=7 by cnv_fwd_fsb, fsb_fpbg_refl_false/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma index ce9c46f7e..2eedc2889 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma @@ -20,39 +20,39 @@ include "basic_2/dynamic/cnv.ma". (* Inductive premises for the preservation results **************************) definition IH_cnv_cpm_trans_lpr (a) (h): relation3 genv lenv term â - λG,L1,T1. â¦G, L1⦠⢠T1 ![a,h] â - ân,T2. â¦G, L1⦠⢠T1 â¡[n,h] T2 â - âL2. â¦G, L1⦠⢠â¡[h] L2 â â¦G, L2⦠⢠T2 ![a,h]. + λG,L1,T1. â¦G,L1⦠⢠T1 ![a,h] â + ân,T2. â¦G,L1⦠⢠T1 â¡[n,h] T2 â + âL2. â¦G,L1⦠⢠â¡[h] L2 â â¦G,L2⦠⢠T2 ![a,h]. definition IH_cnv_cpms_trans_lpr (a) (h): relation3 genv lenv term â - λG,L1,T1. â¦G, L1⦠⢠T1 ![a,h] â - ân,T2. â¦G, L1⦠⢠T1 â¡*[n,h] T2 â - âL2. â¦G, L1⦠⢠â¡[h] L2 â â¦G, L2⦠⢠T2 ![a,h]. + λG,L1,T1. â¦G,L1⦠⢠T1 ![a,h] â + ân,T2. â¦G,L1⦠⢠T1 â¡*[n,h] T2 â + âL2. â¦G,L1⦠⢠â¡[h] L2 â â¦G,L2⦠⢠T2 ![a,h]. definition IH_cnv_cpm_conf_lpr (a) (h): relation3 genv lenv term â - λG,L0,T0. â¦G, L0⦠⢠T0 ![a,h] â - ân1,T1. â¦G, L0⦠⢠T0 â¡[n1,h] T1 â ân2,T2. â¦G, L0⦠⢠T0 â¡[n2,h] T2 â - âL1. â¦G, L0⦠⢠â¡[h] L1 â âL2. â¦G, L0⦠⢠â¡[h] L2 â - ââT. â¦G, L1⦠⢠T1 â¡*[n2-n1,h] T & â¦G, L2⦠⢠T2 â¡*[n1-n2,h] T. + λG,L0,T0. â¦G,L0⦠⢠T0 ![a,h] â + ân1,T1. â¦G,L0⦠⢠T0 â¡[n1,h] T1 â ân2,T2. â¦G,L0⦠⢠T0 â¡[n2,h] T2 â + âL1. â¦G,L0⦠⢠â¡[h] L1 â âL2. â¦G,L0⦠⢠â¡[h] L2 â + ââT. â¦G,L1⦠⢠T1 â¡*[n2-n1,h] T & â¦G,L2⦠⢠T2 â¡*[n1-n2,h] T. definition IH_cnv_cpms_strip_lpr (a) (h): relation3 genv lenv term â - λG,L0,T0. â¦G, L0⦠⢠T0 ![a,h] â - ân1,T1. â¦G, L0⦠⢠T0 â¡*[n1,h] T1 â ân2,T2. â¦G, L0⦠⢠T0 â¡[n2,h] T2 â - âL1. â¦G, L0⦠⢠â¡[h] L1 â âL2. â¦G, L0⦠⢠â¡[h] L2 â - ââT. â¦G, L1⦠⢠T1 â¡*[n2-n1,h] T & â¦G, L2⦠⢠T2 â¡*[n1-n2,h] T. + λG,L0,T0. â¦G,L0⦠⢠T0 ![a,h] â + ân1,T1. â¦G,L0⦠⢠T0 â¡*[n1,h] T1 â ân2,T2. â¦G,L0⦠⢠T0 â¡[n2,h] T2 â + âL1. â¦G,L0⦠⢠â¡[h] L1 â âL2. â¦G,L0⦠⢠â¡[h] L2 â + ââT. â¦G,L1⦠⢠T1 â¡*[n2-n1,h] T & â¦G,L2⦠⢠T2 â¡*[n1-n2,h] T. definition IH_cnv_cpms_conf_lpr (a) (h): relation3 genv lenv term â - λG,L0,T0. â¦G, L0⦠⢠T0 ![a,h] â - ân1,T1. â¦G, L0⦠⢠T0 â¡*[n1,h] T1 â ân2,T2. â¦G, L0⦠⢠T0 â¡*[n2,h] T2 â - âL1. â¦G, L0⦠⢠â¡[h] L1 â âL2. â¦G, L0⦠⢠â¡[h] L2 â - ââT. â¦G, L1⦠⢠T1 â¡*[n2-n1,h] T & â¦G, L2⦠⢠T2 â¡*[n1-n2,h] T. + λG,L0,T0. â¦G,L0⦠⢠T0 ![a,h] â + ân1,T1. â¦G,L0⦠⢠T0 â¡*[n1,h] T1 â ân2,T2. â¦G,L0⦠⢠T0 â¡*[n2,h] T2 â + âL1. â¦G,L0⦠⢠â¡[h] L1 â âL2. â¦G,L0⦠⢠â¡[h] L2 â + ââT. â¦G,L1⦠⢠T1 â¡*[n2-n1,h] T & â¦G,L2⦠⢠T2 â¡*[n1-n2,h] T. (* Auxiliary properties for preservation ************************************) fact cnv_cpms_trans_lpr_sub (a) (h): âG0,L0,T0. - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpm_trans_lpr a h G1 L1 T1) â - âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpms_trans_lpr a h G1 L1 T1. + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpm_trans_lpr a h G1 L1 T1) â + âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpms_trans_lpr a h G1 L1 T1. #a #h #G0 #L0 #T0 #IH #G1 #L1 #T1 #H01 #HT1 #n #T2 #H @(cpms_ind_dx ⦠H) -n -T2 /3 width=7 by fpbg_cpms_trans/ @@ -60,12 +60,12 @@ qed-. fact cnv_cpm_conf_lpr_sub (a) (h): âG0,L0,T0. - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â - âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpm_conf_lpr a h G1 L1 T1. + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â + âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpm_conf_lpr a h G1 L1 T1. /3 width=8 by cpm_cpms/ qed-. fact cnv_cpms_strip_lpr_sub (a) (h): âG0,L0,T0. - (âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â - âG1,L1,T1. â¦G0, L0, T0⦠>[h] â¦G1, L1, T1⦠â IH_cnv_cpms_strip_lpr a h G1 L1 T1. + (âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpms_conf_lpr a h G1 L1 T1) â + âG1,L1,T1. â¦G0,L0,T0⦠>[h] â¦G1,L1,T1⦠â IH_cnv_cpms_strip_lpr a h G1 L1 T1. /3 width=8 by cpm_cpms/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv.ma index 20b5259d0..17a22da58 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv.ma @@ -20,7 +20,7 @@ include "basic_2/dynamic/cnv.ma". inductive lsubv (a) (h) (G): relation lenv â | lsubv_atom: lsubv a h G (â) (â) | lsubv_bind: âI,L1,L2. lsubv a h G L1 L2 â lsubv a h G (L1.â{I}) (L2.â{I}) -| lsubv_beta: âL1,L2,W,V. â¦G, L1⦠⢠âW.V ![a,h] â +| lsubv_beta: âL1,L2,W,V. â¦G,L1⦠⢠âW.V ![a,h] â lsubv a h G L1 L2 â lsubv a h G (L1.ââW.V) (L2.âW) . @@ -45,7 +45,7 @@ lemma lsubv_inv_atom_sn (a) (h) (G): âL2. G ⢠â â«![a,h] L2 â L2 = â. fact lsubv_inv_bind_sn_aux (a) (h) (G): âL1,L2. G ⢠L1 â«![a,h] L2 â âI,K1. L1 = K1.â{I} â â¨â¨ ââK2. G ⢠K1 â«![a,h] K2 & L2 = K2.â{I} - | ââK2,W,V. â¦G, K1⦠⢠âW.V ![a,h] & + | ââK2,W,V. â¦G,K1⦠⢠âW.V ![a,h] & G ⢠K1 â«![a,h] K2 & I = BPair Abbr (âW.V) & L2 = K2.âW. #a #h #G #L1 #L2 * -L1 -L2 @@ -58,7 +58,7 @@ qed-. (* Basic_2A1: uses: lsubsv_inv_pair1 *) lemma lsubv_inv_bind_sn (a) (h) (G): âI,K1,L2. G ⢠K1.â{I} â«![a,h] L2 â â¨â¨ ââK2. G ⢠K1 â«![a,h] K2 & L2 = K2.â{I} - | ââK2,W,V. â¦G, K1⦠⢠âW.V ![a,h] & + | ââK2,W,V. â¦G,K1⦠⢠âW.V ![a,h] & G ⢠K1 â«![a,h] K2 & I = BPair Abbr (âW.V) & L2 = K2.âW. /2 width=3 by lsubv_inv_bind_sn_aux/ qed-. @@ -78,7 +78,7 @@ lemma lsubv_inv_atom2 (a) (h) (G): âL1. G ⢠L1 â«![a,h] â â L1 = â. fact lsubv_inv_bind_dx_aux (a) (h) (G): âL1,L2. G ⢠L1 â«![a,h] L2 â âI,K2. L2 = K2.â{I} â â¨â¨ ââK1. G ⢠K1 â«![a,h] K2 & L1 = K1.â{I} - | ââK1,W,V. â¦G, K1⦠⢠âW.V ![a,h] & + | ââK1,W,V. â¦G,K1⦠⢠âW.V ![a,h] & G ⢠K1 â«![a,h] K2 & I = BPair Abst W & L1 = K1.ââW.V. #a #h #G #L1 #L2 * -L1 -L2 [ #J #K2 #H destruct @@ -90,7 +90,7 @@ qed-. (* Basic_2A1: uses: lsubsv_inv_pair2 *) lemma lsubv_inv_bind_dx (a) (h) (G): âI,L1,K2. G ⢠L1 â«![a,h] K2.â{I} â â¨â¨ ââK1. G ⢠K1 â«![a,h] K2 & L1 = K1.â{I} - | ââK1,W,V. â¦G, K1⦠⢠âW.V ![a,h] & + | ââK1,W,V. â¦G,K1⦠⢠âW.V ![a,h] & G ⢠K1 â«![a,h] K2 & I = BPair Abst W & L1 = K1.ââW.V. /2 width=3 by lsubv_inv_bind_dx_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_cnv.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_cnv.ma index b1782a021..e5c87b05f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_cnv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_cnv.ma @@ -20,8 +20,8 @@ include "basic_2/dynamic/lsubv_cpms.ma". (* Basic_2A1: uses: lsubsv_snv_trans *) lemma lsubv_cnv_trans (a) (h) (G): - âL2,T. â¦G, L2⦠⢠T ![a,h] â - âL1. G ⢠L1 â«![a,h] L2 â â¦G, L1⦠⢠T ![a,h]. + âL2,T. â¦G,L2⦠⢠T ![a,h] â + âL1. G ⢠L1 â«![a,h] L2 â â¦G,L1⦠⢠T ![a,h]. #a #h #G #L2 #T #H elim H -G -L2 -T // [ #I #G #K2 #V #HV #IH #L1 #H elim (lsubv_inv_bind_dx ⦠H) -H * /3 width=1 by cnv_zero/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma index 0d058a673..ebc6fd96d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma @@ -125,7 +125,7 @@ elim (cpms_inv_lref_sn ⦠H2) -H2 * qed-. lemma nta_inv_lref_sn_drops_cnv (a) (h) (G) (L): - âX2, i. â¦G,L⦠⢠#i :[a,h] X2 â + âX2,i. â¦G,L⦠⢠#i :[a,h] X2 â â¨â¨ ââK,V,W,U. â¬*[i] L â K.âV & â¦G,K⦠⢠V :[a,h] W & â¬*[âi] W â U & â¦G,L⦠⢠U â¬*[h] X2 & â¦G,L⦠⢠X2 ![a,h] | ââK,W,U. â¬*[i] L â K. âW & â¦G,K⦠⢠W ![a,h] & â¬*[âi] W â U & â¦G,L⦠⢠U â¬*[h] X2 & â¦G,L⦠⢠X2 ![a,h]. #a #h #G #L #X2 #i #H @@ -241,7 +241,7 @@ elim (cpms_inv_cast1 ⦠H2) -H2 [ * || * ] qed-. (* Basic_1: uses: ty3_gen_lift *) -(* Note: "â¦G,L⦠⢠U2 â¬*[h] X2" can be "â¦G,L⦠⢠X2 â¡*[h] U2" *) +(* Note: "â¦G, L⦠⢠U2 â¬*[h] X2" can be "â¦G, L⦠⢠X2 â¡*[h] U2" *) lemma nta_inv_lifts_sn (a) (h) (G): âL,T2,X2. â¦G,L⦠⢠T2 :[a,h] X2 â âb,f,K. â¬*[b,f] L â K â âT1. â¬*[f] T1 â T2 â diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas.ma b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas.ma index 3c65cbd7c..99d2b7e12 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas.ma @@ -20,7 +20,7 @@ include "basic_2/dynamic/cnv.ma". (* ITERATED NATIVE TYPE ASSIGNMENT FOR TERMS ********************************) definition ntas (a) (h) (n) (G) (L): relation term â λT,U. - ââU0. â¦G,L⦠⢠U ![a,h] & â¦G,L⦠⢠T ![a,h] & â¦G,L⦠⢠U â¡*[h] U0 & â¦G, L⦠⢠T â¡*[n,h] U0. + ââU0. â¦G,L⦠⢠U ![a,h] & â¦G,L⦠⢠T ![a,h] & â¦G,L⦠⢠U â¡*[h] U0 & â¦G,L⦠⢠T â¡*[n,h] U0. interpretation "iterated native type assignment (term)" 'Colon a h n G L T U = (ntas a h n G L T U). diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_etc.ma b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_etc.ma index 0d531af18..f6ffde847 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_etc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_etc.ma @@ -19,13 +19,13 @@ include "basic_2/hod/ntas.ma". (* Advanced properties on native type assignment for terms ******************) -lemma nta_pure_ntas: âh,L,U,W,Y. â¦h, L⦠⢠U :* âW.Y â âT. â¦h, L⦠⢠T : U â - âV. â¦h, L⦠⢠V : W â â¦h, L⦠⢠âV.T : âV.U. +lemma nta_pure_ntas: âh,L,U,W,Y. â¦h,L⦠⢠U :* âW.Y â âT. â¦h,L⦠⢠T : U â + âV. â¦h,L⦠⢠V : W â â¦h,L⦠⢠âV.T : âV.U. #h #L #U #W #Y #H @(ntas_ind_dx ⦠H) -U /2 width=1/ /3 width=2/ qed. -axiom pippo: âh,L,T,W,Y. â¦h, L⦠⢠T :* âW.Y â âU. â¦h, L⦠⢠T : U â - âZ. â¦h, L⦠⢠U :* âW.Z. +axiom pippo: âh,L,T,W,Y. â¦h,L⦠⢠T :* âW.Y â âU. â¦h,L⦠⢠T : U â + âZ. â¦h,L⦠⢠U :* âW.Z. (* REQUIRES SUBJECT CONVERSION #h #L #T #W #Y #H @(ntas_ind_dx ⦠H) -T [ #U #HYU @@ -35,9 +35,9 @@ axiom pippo: âh,L,T,W,Y. â¦h, L⦠⢠T :* âW.Y â âU. â¦h, L⦠⢠T (* Advanced inversion lemmas on native type assignment for terms ************) -fact nta_inv_pure1_aux: âh,L,Z,U. â¦h, L⦠⢠Z : U â âX,Y. Z = âY.X â - ââW,V,T. â¦h, L⦠⢠Y : W & â¦h, L⦠⢠X : V & - L ⢠âY.V â¬* U & â¦h, L⦠⢠V :* âW.T. +fact nta_inv_pure1_aux: âh,L,Z,U. â¦h,L⦠⢠Z : U â âX,Y. Z = âY.X â + ââW,V,T. â¦h,L⦠⢠Y : W & â¦h,L⦠⢠X : V & + L ⢠âY.V â¬* U & â¦h,L⦠⢠V :* âW.T. #h #L #Z #U #H elim H -L -Z -U [ #L #k #X #Y #H destruct | #L #K #V #W #U #i #_ #_ #_ #_ #X #Y #H destruct @@ -54,13 +54,13 @@ fact nta_inv_pure1_aux: âh,L,Z,U. â¦h, L⦠⢠Z : U â âX,Y. Z = âY.X qed. (* Basic_1: was only: ty3_gen_appl *) -lemma nta_inv_pure1: âh,L,Y,X,U. â¦h, L⦠⢠âY.X : U â - ââW,V,T. â¦h, L⦠⢠Y : W & â¦h, L⦠⢠X : V & - L ⢠âY.V â¬* U & â¦h, L⦠⢠V :* âW.T. +lemma nta_inv_pure1: âh,L,Y,X,U. â¦h,L⦠⢠âY.X : U â + ââW,V,T. â¦h,L⦠⢠Y : W & â¦h,L⦠⢠X : V & + L ⢠âY.V â¬* U & â¦h,L⦠⢠V :* âW.T. /2 width=3/ qed-. -axiom nta_inv_appl1: âh,L,Z,Y,X,U. â¦h, L⦠⢠âZ.âY.X : U â - ââW. â¦h, L⦠⢠Z : Y & â¦h, L⦠⢠âY.X : âY.W & +axiom nta_inv_appl1: âh,L,Z,Y,X,U. â¦h,L⦠⢠âZ.âY.X : U â + ââW. â¦h,L⦠⢠Z : Y & â¦h,L⦠⢠âY.X : âY.W & L ⢠âZ.âY.W â¬* U. (* REQUIRES SUBJECT REDUCTION #h #L #Z #Y #X #U #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta.ma b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta.ma index c9ae6d1eb..7374d2df4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta.ma @@ -25,8 +25,8 @@ definition ntas: sh â lenv â relation term â (* Basic eliminators ********************************************************) axiom ntas_ind_dx: âh,L,T2. âR:predicate term. R T2 â - (âT1,T. â¦h, L⦠⢠T1 : T â â¦h, L⦠⢠T :* T2 â R T â R T1) â - âT1. â¦h, L⦠⢠T1 :* T2 â R T1. + (âT1,T. â¦h,L⦠⢠T1 : T â â¦h,L⦠⢠T :* T2 â R T â R T1) â + âT1. â¦h,L⦠⢠T1 :* T2 â R T1. (* #h #L #T2 #R #HT2 #IHT2 #T1 #HT12 @(star_ind_dx ⦠HT2 IHT2 ⦠HT12) // @@ -35,10 +35,10 @@ qed-. (* Basic properties *********************************************************) lemma ntas_strap1: âh,L,T1,T,T2. - â¦h, L⦠⢠T1 :* T â â¦h, L⦠⢠T : T2 â â¦h, L⦠⢠T1 :* T2. + â¦h,L⦠⢠T1 :* T â â¦h,L⦠⢠T : T2 â â¦h,L⦠⢠T1 :* T2. /2 width=3/ qed. lemma ntas_strap2: âh,L,T1,T,T2. - â¦h, L⦠⢠T1 : T â â¦h, L⦠⢠T :* T2 â â¦h, L⦠⢠T1 :* T2. + â¦h,L⦠⢠T1 : T â â¦h,L⦠⢠T :* T2 â â¦h,L⦠⢠T1 :* T2. /2 width=3/ qed. *) diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prediteval_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prediteval_5.ma index db0a4aa6d..b87e86381 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prediteval_5.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prediteval_5.ma @@ -9,6 +9,9 @@ (* \ / *) (* \ / This file is distributed under the terms of the *) (* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) notation "hvbox( ⦠term 46 G, break term 46 L ⦠⢠break term 46 T1 ⥲* [ break term 46 h ] ð ⦠break term 46 T2 ⦠)" diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma index 78cf43d23..931c8168b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma @@ -20,7 +20,7 @@ include "basic_2/rt_computation/cpms.ma". (* Basic_2A1: uses: cpre *) definition cpme (h) (n) (G) (L): relation2 term term â - λT1,T2. â§â§ â¦G, L⦠⢠T1 â¡*[n,h] T2 & â¦G, L⦠⢠â¡[h] ðâ¦T2â¦. + λT1,T2. â§â§ â¦G,L⦠⢠T1 â¡*[n,h] T2 & â¦G,L⦠⢠â¡[h] ðâ¦T2â¦. interpretation "evaluation for t-bound context-sensitive parallel rt-transition (term)" 'PRedEval h n G L T1 T2 = (cpme h n G L T1 T2). diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma index 454ee8312..d1817d6ff 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma @@ -35,15 +35,15 @@ interpretation lemma cpms_ind_sn (h) (G) (L) (T2) (Q:relation2 â¦): Q 0 T2 â - (ân1,n2,T1,T. â¦G, L⦠⢠T1 â¡[n1, h] T â â¦G, L⦠⢠T â¡*[n2, h] T2 â Q n2 T â Q (n1+n2) T1) â - ân,T1. â¦G, L⦠⢠T1 â¡*[n, h] T2 â Q n T1. + (ân1,n2,T1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â â¦G,L⦠⢠T â¡*[n2,h] T2 â Q n2 T â Q (n1+n2) T1) â + ân,T1. â¦G,L⦠⢠T1 â¡*[n,h] T2 â Q n T1. #h #G #L #T2 #Q @ltc_ind_sn_refl // qed-. lemma cpms_ind_dx (h) (G) (L) (T1) (Q:relation2 â¦): Q 0 T1 â - (ân1,n2,T,T2. â¦G, L⦠⢠T1 â¡*[n1, h] T â Q n1 T â â¦G, L⦠⢠T â¡[n2, h] T2 â Q (n1+n2) T2) â - ân,T2. â¦G, L⦠⢠T1 â¡*[n, h] T2 â Q n T2. + (ân1,n2,T,T2. â¦G,L⦠⢠T1 â¡*[n1,h] T â Q n1 T â â¦G,L⦠⢠T â¡[n2,h] T2 â Q (n1+n2) T2) â + ân,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â Q n T2. #h #G #L #T1 #Q @ltc_ind_dx_refl // qed-. @@ -52,36 +52,36 @@ qed-. (* Basic_1: includes: pr1_pr0 *) (* Basic_1: uses: pr3_pr2 *) (* Basic_2A1: includes: cpr_cprs *) -lemma cpm_cpms (h) (G) (L): ân,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â â¦G, L⦠⢠T1 â¡*[n, h] T2. +lemma cpm_cpms (h) (G) (L): ân,T1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â â¦G,L⦠⢠T1 â¡*[n,h] T2. /2 width=1 by ltc_rc/ qed. -lemma cpms_step_sn (h) (G) (L): ân1,T1,T. â¦G, L⦠⢠T1 â¡[n1, h] T â - ân2,T2. â¦G, L⦠⢠T â¡*[n2, h] T2 â â¦G, L⦠⢠T1 â¡*[n1+n2, h] T2. +lemma cpms_step_sn (h) (G) (L): ân1,T1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â + ân2,T2. â¦G,L⦠⢠T â¡*[n2,h] T2 â â¦G,L⦠⢠T1 â¡*[n1+n2,h] T2. /2 width=3 by ltc_sn/ qed-. -lemma cpms_step_dx (h) (G) (L): ân1,T1,T. â¦G, L⦠⢠T1 â¡*[n1, h] T â - ân2,T2. â¦G, L⦠⢠T â¡[n2, h] T2 â â¦G, L⦠⢠T1 â¡*[n1+n2, h] T2. +lemma cpms_step_dx (h) (G) (L): ân1,T1,T. â¦G,L⦠⢠T1 â¡*[n1,h] T â + ân2,T2. â¦G,L⦠⢠T â¡[n2,h] T2 â â¦G,L⦠⢠T1 â¡*[n1+n2,h] T2. /2 width=3 by ltc_dx/ qed-. (* Basic_2A1: uses: cprs_bind_dx *) lemma cpms_bind_dx (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âI,T1,T2. â¦G, L.â{I}V1⦠⢠T1 â¡*[n, h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¡*[n, h] â{p,I}V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âI,T1,T2. â¦G,L.â{I}V1⦠⢠T1 â¡*[n,h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¡*[n,h] â{p,I}V2.T2. #n #h #G #L #V1 #V2 #HV12 #I #T1 #T2 #H #a @(cpms_ind_sn ⦠H) -T1 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_bind/ qed. lemma cpms_appl_dx (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âT1,T2. â¦G, L⦠⢠T1 â¡*[n, h] T2 â - â¦G, L⦠⢠âV1.T1 â¡*[n, h] âV2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âT1,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â + â¦G,L⦠⢠âV1.T1 â¡*[n,h] âV2.T2. #n #h #G #L #V1 #V2 #HV12 #T1 #T2 #H @(cpms_ind_sn ⦠H) -T1 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_appl/ qed. lemma cpms_zeta (n) (h) (G) (L): âT1,T. â¬*[1] T â T1 â - âV,T2. â¦G, L⦠⢠T â¡*[n, h] T2 â â¦G, L⦠⢠+âV.T1 â¡*[n, h] T2. + âV,T2. â¦G,L⦠⢠T â¡*[n,h] T2 â â¦G,L⦠⢠+âV.T1 â¡*[n,h] T2. #n #h #G #L #T1 #T #HT1 #V #T2 #H @(cpms_ind_dx ⦠H) -T2 /3 width=3 by cpms_step_dx, cpm_cpms, cpm_zeta/ qed. @@ -89,22 +89,22 @@ qed. (* Basic_2A1: uses: cprs_zeta *) lemma cpms_zeta_dx (n) (h) (G) (L): âT2,T. â¬*[1] T2 â T â - âV,T1. â¦G, L.âV⦠⢠T1 â¡*[n, h] T â â¦G, L⦠⢠+âV.T1 â¡*[n, h] T2. + âV,T1. â¦G,L.âV⦠⢠T1 â¡*[n,h] T â â¦G,L⦠⢠+âV.T1 â¡*[n,h] T2. #n #h #G #L #T2 #T #HT2 #V #T1 #H @(cpms_ind_sn ⦠H) -T1 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_bind, cpm_zeta/ qed. (* Basic_2A1: uses: cprs_eps *) lemma cpms_eps (n) (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡*[n, h] T2 â - âV. â¦G, L⦠⢠âV.T1 â¡*[n, h] T2. + âT1,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â + âV. â¦G,L⦠⢠âV.T1 â¡*[n,h] T2. #n #h #G #L #T1 #T2 #H @(cpms_ind_sn ⦠H) -T1 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_eps/ qed. lemma cpms_ee (n) (h) (G) (L): - âU1,U2. â¦G, L⦠⢠U1 â¡*[n, h] U2 â - âT. â¦G, L⦠⢠âU1.T â¡*[ân, h] U2. + âU1,U2. â¦G,L⦠⢠U1 â¡*[n,h] U2 â + âT. â¦G,L⦠⢠âU1.T â¡*[ân,h] U2. #n #h #G #L #U1 #U2 #H @(cpms_ind_sn ⦠H) -U1 -n [ /3 width=1 by cpm_cpms, cpm_ee/ | #n1 #n2 #U1 #U #HU1 #HU2 #_ #T >plus_S1 @@ -114,21 +114,21 @@ qed. (* Basic_2A1: uses: cprs_beta_dx *) lemma cpms_beta_dx (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âW1,W2. â¦G, L⦠⢠W1 â¡[h] W2 â - âT1,T2. â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2 â - âp. â¦G, L⦠⢠âV1.â{p}W1.T1 â¡*[n, h] â{p}âW2.V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âW1,W2. â¦G,L⦠⢠W1 â¡[h] W2 â + âT1,T2. â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2 â + âp. â¦G,L⦠⢠âV1.â{p}W1.T1 â¡*[n,h] â{p}âW2.V2.T2. #n #h #G #L #V1 #V2 #HV12 #W1 #W2 #HW12 #T1 #T2 #H @(cpms_ind_dx ⦠H) -T2 /4 width=7 by cpms_step_dx, cpm_cpms, cpms_bind_dx, cpms_appl_dx, cpm_beta/ qed. (* Basic_2A1: uses: cprs_theta_dx *) lemma cpms_theta_dx (n) (h) (G) (L): - âV1,V. â¦G, L⦠⢠V1 â¡[h] V â + âV1,V. â¦G,L⦠⢠V1 â¡[h] V â âV2. â¬*[1] V â V2 â - âW1,W2. â¦G, L⦠⢠W1 â¡[h] W2 â - âT1,T2. â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2 â - âp. â¦G, L⦠⢠âV1.â{p}W1.T1 â¡*[n, h] â{p}W2.âV2.T2. + âW1,W2. â¦G,L⦠⢠W1 â¡[h] W2 â + âT1,T2. â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2 â + âp. â¦G,L⦠⢠âV1.â{p}W1.T1 â¡*[n,h] â{p}W2.âV2.T2. #n #h #G #L #V1 #V #HV1 #V2 #HV2 #W1 #W2 #HW12 #T1 #T2 #H @(cpms_ind_dx ⦠H) -T2 /4 width=9 by cpms_step_dx, cpm_cpms, cpms_bind_dx, cpms_appl_dx, cpm_theta/ qed. @@ -150,17 +150,17 @@ qed. (* Basic inversion lemmas ***************************************************) -lemma cpms_inv_sort1 (n) (h) (G) (L): âX2,s. â¦G, L⦠⢠âs â¡*[n, h] X2 â X2 = â(((next h)^n) s). +lemma cpms_inv_sort1 (n) (h) (G) (L): âX2,s. â¦G,L⦠⢠âs â¡*[n,h] X2 â X2 = â(((next h)^n) s). #n #h #G #L #X2 #s #H @(cpms_ind_dx ⦠H) -X2 // #n1 #n2 #X #X2 #_ #IH #HX2 destruct elim (cpm_inv_sort1 ⦠HX2) -HX2 #H #_ destruct // qed-. lemma cpms_inv_cast1 (h) (n) (G) (L): - âW1,T1,X2. â¦G, L⦠⢠âW1.T1 â¡*[n,h] X2 â - â¨â¨ ââW2,T2. â¦G, L⦠⢠W1 â¡*[n,h] W2 & â¦G, L⦠⢠T1 â¡*[n,h] T2 & X2 = âW2.T2 - | â¦G, L⦠⢠T1 â¡*[n,h] X2 - | ââm. â¦G, L⦠⢠W1 â¡*[m,h] X2 & n = âm. + âW1,T1,X2. â¦G,L⦠⢠âW1.T1 â¡*[n,h] X2 â + â¨â¨ ââW2,T2. â¦G,L⦠⢠W1 â¡*[n,h] W2 & â¦G,L⦠⢠T1 â¡*[n,h] T2 & X2 = âW2.T2 + | â¦G,L⦠⢠T1 â¡*[n,h] X2 + | ââm. â¦G,L⦠⢠W1 â¡*[m,h] X2 & n = âm. #h #n #G #L #W1 #T1 #X2 #H @(cpms_ind_dx ⦠H) -n -X2 [ /3 width=5 by or3_intro0, ex3_2_intro/ | #n1 #n2 #X #X2 #_ * [ * || * ] diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_aaa.ma index 41d134080..f4cc579aa 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_aaa.ma @@ -26,7 +26,7 @@ lemma cpms_aaa_conf (n) (h): âG,L. Conf3 ⦠(aaa G L) (cpms h G L n). /3 width=5 by cpms_fwd_cpxs, cpxs_aaa_conf/ qed-. lemma cpms_total_aaa (h) (G) (L) (n) (A): - âT. â¦G, L⦠⢠T â A â âU. â¦G,L⦠⢠T â¡*[n,h] U. + âT. â¦G,L⦠⢠T â A â âU. â¦G,L⦠⢠T â¡*[n,h] U. #h #G #L #n elim n -n [ /2 width=3 by ex_intro/ | #n #IH #A #T1 #HT1 <plus_SO diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma index fcd97f3b9..0e09b27f0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma @@ -23,9 +23,9 @@ include "basic_2/rt_computation/cprs.ma". (* Basic_2A1: includes: cprs_bind *) theorem cpms_bind (n) (h) (G) (L): - âI,V1,T1,T2. â¦G, L.â{I}V1⦠⢠T1 â¡*[n, h] T2 â - âV2. â¦G, L⦠⢠V1 â¡*[h] V2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¡*[n, h] â{p,I}V2.T2. + âI,V1,T1,T2. â¦G,L.â{I}V1⦠⢠T1 â¡*[n,h] T2 â + âV2. â¦G,L⦠⢠V1 â¡*[h] V2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¡*[n,h] â{p,I}V2.T2. #n #h #G #L #I #V1 #T1 #T2 #HT12 #V2 #H @(cprs_ind_dx ⦠H) -V2 [ /2 width=1 by cpms_bind_dx/ | #V #V2 #_ #HV2 #IH #p >(plus_n_O ⦠n) -HT12 @@ -34,9 +34,9 @@ theorem cpms_bind (n) (h) (G) (L): qed. theorem cpms_appl (n) (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡*[n, h] T2 â - âV1,V2. â¦G, L⦠⢠V1 â¡*[h] V2 â - â¦G, L⦠⢠âV1.T1 â¡*[n, h] âV2.T2. + âT1,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â + âV1,V2. â¦G,L⦠⢠V1 â¡*[h] V2 â + â¦G,L⦠⢠âV1.T1 â¡*[n,h] âV2.T2. #n #h #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_dx ⦠H) -V2 [ /2 width=1 by cpms_appl_dx/ | #V #V2 #_ #HV2 #IH >(plus_n_O ⦠n) -HT12 @@ -46,10 +46,10 @@ qed. (* Basic_2A1: includes: cprs_beta_rc *) theorem cpms_beta_rc (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âW1,T1,T2. â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2 â - âW2. â¦G, L⦠⢠W1 â¡*[h] W2 â - âp. â¦G, L⦠⢠âV1.â{p}W1.T1 â¡*[n, h] â{p}âW2.V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âW1,T1,T2. â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2 â + âW2. â¦G,L⦠⢠W1 â¡*[h] W2 â + âp. â¦G,L⦠⢠âV1.â{p}W1.T1 â¡*[n,h] â{p}âW2.V2.T2. #n #h #G #L #V1 #V2 #HV12 #W1 #T1 #T2 #HT12 #W2 #H @(cprs_ind_dx ⦠H) -W2 [ /2 width=1 by cpms_beta_dx/ | #W #W2 #_ #HW2 #IH #p >(plus_n_O ⦠n) -HT12 @@ -59,10 +59,10 @@ qed. (* Basic_2A1: includes: cprs_beta *) theorem cpms_beta (n) (h) (G) (L): - âW1,T1,T2. â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2 â - âW2. â¦G, L⦠⢠W1 â¡*[h] W2 â - âV1,V2. â¦G, L⦠⢠V1 â¡*[h] V2 â - âp. â¦G, L⦠⢠âV1.â{p}W1.T1 â¡*[n, h] â{p}âW2.V2.T2. + âW1,T1,T2. â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2 â + âW2. â¦G,L⦠⢠W1 â¡*[h] W2 â + âV1,V2. â¦G,L⦠⢠V1 â¡*[h] V2 â + âp. â¦G,L⦠⢠âV1.â{p}W1.T1 â¡*[n,h] â{p}âW2.V2.T2. #n #h #G #L #W1 #T1 #T2 #HT12 #W2 #HW12 #V1 #V2 #H @(cprs_ind_dx ⦠H) -V2 [ /2 width=1 by cpms_beta_rc/ | #V #V2 #_ #HV2 #IH #p >(plus_n_O ⦠n) -HT12 @@ -72,10 +72,10 @@ qed. (* Basic_2A1: includes: cprs_theta_rc *) theorem cpms_theta_rc (n) (h) (G) (L): - âV1,V. â¦G, L⦠⢠V1 â¡[h] V â âV2. â¬*[1] V â V2 â - âW1,T1,T2. â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2 â - âW2. â¦G, L⦠⢠W1 â¡*[h] W2 â - âp. â¦G, L⦠⢠âV1.â{p}W1.T1 â¡*[n, h] â{p}W2.âV2.T2. + âV1,V. â¦G,L⦠⢠V1 â¡[h] V â âV2. â¬*[1] V â V2 â + âW1,T1,T2. â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2 â + âW2. â¦G,L⦠⢠W1 â¡*[h] W2 â + âp. â¦G,L⦠⢠âV1.â{p}W1.T1 â¡*[n,h] â{p}W2.âV2.T2. #n #h #G #L #V1 #V #HV1 #V2 #HV2 #W1 #T1 #T2 #HT12 #W2 #H @(cprs_ind_dx ⦠H) -W2 [ /2 width=3 by cpms_theta_dx/ | #W #W2 #_ #HW2 #IH #p >(plus_n_O ⦠n) -HT12 @@ -85,10 +85,10 @@ qed. (* Basic_2A1: includes: cprs_theta *) theorem cpms_theta (n) (h) (G) (L): - âV,V2. â¬*[1] V â V2 â âW1,W2. â¦G, L⦠⢠W1 â¡*[h] W2 â - âT1,T2. â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2 â - âV1. â¦G, L⦠⢠V1 â¡*[h] V â - âp. â¦G, L⦠⢠âV1.â{p}W1.T1 â¡*[n, h] â{p}W2.âV2.T2. + âV,V2. â¬*[1] V â V2 â âW1,W2. â¦G,L⦠⢠W1 â¡*[h] W2 â + âT1,T2. â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2 â + âV1. â¦G,L⦠⢠V1 â¡*[h] V â + âp. â¦G,L⦠⢠âV1.â{p}W1.T1 â¡*[n,h] â{p}W2.âV2.T2. #n #h #G #L #V #V2 #HV2 #W1 #W2 #HW12 #T1 #T2 #HT12 #V1 #H @(cprs_ind_sn ⦠H) -V1 [ /2 width=3 by cpms_theta_rc/ | #V1 #V0 #HV10 #_ #IH #p >(plus_O_n ⦠n) -HT12 @@ -98,30 +98,30 @@ qed. (* Basic_2A1: uses: lstas_scpds_trans scpds_strap2 *) theorem cpms_trans (h) (G) (L): - ân1,T1,T. â¦G, L⦠⢠T1 â¡*[n1, h] T â - ân2,T2. â¦G, L⦠⢠T â¡*[n2, h] T2 â â¦G, L⦠⢠T1 â¡*[n1+n2, h] T2. + ân1,T1,T. â¦G,L⦠⢠T1 â¡*[n1,h] T â + ân2,T2. â¦G,L⦠⢠T â¡*[n2,h] T2 â â¦G,L⦠⢠T1 â¡*[n1+n2,h] T2. /2 width=3 by ltc_trans/ qed-. (* Basic_2A1: uses: scpds_cprs_trans *) theorem cpms_cprs_trans (n) (h) (G) (L): - âT1,T. â¦G, L⦠⢠T1 â¡*[n, h] T â - âT2. â¦G, L⦠⢠T â¡*[h] T2 â â¦G, L⦠⢠T1 â¡*[n, h] T2. + âT1,T. â¦G,L⦠⢠T1 â¡*[n,h] T â + âT2. â¦G,L⦠⢠T â¡*[h] T2 â â¦G,L⦠⢠T1 â¡*[n,h] T2. #n #h #G #L #T1 #T #HT1 #T2 #HT2 >(plus_n_O ⦠n) /2 width=3 by cpms_trans/ qed-. (* Advanced inversion lemmas ************************************************) lemma cpms_inv_appl_sn (n) (h) (G) (L): - âV1,T1,X2. â¦G, L⦠⢠âV1.T1 â¡*[n, h] X2 â + âV1,T1,X2. â¦G,L⦠⢠âV1.T1 â¡*[n,h] X2 â â¨â¨ ââV2,T2. - â¦G, L⦠⢠V1 â¡*[h] V2 & â¦G, L⦠⢠T1 â¡*[n, h] T2 & + â¦G,L⦠⢠V1 â¡*[h] V2 & â¦G,L⦠⢠T1 â¡*[n,h] T2 & X2 = âV2.T2 | âân1,n2,p,W,T. - â¦G, L⦠⢠T1 â¡*[n1, h] â{p}W.T & â¦G, L⦠⢠â{p}âW.V1.T â¡*[n2, h] X2 & + â¦G,L⦠⢠T1 â¡*[n1,h] â{p}W.T & â¦G,L⦠⢠â{p}âW.V1.T â¡*[n2,h] X2 & n1 + n2 = n | âân1,n2,p,V0,V2,V,T. - â¦G, L⦠⢠V1 â¡*[h] V0 & â¬*[1] V0 â V2 & - â¦G, L⦠⢠T1 â¡*[n1, h] â{p}V.T & â¦G, L⦠⢠â{p}V.âV2.T â¡*[n2, h] X2 & + â¦G,L⦠⢠V1 â¡*[h] V0 & â¬*[1] V0 â V2 & + â¦G,L⦠⢠T1 â¡*[n1,h] â{p}V.T & â¦G,L⦠⢠â{p}V.âV2.T â¡*[n2,h] X2 & n1 + n2 = n. #n #h #G #L #V1 #T1 #U2 #H @(cpms_ind_dx ⦠H) -U2 /3 width=5 by or3_intro0, ex3_2_intro/ @@ -145,8 +145,8 @@ lemma cpms_inv_appl_sn (n) (h) (G) (L): ] qed-. -lemma cpms_inv_plus (h) (G) (L): ân1,n2,T1,T2. â¦G, L⦠⢠T1 â¡*[n1+n2, h] T2 â - ââT. â¦G, L⦠⢠T1 â¡*[n1, h] T & â¦G, L⦠⢠T â¡*[n2, h] T2. +lemma cpms_inv_plus (h) (G) (L): ân1,n2,T1,T2. â¦G,L⦠⢠T1 â¡*[n1+n2,h] T2 â + ââT. â¦G,L⦠⢠T1 â¡*[n1,h] T & â¦G,L⦠⢠T â¡*[n2,h] T2. #h #G #L #n1 elim n1 -n1 /2 width=3 by ex2_intro/ #n1 #IH #n2 #T1 #T2 <plus_S1 #H elim (cpms_inv_succ_sn ⦠H) -H #T0 #HT10 #HT02 @@ -158,9 +158,9 @@ qed-. (* Advanced main properties *************************************************) theorem cpms_cast (n) (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡*[n, h] T2 â - âU1,U2. â¦G, L⦠⢠U1 â¡*[n, h] U2 â - â¦G, L⦠⢠âU1.T1 â¡*[n, h] âU2.T2. + âT1,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â + âU1,U2. â¦G,L⦠⢠U1 â¡*[n,h] U2 â + â¦G,L⦠⢠âU1.T1 â¡*[n,h] âU2.T2. #n #h #G #L #T1 #T2 #H @(cpms_ind_sn ⦠H) -T1 -n [ /3 width=3 by cpms_cast_sn/ | #n1 #n2 #T1 #T #HT1 #_ #IH #U1 #U2 #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpxs.ma index 6d898a9ab..24eab2400 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpxs.ma @@ -21,7 +21,7 @@ include "basic_2/rt_computation/cpms.ma". (* Forward lemmas with unbound context-sensitive rt-computation for terms ***) (* Basic_2A1: includes: scpds_fwd_cpxs cprs_cpxs *) -lemma cpms_fwd_cpxs (n) (h): âG,L,T1,T2. â¦G, L⦠⢠T1 â¡*[n, h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpms_fwd_cpxs (n) (h): âG,L,T1,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. #n #h #G #L #T1 #T2 #H @(cpms_ind_dx ⦠H) -T2 /3 width=4 by cpxs_strap1, cpm_fwd_cpx/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma index a4f1a35b4..12f11ae45 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma @@ -46,8 +46,8 @@ qed-. (* Advanced properties ******************************************************) -lemma cpms_delta (n) (h) (G): âK,V1,V2. â¦G, K⦠⢠V1 â¡*[n, h] V2 â - âW2. â¬*[1] V2 â W2 â â¦G, K.âV1⦠⢠#0 â¡*[n, h] W2. +lemma cpms_delta (n) (h) (G): âK,V1,V2. â¦G,K⦠⢠V1 â¡*[n,h] V2 â + âW2. â¬*[1] V2 â W2 â â¦G,K.âV1⦠⢠#0 â¡*[n,h] W2. #n #h #G #K #V1 #V2 #H @(cpms_ind_dx ⦠H) -V2 [ /3 width=3 by cpm_cpms, cpm_delta/ | #n1 #n2 #V #V2 #_ #IH #HV2 #W2 #HVW2 @@ -56,8 +56,8 @@ lemma cpms_delta (n) (h) (G): âK,V1,V2. â¦G, K⦠⢠V1 â¡*[n, h] V2 â ] qed. -lemma cpms_ell (n) (h) (G): âK,V1,V2. â¦G, K⦠⢠V1 â¡*[n, h] V2 â - âW2. â¬*[1] V2 â W2 â â¦G, K.âV1⦠⢠#0 â¡*[ân, h] W2. +lemma cpms_ell (n) (h) (G): âK,V1,V2. â¦G,K⦠⢠V1 â¡*[n,h] V2 â + âW2. â¬*[1] V2 â W2 â â¦G,K.âV1⦠⢠#0 â¡*[ân,h] W2. #n #h #G #K #V1 #V2 #H @(cpms_ind_dx ⦠H) -V2 [ /3 width=3 by cpm_cpms, cpm_ell/ | #n1 #n2 #V #V2 #_ #IH #HV2 #W2 #HVW2 @@ -66,8 +66,8 @@ lemma cpms_ell (n) (h) (G): âK,V1,V2. â¦G, K⦠⢠V1 â¡*[n, h] V2 â ] qed. -lemma cpms_lref (n) (h) (I) (G): âK,T,i. â¦G, K⦠⢠#i â¡*[n, h] T â - âU. â¬*[1] T â U â â¦G, K.â{I}⦠⢠#âi â¡*[n, h] U. +lemma cpms_lref (n) (h) (I) (G): âK,T,i. â¦G,K⦠⢠#i â¡*[n,h] T â + âU. â¬*[1] T â U â â¦G,K.â{I}⦠⢠#âi â¡*[n,h] U. #n #h #I #G #K #T #i #H @(cpms_ind_dx ⦠H) -T [ /3 width=3 by cpm_cpms, cpm_lref/ | #n1 #n2 #T #T2 #_ #IH #HT2 #U2 #HTU2 @@ -77,9 +77,9 @@ lemma cpms_lref (n) (h) (I) (G): âK,T,i. â¦G, K⦠⢠#i â¡*[n, h] T â qed. lemma cpms_cast_sn (n) (h) (G) (L): - âU1,U2. â¦G, L⦠⢠U1 â¡*[n, h] U2 â - âT1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â - â¦G, L⦠⢠âU1.T1 â¡*[n, h] âU2.T2. + âU1,U2. â¦G,L⦠⢠U1 â¡*[n,h] U2 â + âT1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â + â¦G,L⦠⢠âU1.T1 â¡*[n,h] âU2.T2. #n #h #G #L #U1 #U2 #H @(cpms_ind_sn ⦠H) -U1 -n [ /3 width=3 by cpm_cpms, cpm_cast/ | #n1 #n2 #U1 #U #HU1 #_ #IH #T1 #T2 #H @@ -92,8 +92,8 @@ qed. (* Basic_2A1: uses: cprs_delta *) lemma cpms_delta_drops (n) (h) (G): âL,K,V,i. â¬*[i] L â K.âV â - âV2. â¦G, K⦠⢠V â¡*[n, h] V2 â - âW2. â¬*[âi] V2 â W2 â â¦G, L⦠⢠#i â¡*[n, h] W2. + âV2. â¦G,K⦠⢠V â¡*[n,h] V2 â + âW2. â¬*[âi] V2 â W2 â â¦G,L⦠⢠#i â¡*[n,h] W2. #n #h #G #L #K #V #i #HLK #V2 #H @(cpms_ind_dx ⦠H) -V2 [ /3 width=6 by cpm_cpms, cpm_delta_drops/ | #n1 #n2 #V1 #V2 #_ #IH #HV12 #W2 #HVW2 @@ -105,8 +105,8 @@ qed. lemma cpms_ell_drops (n) (h) (G): âL,K,W,i. â¬*[i] L â K.âW â - âW2. â¦G, K⦠⢠W â¡*[n, h] W2 â - âV2. â¬*[âi] W2 â V2 â â¦G, L⦠⢠#i â¡*[ân, h] V2. + âW2. â¦G,K⦠⢠W â¡*[n,h] W2 â + âV2. â¬*[âi] W2 â V2 â â¦G,L⦠⢠#i â¡*[ân,h] V2. #n #h #G #L #K #W #i #HLK #W2 #H @(cpms_ind_dx ⦠H) -W2 [ /3 width=6 by cpm_cpms, cpm_ell_drops/ | #n1 #n2 #W1 #W2 #_ #IH #HW12 #V2 #HWV2 @@ -119,11 +119,11 @@ qed. (* Advanced inversion lemmas ************************************************) lemma cpms_inv_lref1_drops (n) (h) (G): - âL,T2,i. â¦G, L⦠⢠#i â¡*[n, h] T2 â + âL,T2,i. â¦G,L⦠⢠#i â¡*[n,h] T2 â â¨â¨ â§â§ T2 = #i & n = 0 - | ââK,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¡*[n, h] V2 & + | ââK,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¡*[n,h] V2 & â¬*[âi] V2 â T2 - | ââm,K,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¡*[m, h] V2 & + | ââm,K,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¡*[m,h] V2 & â¬*[âi] V2 â T2 & n = âm. #n #h #G #L #T2 #i #H @(cpms_ind_dx ⦠H) -T2 [ /3 width=1 by or3_intro0, conj/ @@ -197,8 +197,8 @@ elim (cpms_inv_lref1_drops ⦠H) -H * qed-. fact cpms_inv_succ_sn (n) (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡*[ân, h] T2 â - ââT. â¦G, L⦠⢠T1 â¡*[1, h] T & â¦G, L⦠⢠T â¡*[n, h] T2. + âT1,T2. â¦G,L⦠⢠T1 â¡*[ân,h] T2 â + ââT. â¦G,L⦠⢠T1 â¡*[1,h] T & â¦G,L⦠⢠T â¡*[n,h] T2. #n #h #G #L #T1 #T2 @(insert_eq_0 ⦠(ân)) #m #H @(cpms_ind_sn ⦠H) -T1 -m diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma index 0452e19a8..baa4aa7f9 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma @@ -26,19 +26,19 @@ lemma cpms_tdneq_fwd_fpbg (h) (n): /3 width=2 by cpms_fwd_cpxs, cpxs_tdneq_fpbg/ qed-. lemma fpbg_cpms_trans (h) (n): - âG1,G2,L1,L2,T1,T. â¦G1, L1, T1⦠>[h] â¦G2, L2, T⦠â - âT2. â¦G2, L2⦠⢠T â¡*[n,h] T2 â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. + âG1,G2,L1,L2,T1,T. â¦G1,L1,T1⦠>[h] â¦G2,L2,T⦠â + âT2. â¦G2,L2⦠⢠T â¡*[n,h] T2 â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /3 width=5 by fpbg_fpbs_trans, cpms_fwd_fpbs/ qed-. lemma cpms_fpbg_trans (h) (n): - âG1,L1,T1,T. â¦G1, L1⦠⢠T1 â¡*[n,h] T â - âG2,L2,T2. â¦G1, L1, T⦠>[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. + âG1,L1,T1,T. â¦G1,L1⦠⢠T1 â¡*[n,h] T â + âG2,L2,T2. â¦G1,L1,T⦠>[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_fpbg_trans, cpms_fwd_fpbs/ qed-. lemma fqup_cpms_fwd_fpbg (h): - âG1,G2,L1,L2,T1,T. â¦G1, L1, T1⦠â+ â¦G2, L2, T⦠â - ân,T2. â¦G2, L2⦠⢠T â¡*[n,h] T2 â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. -/3 width=5 by cpms_fwd_fpbs, fqup_fpbg,fpbg_fpbs_trans/ qed-. + âG1,G2,L1,L2,T1,T. â¦G1,L1,T1⦠â+ â¦G2,L2,T⦠â + ân,T2. â¦G2,L2⦠⢠T â¡*[n,h] T2 â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. +/3 width=5 by cpms_fwd_fpbs, fqup_fpbg, fpbg_fpbs_trans/ qed-. lemma cpm_tdneq_cpm_cpms_tdeq_sym_fwd_fpbg (h) (G) (L) (T1): ân1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â (T1 â T â â¥) â diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbs.ma index 47aca5419..0fb54e8a6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbs.ma @@ -21,5 +21,5 @@ include "basic_2/rt_computation/cpms_cpxs.ma". (* Basic_2A1: uses: cprs_fpbs *) lemma cpms_fwd_fpbs (n) (h): - âG,L,T1,T2. â¦G, L⦠⢠T1 â¡*[n,h] T2 â â¦G, L, T1⦠â¥[h] â¦G, L, T2â¦. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¡*[n,h] T2 â â¦G,L,T1⦠â¥[h] â¦G,L,T2â¦. /3 width=2 by cpms_fwd_cpxs, cpxs_fpbs/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_lpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_lpr.ma index a636655eb..dc6c0f065 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_lpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_lpr.ma @@ -20,8 +20,8 @@ include "basic_2/rt_computation/cpms_cpms.ma". (* Properties with parallel rt-transition for full local environments *******) lemma lpr_cpm_trans (n) (h) (G): - âL2,T1,T2. â¦G, L2⦠⢠T1 â¡[n, h] T2 â - âL1. â¦G, L1⦠⢠â¡[h] L2 â â¦G, L1⦠⢠T1 â¡*[n, h] T2. + âL2,T1,T2. â¦G,L2⦠⢠T1 â¡[n,h] T2 â + âL1. â¦G,L1⦠⢠â¡[h] L2 â â¦G,L1⦠⢠T1 â¡*[n,h] T2. #n #h #G #L2 #T1 #T2 #H @(cpm_ind ⦠H) -n -G -L2 -T1 -T2 [ /2 width=3 by/ | /3 width=2 by cpm_cpms/ @@ -46,8 +46,8 @@ lemma lpr_cpm_trans (n) (h) (G): qed-. lemma lpr_cpms_trans (n) (h) (G): - âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â - âT1,T2. â¦G, L2⦠⢠T1 â¡*[n, h] T2 â â¦G, L1⦠⢠T1 â¡*[n, h] T2. + âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â + âT1,T2. â¦G,L2⦠⢠T1 â¡*[n,h] T2 â â¦G,L1⦠⢠T1 â¡*[n,h] T2. #n #h #G #L1 #L2 #HL12 #T1 #T2 #H @(cpms_ind_sn ⦠H) -n -T1 /3 width=3 by lpr_cpm_trans, cpms_trans/ qed-. @@ -56,14 +56,14 @@ qed-. (* Basic_2A1: includes cpr_bind2 *) lemma cpm_bind2 (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¡[n, h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¡*[n, h] â{p,I}V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¡[n,h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¡*[n,h] â{p,I}V2.T2. /4 width=5 by lpr_cpm_trans, cpms_bind_dx, lpr_pair/ qed. (* Basic_2A1: includes cprs_bind2_dx *) lemma cpms_bind2_dx (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¡*[n, h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¡*[n, h] â{p,I}V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¡*[n,h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¡*[n,h] â{p,I}V2.T2. /4 width=5 by lpr_cpms_trans, cpms_bind_dx, lpr_pair/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma index f2470dbe3..f6c8198ac 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma @@ -20,11 +20,11 @@ include "basic_2/rt_computation/cpms_cpxs.ma". (* Properties with sort-irrelevant equivalence for local environments *******) lemma cpms_rdeq_conf_sn (h) (n) (G) (L1) (L2): - âT1,T2. â¦G, L1⦠⢠T1 â¡*[n,h] T2 â + âT1,T2. â¦G,L1⦠⢠T1 â¡*[n,h] T2 â L1 â[T1] L2 â L1 â[T2] L2. /3 width=5 by cpms_fwd_cpxs, cpxs_rdeq_conf_sn/ qed-. lemma cpms_rdeq_conf_dx (h) (n) (G) (L1) (L2): - âT1,T2. â¦G, L2⦠⢠T1 â¡*[n,h] T2 â + âT1,T2. â¦G,L2⦠⢠T1 â¡*[n,h] T2 â L1 â[T1] L2 â L1 â[T2] L2. /3 width=5 by cpms_fwd_cpxs, cpxs_rdeq_conf_dx/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma index 202e1ccad..5ddc528f4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma @@ -32,7 +32,7 @@ qed-. (* Basic_1: was: nf2_pr3_confluence *) theorem cpre_mono (h) (G) (L) (T): - âT1. â¦G, L⦠⢠T â¡*[h] ðâ¦T1⦠â âT2. â¦G, L⦠⢠T â¡*[h] ðâ¦T2⦠â T1 = T2. + âT1. â¦G,L⦠⢠T â¡*[h] ðâ¦T1⦠â âT2. â¦G,L⦠⢠T â¡*[h] ðâ¦T2⦠â T1 = T2. #h #G #L #T0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2 elim (cprs_conf ⦠HT01 ⦠HT02) -T0 #T0 #HT10 #HT20 >(cprs_inv_cnr_sn ⦠HT10 HT1) -T1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma index 1b1e44804..3d1a34c8b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma @@ -23,7 +23,7 @@ include "basic_2/rt_computation/cpre.ma". (* Basic_1: was just: nf2_sn3 *) lemma cpre_total_csx (h) (G) (L): - âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â âT2. â¦G, L⦠⢠T1 â¡*[h] ðâ¦T2â¦. + âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â âT2. â¦G,L⦠⢠T1 â¡*[h] ðâ¦T2â¦. #h #G #L #T1 #H @(csx_ind ⦠H) -T1 #T1 #_ #IHT1 elim (cnr_dec_tdeq h G L T1) [ /3 width=3 by ex_intro, conj/ ] * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs.ma index ff8271ebd..7a9df49a5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs.ma @@ -22,8 +22,8 @@ include "basic_2/rt_computation/cpms.ma". (* Basic_2A1: was: cprs_ind_dx *) lemma cprs_ind_sn (h) (G) (L) (T2) (Q:predicate â¦): Q T2 â - (âT1,T. â¦G, L⦠⢠T1 â¡[h] T â â¦G, L⦠⢠T â¡*[h] T2 â Q T â Q T1) â - âT1. â¦G, L⦠⢠T1 â¡*[h] T2 â Q T1. + (âT1,T. â¦G,L⦠⢠T1 â¡[h] T â â¦G,L⦠⢠T â¡*[h] T2 â Q T â Q T1) â + âT1. â¦G,L⦠⢠T1 â¡*[h] T2 â Q T1. #h #G #L #T2 #Q #IH1 #IH2 #T1 @(insert_eq_0 ⦠0) #n #H @(cpms_ind_sn ⦠H) -n -T1 // @@ -35,8 +35,8 @@ qed-. (* Basic_2A1: was: cprs_ind *) lemma cprs_ind_dx (h) (G) (L) (T1) (Q:predicate â¦): Q T1 â - (âT,T2. â¦G, L⦠⢠T1 â¡*[h] T â â¦G, L⦠⢠T â¡[h] T2 â Q T â Q T2) â - âT2. â¦G, L⦠⢠T1 â¡*[h] T2 â Q T2. + (âT,T2. â¦G,L⦠⢠T1 â¡*[h] T â â¦G,L⦠⢠T â¡[h] T2 â Q T â Q T2) â + âT2. â¦G,L⦠⢠T1 â¡*[h] T2 â Q T2. #h #G #L #T1 #Q #IH1 #IH2 #T2 @(insert_eq_0 ⦠0) #n #H @(cpms_ind_dx ⦠H) -n -T2 // @@ -50,28 +50,28 @@ qed-. (* Basic_1: was: pr3_step *) (* Basic_2A1: was: cprs_strap2 *) lemma cprs_step_sn (h) (G) (L): - âT1,T. â¦G, L⦠⢠T1 â¡[h] T â - âT2. â¦G, L⦠⢠T â¡*[h] T2 â â¦G, L⦠⢠T1 â¡*[h] T2. + âT1,T. â¦G,L⦠⢠T1 â¡[h] T â + âT2. â¦G,L⦠⢠T â¡*[h] T2 â â¦G,L⦠⢠T1 â¡*[h] T2. /2 width=3 by cpms_step_sn/ qed-. (* Basic_2A1: was: cprs_strap1 *) lemma cprs_step_dx (h) (G) (L): - âT1,T. â¦G, L⦠⢠T1 â¡*[h] T â - âT2. â¦G, L⦠⢠T â¡[h] T2 â â¦G, L⦠⢠T1 â¡*[h] T2. + âT1,T. â¦G,L⦠⢠T1 â¡*[h] T â + âT2. â¦G,L⦠⢠T â¡[h] T2 â â¦G,L⦠⢠T1 â¡*[h] T2. /2 width=3 by cpms_step_dx/ qed-. (* Basic_1: was only: pr3_thin_dx *) lemma cprs_flat_dx (h) (I) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âT1,T2. â¦G, L⦠⢠T1 â¡*[h] T2 â - â¦G, L⦠⢠â{I}V1.T1 â¡*[h] â{I}V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âT1,T2. â¦G,L⦠⢠T1 â¡*[h] T2 â + â¦G,L⦠⢠â{I}V1.T1 â¡*[h] â{I}V2.T2. #h #I #G #L #V1 #V2 #HV12 #T1 #T2 #H @(cprs_ind_sn ⦠H) -T1 /3 width=3 by cprs_step_sn, cpm_cpms, cpr_flat/ qed. lemma cprs_flat_sn (h) (I) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡[h] T2 â âV1,V2. â¦G, L⦠⢠V1 â¡*[h] V2 â - â¦G, L⦠⢠â{I} V1. T1 â¡*[h] â{I} V2. T2. + âT1,T2. â¦G,L⦠⢠T1 â¡[h] T2 â âV1,V2. â¦G,L⦠⢠V1 â¡*[h] V2 â + â¦G,L⦠⢠â{I} V1. T1 â¡*[h] â{I} V2. T2. #h #I #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_sn ⦠H) -V1 /3 width=3 by cprs_step_sn, cpm_cpms, cpr_flat/ qed. @@ -79,13 +79,13 @@ qed. (* Basic inversion lemmas ***************************************************) (* Basic_1: was: pr3_gen_sort *) -lemma cprs_inv_sort1 (h) (G) (L): âX2,s. â¦G, L⦠⢠âs â¡*[h] X2 â X2 = âs. +lemma cprs_inv_sort1 (h) (G) (L): âX2,s. â¦G,L⦠⢠âs â¡*[h] X2 â X2 = âs. /2 width=4 by cpms_inv_sort1/ qed-. (* Basic_1: was: pr3_gen_cast *) -lemma cprs_inv_cast1 (h) (G) (L): âW1,T1,X2. â¦G, L⦠⢠âW1.T1 â¡*[h] X2 â - â¨â¨ ââW2,T2. â¦G, L⦠⢠W1 â¡*[h] W2 & â¦G, L⦠⢠T1 â¡*[h] T2 & X2 = âW2.T2 - | â¦G, L⦠⢠T1 â¡*[h] X2. +lemma cprs_inv_cast1 (h) (G) (L): âW1,T1,X2. â¦G,L⦠⢠âW1.T1 â¡*[h] X2 â + â¨â¨ ââW2,T2. â¦G,L⦠⢠W1 â¡*[h] W2 & â¦G,L⦠⢠T1 â¡*[h] T2 & X2 = âW2.T2 + | â¦G,L⦠⢠T1 â¡*[h] X2. #h #G #L #W1 #T1 #X2 #H elim (cpms_inv_cast1 ⦠H) -H [ /2 width=1 by or_introl/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cnr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cnr.ma index 2849fa0b7..8cbb2ee6f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cnr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cnr.ma @@ -22,7 +22,7 @@ include "basic_2/rt_computation/cprs.ma". (* Basic_1: was: nf2_pr3_unfold *) (* Basic_2A1: was: cprs_inv_cnr1 *) lemma cprs_inv_cnr_sn (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡*[h] T2 â â¦G, L⦠⢠â¡[h] ðâ¦T1⦠â T1 = T2. + âT1,T2. â¦G,L⦠⢠T1 â¡*[h] T2 â â¦G,L⦠⢠â¡[h] ðâ¦T1⦠â T1 = T2. #h #G #L #T1 #T2 #H @(cprs_ind_sn ⦠H) -T1 // #T1 #T0 #HT10 #_ #IH #HT1 lapply (HT1 ⦠HT10) -HT10 #H destruct /2 width=1 by/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma index 990051c3a..069323fb4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma @@ -38,9 +38,9 @@ qed-. (* Basic_1: was: pr3_flat *) theorem cprs_flat (h) (G) (L): - âT1,T2. â¦G, L⦠⢠T1 â¡*[h] T2 â - âV1,V2. â¦G, L⦠⢠V1 â¡*[h] V2 â - âI. â¦G, L⦠⢠â{I}V1.T1 â¡*[h] â{I}V2.T2. + âT1,T2. â¦G,L⦠⢠T1 â¡*[h] T2 â + âV1,V2. â¦G,L⦠⢠V1 â¡*[h] V2 â + âI. â¦G,L⦠⢠â{I}V1.T1 â¡*[h] â{I}V2.T2. #h #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_dx ⦠H) -V2 [ /2 width=3 by cprs_flat_dx/ | /3 width=3 by cpr_pair_sn, cprs_step_dx/ @@ -52,15 +52,15 @@ qed. (* Basic_1: was pr3_gen_appl *) (* Basic_2A1: was: cprs_inv_appl1 *) lemma cprs_inv_appl_sn (h) (G) (L): - âV1,T1,X2. â¦G, L⦠⢠âV1.T1 â¡*[h] X2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡*[h] V2 & - â¦G, L⦠⢠T1 â¡*[h] T2 & + âV1,T1,X2. â¦G,L⦠⢠âV1.T1 â¡*[h] X2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡*[h] V2 & + â¦G,L⦠⢠T1 â¡*[h] T2 & X2 = âV2. T2 - | ââp,W,T. â¦G, L⦠⢠T1 â¡*[h] â{p}W.T & - â¦G, L⦠⢠â{p}âW.V1.T â¡*[h] X2 - | ââp,V0,V2,V,T. â¦G, L⦠⢠V1 â¡*[h] V0 & â¬*[1] V0 â V2 & - â¦G, L⦠⢠T1 â¡*[h] â{p}V.T & - â¦G, L⦠⢠â{p}V.âV2.T â¡*[h] X2. + | ââp,W,T. â¦G,L⦠⢠T1 â¡*[h] â{p}W.T & + â¦G,L⦠⢠â{p}âW.V1.T â¡*[h] X2 + | ââp,V0,V2,V,T. â¦G,L⦠⢠V1 â¡*[h] V0 & â¬*[1] V0 â V2 & + â¦G,L⦠⢠T1 â¡*[h] â{p}V.T & + â¦G,L⦠⢠â{p}V.âV2.T â¡*[h] X2. #h #G #L #V1 #T1 #X2 #H elim (cpms_inv_appl_sn ⦠H) -H * [ /3 width=5 by or3_intro0, ex3_2_intro/ | #n1 #n2 #p #V2 #T2 #HT12 #HTX2 #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma index 19829738f..bd1afeec3 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma @@ -20,9 +20,9 @@ include "basic_2/rt_computation/cpms_drops.ma". (* Basic_1: was: pr3_gen_lref *) (* Basic_2A1: was: cprs_inv_lref1 *) -lemma cprs_inv_lref1_drops (h) (G): âL,T2,i. â¦G, L⦠⢠#i â¡*[h] T2 â +lemma cprs_inv_lref1_drops (h) (G): âL,T2,i. â¦G,L⦠⢠#i â¡*[h] T2 â â¨â¨ T2 = #i - | ââK,V1,T1. â¬*[i] L â K.âV1 & â¦G, K⦠⢠V1 â¡*[h] T1 & + | ââK,V1,T1. â¬*[i] L â K.âV1 & â¦G,K⦠⢠V1 â¡*[h] T1 & â¬*[âi] T1 â T2. #h #G #L #T2 #i #H elim (cpms_inv_lref1_drops ⦠H) -H * [ /2 width=1 by or_introl/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_lpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_lpr.ma index 1ea7cc963..8a578cf5b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_lpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_lpr.ma @@ -31,8 +31,8 @@ lemma lpr_cprs_trans (h) (G): s_rs_transitive ⦠(λL. cpm h G L 0) (λ_. lpr h qed-. lemma cprs_lpr_conf_dx (h) (G): - âL0,T0,T1. â¦G, L0⦠⢠T0 â¡*[h] T1 â âL1. â¦G, L0⦠⢠â¡[h] L1 â - ââT. â¦G, L1⦠⢠T1 â¡*[h] T & â¦G, L1⦠⢠T0 â¡*[h] T. + âL0,T0,T1. â¦G,L0⦠⢠T0 â¡*[h] T1 â âL1. â¦G,L0⦠⢠â¡[h] L1 â + ââT. â¦G,L1⦠⢠T1 â¡*[h] T & â¦G,L1⦠⢠T0 â¡*[h] T. #h #G #L0 #T0 #T1 #H @(cprs_ind_dx ⦠H) -T1 /2 width=3 by ex2_intro/ #T #T1 #_ #HT1 #IHT0 #L1 #HL01 @@ -43,9 +43,9 @@ elim (cprs_strip ⦠HT2 ⦠HT3) -T qed-. lemma cprs_lpr_conf_sn (h) (G): - âL0,T0,T1. â¦G, L0⦠⢠T0 â¡*[h] T1 â - âL1. â¦G, L0⦠⢠â¡[h] L1 â - ââT. â¦G, L0⦠⢠T1 â¡*[h] T & â¦G, L1⦠⢠T0 â¡*[h] T. + âL0,T0,T1. â¦G,L0⦠⢠T0 â¡*[h] T1 â + âL1. â¦G,L0⦠⢠â¡[h] L1 â + ââT. â¦G,L0⦠⢠T1 â¡*[h] T & â¦G,L1⦠⢠T0 â¡*[h] T. #h #G #L0 #T0 #T1 #HT01 #L1 #HL01 elim (cprs_lpr_conf_dx ⦠HT01 ⦠HL01) -HT01 #T #HT1 #HT0 /3 width=3 by lpr_cpms_trans, ex2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue.ma index 95c2b56ff..a22002aed 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue.ma @@ -19,7 +19,7 @@ include "basic_2/rt_computation/cpms.ma". (* EVALUATION FOR T-UNBOUND RT-TRANSITION ON TERMS **************************) definition cpue (h) (G) (L): relation2 term term â - λT1,T2. âân. â¦G, L⦠⢠T1 â¡*[n,h] T2 & â¦G, L⦠⢠⥲[h] ðâ¦T2â¦. + λT1,T2. âân. â¦G,L⦠⢠T1 â¡*[n,h] T2 & â¦G,L⦠⢠⥲[h] ðâ¦T2â¦. interpretation "evaluation for t-unbound context-sensitive parallel rt-transition (term)" 'PRedITEval h G L T1 T2 = (cpue h G L T1 T2). diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue_csx.ma index 9c1fb3707..2ba2ddb02 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpue_csx.ma @@ -22,7 +22,7 @@ include "basic_2/rt_computation/cpue.ma". (* Properties with strong normalization for unbound rt-transition for terms *) lemma cpue_total_csx (h) (G) (L): - âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â âT2. â¦G, L⦠⢠T1 ⥲*[h] ðâ¦T2â¦. + âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â âT2. â¦G,L⦠⢠T1 ⥲*[h] ðâ¦T2â¦. #h #G #L #T1 #H @(csx_ind ⦠H) -T1 #T1 #_ #IHT1 elim (cnu_dec_tdeq h G L T1) [ /3 width=4 by ex2_intro, ex_intro/ ] * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma index ce01889c1..e0048f7d7 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma @@ -27,71 +27,71 @@ interpretation "unbound context-sensitive parallel rt-computation (term)" (* Basic eliminators ********************************************************) lemma cpxs_ind: âh,G,L,T1. âQ:predicate term. Q T1 â - (âT,T2. â¦G, L⦠⢠T1 â¬*[h] T â â¦G, L⦠⢠T â¬[h] T2 â Q T â Q T2) â - âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â Q T2. + (âT,T2. â¦G,L⦠⢠T1 â¬*[h] T â â¦G,L⦠⢠T â¬[h] T2 â Q T â Q T2) â + âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â Q T2. #h #L #G #T1 #Q #HT1 #IHT1 #T2 #HT12 @(TC_star_ind ⦠HT1 IHT1 ⦠HT12) // qed-. lemma cpxs_ind_dx: âh,G,L,T2. âQ:predicate term. Q T2 â - (âT1,T. â¦G, L⦠⢠T1 â¬[h] T â â¦G, L⦠⢠T â¬*[h] T2 â Q T â Q T1) â - âT1. â¦G, L⦠⢠T1 â¬*[h] T2 â Q T1. + (âT1,T. â¦G,L⦠⢠T1 â¬[h] T â â¦G,L⦠⢠T â¬*[h] T2 â Q T â Q T1) â + âT1. â¦G,L⦠⢠T1 â¬*[h] T2 â Q T1. #h #G #L #T2 #Q #HT2 #IHT2 #T1 #HT12 @(TC_star_ind_dx ⦠HT2 IHT2 ⦠HT12) // qed-. (* Basic properties *********************************************************) -lemma cpxs_refl: âh,G,L,T. â¦G, L⦠⢠T â¬*[h] T. +lemma cpxs_refl: âh,G,L,T. â¦G,L⦠⢠T â¬*[h] T. /2 width=1 by inj/ qed. -lemma cpx_cpxs: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpx_cpxs: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. /2 width=1 by inj/ qed. -lemma cpxs_strap1: âh,G,L,T1,T. â¦G, L⦠⢠T1 â¬*[h] T â - âT2. â¦G, L⦠⢠T â¬[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpxs_strap1: âh,G,L,T1,T. â¦G,L⦠⢠T1 â¬*[h] T â + âT2. â¦G,L⦠⢠T â¬[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. normalize /2 width=3 by step/ qed-. -lemma cpxs_strap2: âh,G,L,T1,T. â¦G, L⦠⢠T1 â¬[h] T â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpxs_strap2: âh,G,L,T1,T. â¦G,L⦠⢠T1 â¬[h] T â + âT2. â¦G,L⦠⢠T â¬*[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. normalize /2 width=3 by TC_strap/ qed-. (* Basic_2A1: was just: cpxs_sort *) -lemma cpxs_sort: âh,G,L,s,n. â¦G, L⦠⢠âs â¬*[h] â((next h)^n s). +lemma cpxs_sort: âh,G,L,s,n. â¦G,L⦠⢠âs â¬*[h] â((next h)^n s). #h #G #L #s #n elim n -n /2 width=1 by cpx_cpxs/ #n >iter_S /2 width=3 by cpxs_strap1/ qed. -lemma cpxs_bind_dx: âh,G,L,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âI,T1,T2. â¦G, L. â{I}V1⦠⢠T1 â¬*[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +lemma cpxs_bind_dx: âh,G,L,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âI,T1,T2. â¦G,L. â{I}V1⦠⢠T1 â¬*[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. #h #G #L #V1 #V2 #HV12 #I #T1 #T2 #HT12 #a @(cpxs_ind_dx ⦠HT12) -T1 /3 width=3 by cpxs_strap2, cpx_cpxs, cpx_pair_sn, cpx_bind/ qed. -lemma cpxs_flat_dx: âh,G,L,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âT1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - âI. â¦G, L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. +lemma cpxs_flat_dx: âh,G,L,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âT1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + âI. â¦G,L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. #h #G #L #V1 #V2 #HV12 #T1 #T2 #HT12 @(cpxs_ind ⦠HT12) -T2 /3 width=5 by cpxs_strap1, cpx_cpxs, cpx_pair_sn, cpx_flat/ qed. -lemma cpxs_flat_sn: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â - âV1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âI. â¦G, L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. +lemma cpxs_flat_sn: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â + âV1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âI. â¦G,L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. #h #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cpxs_ind ⦠H) -V2 /3 width=5 by cpxs_strap1, cpx_cpxs, cpx_pair_sn, cpx_flat/ qed. -lemma cpxs_pair_sn: âh,I,G,L,V1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âT. â¦G, L⦠⢠â¡{I}V1.T â¬*[h] â¡{I}V2.T. +lemma cpxs_pair_sn: âh,I,G,L,V1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âT. â¦G,L⦠⢠â¡{I}V1.T â¬*[h] â¡{I}V2.T. #h #I #G #L #V1 #V2 #H @(cpxs_ind ⦠H) -V2 /3 width=3 by cpxs_strap1, cpx_pair_sn/ qed. lemma cpxs_zeta (h) (G) (L) (V): âT1,T. â¬*[1] T â T1 â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠+âV.T1 â¬*[h] T2. + âT2. â¦G,L⦠⢠T â¬*[h] T2 â â¦G,L⦠⢠+âV.T1 â¬*[h] T2. #h #G #L #V #T1 #T #HT1 #T2 #H @(cpxs_ind ⦠H) -T2 /3 width=3 by cpxs_strap1, cpx_cpxs, cpx_zeta/ qed. @@ -99,34 +99,34 @@ qed. (* Basic_2A1: was: cpxs_zeta *) lemma cpxs_zeta_dx (h) (G) (L) (V): âT2,T. â¬*[1] T2 â T â - âT1. â¦G, L.âV⦠⢠T1 â¬*[h] T â â¦G, L⦠⢠+âV.T1 â¬*[h] T2. + âT1. â¦G,L.âV⦠⢠T1 â¬*[h] T â â¦G,L⦠⢠+âV.T1 â¬*[h] T2. #h #G #L #V #T2 #T #HT2 #T1 #H @(cpxs_ind_dx ⦠H) -T1 /3 width=3 by cpxs_strap2, cpx_cpxs, cpx_bind, cpx_zeta/ qed. -lemma cpxs_eps: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - âV. â¦G, L⦠⢠âV.T1 â¬*[h] T2. +lemma cpxs_eps: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + âV. â¦G,L⦠⢠âV.T1 â¬*[h] T2. #h #G #L #T1 #T2 #H @(cpxs_ind ⦠H) -T2 /3 width=3 by cpxs_strap1, cpx_cpxs, cpx_eps/ qed. (* Basic_2A1: was: cpxs_ct *) -lemma cpxs_ee: âh,G,L,V1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âT. â¦G, L⦠⢠âV1.T â¬*[h] V2. +lemma cpxs_ee: âh,G,L,V1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âT. â¦G,L⦠⢠âV1.T â¬*[h] V2. #h #G #L #V1 #V2 #H @(cpxs_ind ⦠H) -V2 /3 width=3 by cpxs_strap1, cpx_cpxs, cpx_ee/ qed. lemma cpxs_beta_dx: âh,p,G,L,V1,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L.âW1⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠W1 â¬[h] W2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}âW2.V2.T2. + â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L.âW1⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠W1 â¬[h] W2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}âW2.V2.T2. #h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #HV12 * -T2 /4 width=7 by cpx_cpxs, cpxs_strap1, cpxs_bind_dx, cpxs_flat_dx, cpx_beta/ qed. lemma cpxs_theta_dx: âh,p,G,L,V1,V,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V â â¬*[1] V â V2 â â¦G, L.âW1⦠⢠T1 â¬*[h] T2 â - â¦G, L⦠⢠W1 â¬[h] W2 â â¦G, L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}W2.âV2.T2. + â¦G,L⦠⢠V1 â¬[h] V â â¬*[1] V â V2 â â¦G,L.âW1⦠⢠T1 â¬*[h] T2 â + â¦G,L⦠⢠W1 â¬[h] W2 â â¦G,L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}W2.âV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 * -T2 /4 width=9 by cpx_cpxs, cpxs_strap1, cpxs_bind_dx, cpxs_flat_dx, cpx_theta/ qed. @@ -134,7 +134,7 @@ qed. (* Basic inversion lemmas ***************************************************) (* Basic_2A1: wa just: cpxs_inv_sort1 *) -lemma cpxs_inv_sort1: âh,G,L,X2,s. â¦G, L⦠⢠âs â¬*[h] X2 â +lemma cpxs_inv_sort1: âh,G,L,X2,s. â¦G,L⦠⢠âs â¬*[h] X2 â ân. X2 = â((next h)^n s). #h #G #L #X2 #s #H @(cpxs_ind ⦠H) -X2 /2 width=2 by ex_intro/ #X #X2 #_ #HX2 * #n #H destruct @@ -142,10 +142,10 @@ elim (cpx_inv_sort1 ⦠HX2) -HX2 #H destruct /2 width=2 by ex_intro/ @(ex_intro ⦠(ân)) >iter_S // qed-. -lemma cpxs_inv_cast1: âh,G,L,W1,T1,U2. â¦G, L⦠⢠âW1.T1 â¬*[h] U2 â - â¨â¨ ââW2,T2. â¦G, L⦠⢠W1 â¬*[h] W2 & â¦G, L⦠⢠T1 â¬*[h] T2 & U2 = âW2.T2 - | â¦G, L⦠⢠T1 â¬*[h] U2 - | â¦G, L⦠⢠W1 â¬*[h] U2. +lemma cpxs_inv_cast1: âh,G,L,W1,T1,U2. â¦G,L⦠⢠âW1.T1 â¬*[h] U2 â + â¨â¨ ââW2,T2. â¦G,L⦠⢠W1 â¬*[h] W2 & â¦G,L⦠⢠T1 â¬*[h] T2 & U2 = âW2.T2 + | â¦G,L⦠⢠T1 â¬*[h] U2 + | â¦G,L⦠⢠W1 â¬*[h] U2. #h #G #L #W1 #T1 #U2 #H @(cpxs_ind ⦠H) -U2 /3 width=5 by or3_intro0, ex3_2_intro/ #U2 #U #_ #HU2 * /3 width=3 by cpxs_strap1, or3_intro1, or3_intro2/ * #W #T #HW1 #HT1 #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma index 2135a0cee..6dd802001 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma @@ -19,7 +19,7 @@ include "basic_2/rt_computation/cpxs.ma". (* Inversion lemmas with normal terms ***************************************) -lemma cpxs_inv_cnx1: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠â¬[h] ðâ¦T1⦠â +lemma cpxs_inv_cnx1: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠â¬[h] ðâ¦T1⦠â T1 â T2. #h #G #L #T1 #T2 #H @(cpxs_ind_dx ⦠H) -T1 /5 width=9 by cnx_tdeq_trans, tdeq_trans/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma index 4740fc092..60ddf6394 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma @@ -22,58 +22,58 @@ include "basic_2/rt_computation/cpxs.ma". theorem cpxs_trans: âh,G,L. Transitive ⦠(cpxs h G L). normalize /2 width=3 by trans_TC/ qed-. -theorem cpxs_bind: âh,p,I,G,L,V1,V2,T1,T2. â¦G, L.â{I}V1⦠⢠T1 â¬*[h] T2 â - â¦G, L⦠⢠V1 â¬*[h] V2 â - â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +theorem cpxs_bind: âh,p,I,G,L,V1,V2,T1,T2. â¦G,L.â{I}V1⦠⢠T1 â¬*[h] T2 â + â¦G,L⦠⢠V1 â¬*[h] V2 â + â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. #h #p #I #G #L #V1 #V2 #T1 #T2 #HT12 #H @(cpxs_ind ⦠H) -V2 /3 width=5 by cpxs_trans, cpxs_bind_dx/ qed. -theorem cpxs_flat: âh,I,G,L,V1,V2,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - â¦G, L⦠⢠V1 â¬*[h] V2 â - â¦G, L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. +theorem cpxs_flat: âh,I,G,L,V1,V2,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + â¦G,L⦠⢠V1 â¬*[h] V2 â + â¦G,L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. #h #I #G #L #V1 #V2 #T1 #T2 #HT12 #H @(cpxs_ind ⦠H) -V2 /3 width=5 by cpxs_trans, cpxs_flat_dx/ qed. theorem cpxs_beta_rc: âh,p,G,L,V1,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L.âW1⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠W1 â¬*[h] W2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}âW2.V2.T2. + â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L.âW1⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠W1 â¬*[h] W2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}âW2.V2.T2. #h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #HV12 #HT12 #H @(cpxs_ind ⦠H) -W2 /4 width=5 by cpxs_trans, cpxs_beta_dx, cpxs_bind_dx, cpx_pair_sn/ qed. theorem cpxs_beta: âh,p,G,L,V1,V2,W1,W2,T1,T2. - â¦G, L.âW1⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠W1 â¬*[h] W2 â â¦G, L⦠⢠V1 â¬*[h] V2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}âW2.V2.T2. + â¦G,L.âW1⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠W1 â¬*[h] W2 â â¦G,L⦠⢠V1 â¬*[h] V2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}âW2.V2.T2. #h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #HT12 #HW12 #H @(cpxs_ind ⦠H) -V2 /4 width=5 by cpxs_trans, cpxs_beta_rc, cpxs_bind_dx, cpx_flat/ qed. theorem cpxs_theta_rc: âh,p,G,L,V1,V,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V â â¬*[1] V â V2 â - â¦G, L.âW1⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠W1 â¬*[h] W2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}W2.âV2.T2. + â¦G,L⦠⢠V1 â¬[h] V â â¬*[1] V â V2 â + â¦G,L.âW1⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠W1 â¬*[h] W2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}W2.âV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 #HT12 #H @(cpxs_ind ⦠H) -W2 /3 width=5 by cpxs_trans, cpxs_theta_dx, cpxs_bind_dx/ qed. theorem cpxs_theta: âh,p,G,L,V1,V,V2,W1,W2,T1,T2. - â¬*[1] V â V2 â â¦G, L⦠⢠W1 â¬*[h] W2 â - â¦G, L.âW1⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠V1 â¬*[h] V â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}W2.âV2.T2. + â¬*[1] V â V2 â â¦G,L⦠⢠W1 â¬*[h] W2 â + â¦G,L.âW1⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠V1 â¬*[h] V â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬*[h] â{p}W2.âV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV2 #HW12 #HT12 #H @(TC_ind_dx ⦠V1 H) -V1 /3 width=5 by cpxs_trans, cpxs_theta_rc, cpxs_flat_dx/ qed. (* Advanced inversion lemmas ************************************************) -lemma cpxs_inv_appl1: âh,G,L,V1,T1,U2. â¦G, L⦠⢠âV1.T1 â¬*[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬*[h] V2 & â¦G, L⦠⢠T1 â¬*[h] T2 & +lemma cpxs_inv_appl1: âh,G,L,V1,T1,U2. â¦G,L⦠⢠âV1.T1 â¬*[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬*[h] V2 & â¦G,L⦠⢠T1 â¬*[h] T2 & U2 = âV2.T2 - | ââp,W,T. â¦G, L⦠⢠T1 â¬*[h] â{p}W.T & â¦G, L⦠⢠â{p}âW.V1.T â¬*[h] U2 - | ââp,V0,V2,V,T. â¦G, L⦠⢠V1 â¬*[h] V0 & â¬*[1] V0 â V2 & - â¦G, L⦠⢠T1 â¬*[h] â{p}V.T & â¦G, L⦠⢠â{p}V.âV2.T â¬*[h] U2. + | ââp,W,T. â¦G,L⦠⢠T1 â¬*[h] â{p}W.T & â¦G,L⦠⢠â{p}âW.V1.T â¬*[h] U2 + | ââp,V0,V2,V,T. â¦G,L⦠⢠V1 â¬*[h] V0 & â¬*[1] V0 â V2 & + â¦G,L⦠⢠T1 â¬*[h] â{p}V.T & â¦G,L⦠⢠â{p}V.âV2.T â¬*[h] U2. #h #G #L #V1 #T1 #U2 #H @(cpxs_ind ⦠H) -U2 [ /3 width=5 by or3_intro0, ex3_2_intro/ ] #U #U2 #_ #HU2 * * [ #V0 #T0 #HV10 #HT10 #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma index c42f94f83..09ba0f251 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma @@ -20,8 +20,8 @@ include "basic_2/rt_computation/cpxs.ma". (* Advanced properties ******************************************************) -lemma cpxs_delta: âh,I,G,K,V1,V2. â¦G, K⦠⢠V1 â¬*[h] V2 â - âW2. â¬*[1] V2 â W2 â â¦G, K.â{I}V1⦠⢠#0 â¬*[h] W2. +lemma cpxs_delta: âh,I,G,K,V1,V2. â¦G,K⦠⢠V1 â¬*[h] V2 â + âW2. â¬*[1] V2 â W2 â â¦G,K.â{I}V1⦠⢠#0 â¬*[h] W2. #h #I #G #K #V1 #V2 #H @(cpxs_ind ⦠H) -V2 [ /3 width=3 by cpx_cpxs, cpx_delta/ | #V #V2 #_ #HV2 #IH #W2 #HVW2 @@ -30,8 +30,8 @@ lemma cpxs_delta: âh,I,G,K,V1,V2. â¦G, K⦠⢠V1 â¬*[h] V2 â ] qed. -lemma cpxs_lref: âh,I,G,K,T,i. â¦G, K⦠⢠#i â¬*[h] T â - âU. â¬*[1] T â U â â¦G, K.â{I}⦠⢠#âi â¬*[h] U. +lemma cpxs_lref: âh,I,G,K,T,i. â¦G,K⦠⢠#i â¬*[h] T â + âU. â¬*[1] T â U â â¦G,K.â{I}⦠⢠#âi â¬*[h] U. #h #I #G #K #T #i #H @(cpxs_ind ⦠H) -T [ /3 width=3 by cpx_cpxs, cpx_lref/ | #T0 #T #_ #HT2 #IH #U #HTU @@ -42,8 +42,8 @@ qed. (* Basic_2A1: was: cpxs_delta *) lemma cpxs_delta_drops: âh,I,G,L,K,V1,V2,i. - â¬*[i] L â K.â{I}V1 â â¦G, K⦠⢠V1 â¬*[h] V2 â - âW2. â¬*[âi] V2 â W2 â â¦G, L⦠⢠#i â¬*[h] W2. + â¬*[i] L â K.â{I}V1 â â¦G,K⦠⢠V1 â¬*[h] V2 â + âW2. â¬*[âi] V2 â W2 â â¦G,L⦠⢠#i â¬*[h] W2. #h #I #G #L #K #V1 #V2 #i #HLK #H @(cpxs_ind ⦠H) -V2 [ /3 width=7 by cpx_cpxs, cpx_delta_drops/ | #V #V2 #_ #HV2 #IH #W2 #HVW2 @@ -54,9 +54,9 @@ qed. (* Advanced inversion lemmas ************************************************) -lemma cpxs_inv_zero1: âh,G,L,T2. â¦G, L⦠⢠#0 â¬*[h] T2 â +lemma cpxs_inv_zero1: âh,G,L,T2. â¦G,L⦠⢠#0 â¬*[h] T2 â T2 = #0 ⨠- ââI,K,V1,V2. â¦G, K⦠⢠V1 â¬*[h] V2 & â¬*[1] V2 â T2 & + ââI,K,V1,V2. â¦G,K⦠⢠V1 â¬*[h] V2 & â¬*[1] V2 â T2 & L = K.â{I}V1. #h #G #L #T2 #H @(cpxs_ind ⦠H) -T2 /2 width=1 by or_introl/ #T #T2 #_ #HT2 * @@ -69,9 +69,9 @@ lemma cpxs_inv_zero1: âh,G,L,T2. â¦G, L⦠⢠#0 â¬*[h] T2 â ] qed-. -lemma cpxs_inv_lref1: âh,G,L,T2,i. â¦G, L⦠⢠#âi â¬*[h] T2 â +lemma cpxs_inv_lref1: âh,G,L,T2,i. â¦G,L⦠⢠#âi â¬*[h] T2 â T2 = #(âi) ⨠- ââI,K,T. â¦G, K⦠⢠#i â¬*[h] T & â¬*[1] T â T2 & L = K.â{I}. + ââI,K,T. â¦G,K⦠⢠#i â¬*[h] T & â¬*[1] T â T2 & L = K.â{I}. #h #G #L #T2 #i #H @(cpxs_ind ⦠H) -T2 /2 width=1 by or_introl/ #T #T2 #_ #HT2 * [ #H destruct @@ -84,9 +84,9 @@ lemma cpxs_inv_lref1: âh,G,L,T2,i. â¦G, L⦠⢠#âi â¬*[h] T2 â qed-. (* Basic_2A1: was: cpxs_inv_lref1 *) -lemma cpxs_inv_lref1_drops: âh,G,L,T2,i. â¦G, L⦠⢠#i â¬*[h] T2 â +lemma cpxs_inv_lref1_drops: âh,G,L,T2,i. â¦G,L⦠⢠#i â¬*[h] T2 â T2 = #i ⨠- ââI,K,V1,T1. â¬*[i] L â K.â{I}V1 & â¦G, K⦠⢠V1 â¬*[h] T1 & + ââI,K,V1,T1. â¬*[i] L â K.â{I}V1 & â¦G,K⦠⢠V1 â¬*[h] T1 & â¬*[âi] T1 â T2. #h #G #L #T2 #i #H @(cpxs_ind ⦠H) -T2 /2 width=1 by or_introl/ #T #T2 #_ #HT2 * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma index ed477d71c..1b12ae605 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma @@ -19,9 +19,9 @@ include "basic_2/rt_computation/cpxs_rdeq.ma". (* Properties with sort-irrelevant equivalence for closures *****************) -lemma fdeq_cpxs_trans: âh,G1,G2,L1,L2,T1,T. â¦G1, L1, T1⦠â â¦G2, L2, T⦠â - âT2. â¦G2, L2⦠⢠T â¬*[h] T2 â - ââT0. â¦G1, L1⦠⢠T1 â¬*[h] T0 & â¦G1, L1, T0⦠â â¦G2, L2, T2â¦. +lemma fdeq_cpxs_trans: âh,G1,G2,L1,L2,T1,T. â¦G1,L1,T1⦠â â¦G2,L2,T⦠â + âT2. â¦G2,L2⦠⢠T â¬*[h] T2 â + ââT0. â¦G1,L1⦠⢠T1 â¬*[h] T0 & â¦G1,L1,T0⦠â â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2 elim (fdeq_inv_gen_dx ⦠H) -H #H #HL12 #HT1 destruct elim (rdeq_cpxs_trans ⦠HT2 ⦠HL12) #T0 #HT0 #HT02 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma index bb0ce14ab..5fc7879fe 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma @@ -21,33 +21,33 @@ include "basic_2/rt_computation/cpxs_cpxs.ma". (* Properties on supclosure *************************************************) -lemma fqu_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â - âT1. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & â¦G1, L1, U1⦠â[b] â¦G2, L2, U2â¦. +lemma fqu_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â + âT1. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & â¦G1,L1,U1⦠â[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx ⦠H) -T2 /2 width=3 by ex2_intro/ #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fqu_cpx_trans ⦠HT1 ⦠HT2) -T #T #HT1 #HT2 elim (IHTU2 ⦠HT2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/ qed-. -lemma fquq_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â - âT1. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & â¦G1, L1, U1⦠â⸮[b] â¦G2, L2, U2â¦. +lemma fquq_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â + âT1. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & â¦G1,L1,U1⦠â⸮[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx ⦠H) -T2 /2 width=3 by ex2_intro/ #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fquq_cpx_trans ⦠HT1 ⦠HT2) -T #T #HT1 #HT2 elim (IHTU2 ⦠HT2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/ qed-. -lemma fqup_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â - âT1. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & â¦G1, L1, U1⦠â+[b] â¦G2, L2, U2â¦. +lemma fqup_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â + âT1. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & â¦G1,L1,U1⦠â+[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx ⦠H) -T2 /2 width=3 by ex2_intro/ #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fqup_cpx_trans ⦠HT1 ⦠HT2) -T #U1 #HTU1 #H2 elim (IHTU2 ⦠H2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/ qed-. -lemma fqus_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â - âT1. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & â¦G1, L1, U1⦠â*[b] â¦G2, L2, U2â¦. +lemma fqus_cpxs_trans: âh,b,G1,G2,L1,L2,T2,U2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â + âT1. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & â¦G1,L1,U1⦠â*[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx ⦠H) -T2 /2 width=3 by ex2_intro/ #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fqus_cpx_trans ⦠HT1 ⦠HT2) -T #U1 #HTU1 #H2 elim (IHTU2 ⦠H2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/ @@ -55,9 +55,9 @@ qed-. (* Note: a proof based on fqu_cpx_trans_tdneq might exist *) (* Basic_2A1: uses: fqu_cpxs_trans_neq *) -lemma fqu_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â[b] â¦G2, L2, U2â¦. +lemma fqu_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ #I #G #L #V1 #V2 #HV12 #_ elim (lifts_total V2 ðâ´1âµ) #U2 #HVU2 @(ex3_intro ⦠U2) @@ -88,9 +88,9 @@ lemma fqu_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] qed-. (* Basic_2A1: uses: fquq_cpxs_trans_neq *) -lemma fquq_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â⸮[b] â¦G2, L2, U2â¦. +lemma fquq_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â⸮[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12 [ #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tdneq ⦠H12 ⦠HTU2 H) -T2 /3 width=4 by fqu_fquq, ex3_intro/ @@ -99,9 +99,9 @@ lemma fquq_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b qed-. (* Basic_2A1: uses: fqup_cpxs_trans_neq *) -lemma fqup_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â+[b] â¦G2, L2, U2â¦. +lemma fqup_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â+[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx ⦠H) -G1 -L1 -T1 [ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tdneq ⦠H12 ⦠HTU2 H) -T2 /3 width=4 by fqu_fqup, ex3_intro/ @@ -112,9 +112,9 @@ lemma fqup_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] qed-. (* Basic_2A1: uses: fqus_cpxs_trans_neq *) -lemma fqus_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â*[b] â¦G2, L2, U2â¦. +lemma fqus_cpxs_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬*[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬*[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â*[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup ⦠H12) -H12 [ #H12 elim (fqup_cpxs_trans_tdneq ⦠H12 ⦠HTU2 H) -T2 /3 width=4 by fqup_fqus, ex3_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lpx.ma index f5cefda3a..dbefb4db5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lpx.ma @@ -44,22 +44,22 @@ qed-. (* Advanced properties ******************************************************) -lemma cpx_bind2: âh,G,L,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¬[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +lemma cpx_bind2: âh,G,L,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¬[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. /4 width=5 by lpx_cpx_trans, cpxs_bind_dx, lpx_pair/ qed. -lemma cpxs_bind2_dx: âh,G,L,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¬*[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +lemma cpxs_bind2_dx: âh,G,L,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¬*[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. /4 width=5 by lpx_cpxs_trans, cpxs_bind_dx, lpx_pair/ qed. (* Properties with plus-iterated structural successor for closures **********) (* Basic_2A1: uses: lpx_fqup_trans *) -lemma lpx_fqup_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - âK1. â¦G1, K1⦠⢠â¬[h] L1 â - ââK2,T. â¦G1, K1⦠⢠T1 â¬*[h] T & â¦G1, K1, T⦠â+[b] â¦G2, K2, T2⦠& â¦G2, K2⦠⢠â¬[h] L2. +lemma lpx_fqup_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + âK1. â¦G1,K1⦠⢠â¬[h] L1 â + ââK2,T. â¦G1,K1⦠⢠T1 â¬*[h] T & â¦G1,K1,T⦠â+[b] â¦G2,K2,T2⦠& â¦G2,K2⦠⢠â¬[h] L2. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 [ #G2 #L2 #T2 #H12 #K1 #HKL1 elim (lpx_fqu_trans ⦠H12 ⦠HKL1) -L1 /3 width=5 by cpx_cpxs, fqu_fqup, ex3_2_intro/ @@ -73,9 +73,9 @@ qed-. (* Properties with star-iterated structural successor for closures **********) (* Basic_2A1: uses: lpx_fqus_trans *) -lemma lpx_fqus_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - âK1. â¦G1, K1⦠⢠â¬[h] L1 â - ââK2,T. â¦G1, K1⦠⢠T1 â¬*[h] T & â¦G1, K1, T⦠â*[b] â¦G2, K2, T2⦠& â¦G2, K2⦠⢠â¬[h] L2. +lemma lpx_fqus_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + âK1. â¦G1,K1⦠⢠â¬[h] L1 â + ââK2,T. â¦G1,K1⦠⢠T1 â¬*[h] T & â¦G1,K1,T⦠â*[b] â¦G2,K2,T2⦠& â¦G2,K2⦠⢠â¬[h] L2. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 elim (fqus_inv_fqup ⦠H) -H [ #H12 elim (lpx_fqup_trans ⦠H12 ⦠HKL1) -L1 /3 width=5 by fqup_fqus, ex3_2_intro/ | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma index 58c6d29ff..1d3dfa50d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma @@ -20,9 +20,9 @@ include "basic_2/rt_computation/cpxs_tdeq.ma". (* Properties with sort-irrelevant equivalence for local environments *******) (* Basic_2A1: was just: lleq_cpxs_trans *) -lemma rdeq_cpxs_trans: âh,G,L0,T0,T1. â¦G, L0⦠⢠T0 â¬*[h] T1 â +lemma rdeq_cpxs_trans: âh,G,L0,T0,T1. â¦G,L0⦠⢠T0 â¬*[h] T1 â âL2. L2 â[T0] L0 â - ââT. â¦G, L2⦠⢠T0 â¬*[h] T & T â T1. + ââT. â¦G,L2⦠⢠T0 â¬*[h] T & T â T1. #h #G #L0 #T0 #T1 #H @(cpxs_ind_dx ⦠H) -T0 /2 width=3 by ex2_intro/ #T0 #T #HT0 #_ #IH #L2 #HL2 elim (rdeq_cpx_trans ⦠HL2 ⦠HT0) #U1 #H1 #H2 @@ -32,18 +32,18 @@ elim (tdeq_cpxs_trans ⦠H2 ⦠H3) -T #U0 #H2 #H3 qed-. (* Basic_2A1: was just: cpxs_lleq_conf *) -lemma cpxs_rdeq_conf: âh,G,L0,T0,T1. â¦G, L0⦠⢠T0 â¬*[h] T1 â +lemma cpxs_rdeq_conf: âh,G,L0,T0,T1. â¦G,L0⦠⢠T0 â¬*[h] T1 â âL2. L0 â[T0] L2 â - ââT. â¦G, L2⦠⢠T0 â¬*[h] T & T â T1. + ââT. â¦G,L2⦠⢠T0 â¬*[h] T & T â T1. /3 width=3 by rdeq_cpxs_trans, rdeq_sym/ qed-. (* Basic_2A1: was just: cpxs_lleq_conf_dx *) -lemma cpxs_rdeq_conf_dx: âh,G,L2,T1,T2. â¦G, L2⦠⢠T1 â¬*[h] T2 â +lemma cpxs_rdeq_conf_dx: âh,G,L2,T1,T2. â¦G,L2⦠⢠T1 â¬*[h] T2 â âL1. L1 â[T1] L2 â L1 â[T2] L2. #h #G #L2 #T1 #T2 #H @(cpxs_ind ⦠H) -T2 /3 width=6 by cpx_rdeq_conf_dx/ qed-. (* Basic_2A1: was just: lleq_conf_sn *) -lemma cpxs_rdeq_conf_sn: âh,G,L1,T1,T2. â¦G, L1⦠⢠T1 â¬*[h] T2 â +lemma cpxs_rdeq_conf_sn: âh,G,L1,T1,T2. â¦G,L1⦠⢠T1 â¬*[h] T2 â âL2. L1 â[T1] L2 â L1 â[T2] L2. /4 width=6 by cpxs_rdeq_conf_dx, rdeq_sym/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma index c313dc7ab..b1d2c9464 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/cpxs.ma". (* Properties with sort-irrelevant equivalence for terms ********************) -lemma tdeq_cpxs_trans: âh,U1,T1. U1 â T1 â âG,L,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - ââU2. â¦G, L⦠⢠U1 â¬*[h] U2 & U2 â T2. +lemma tdeq_cpxs_trans: âh,U1,T1. U1 â T1 â âG,L,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + ââU2. â¦G,L⦠⢠U1 â¬*[h] U2 & U2 â T2. #h #U1 #T1 #HUT1 #G #L #T2 #HT12 @(cpxs_ind ⦠HT12) -T2 /2 width=3 by ex2_intro/ #T #T2 #_ #HT2 * #U #HU1 #HUT elim (tdeq_cpx_trans ⦠HUT ⦠HT2) -T -T1 /3 width=3 by ex2_intro, cpxs_strap1/ @@ -28,8 +28,8 @@ qed-. (* Note: this requires tdeq to be symmetric *) (* Nasic_2A1: uses: cpxs_neq_inv_step_sn *) -lemma cpxs_tdneq_fwd_step_sn: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â - ââT,T0. â¦G, L⦠⢠T1 â¬[h] T & T1 â T â ⥠& â¦G, L⦠⢠T â¬*[h] T0 & T0 â T2. +lemma cpxs_tdneq_fwd_step_sn: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â + ââT,T0. â¦G,L⦠⢠T1 â¬[h] T & T1 â T â ⥠& â¦G,L⦠⢠T â¬*[h] T0 & T0 â T2. #h #G #L #T1 #T2 #H @(cpxs_ind_dx ⦠H) -T1 [ #H elim H -H // | #T1 #T0 #HT10 #HT02 #IH #Hn12 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma index 58ee19613..5174890e0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma @@ -21,7 +21,7 @@ include "basic_2/rt_computation/lpxs_cpxs.ma". (* Forward lemmas with head equivalence for terms ***************************) -lemma cpxs_fwd_sort: âh,G,L,X2,s1. â¦G, L⦠⢠âs1 â¬*[h] X2 â âs1 ⩳ X2. +lemma cpxs_fwd_sort: âh,G,L,X2,s1. â¦G,L⦠⢠âs1 â¬*[h] X2 â âs1 ⩳ X2. #h #G #L #X2 #s1 #H elim (cpxs_inv_sort1 ⦠H) -H #s2 #H destruct // qed-. @@ -30,8 +30,8 @@ qed-. (* Basic_2A1: was: cpxs_fwd_delta *) lemma cpxs_fwd_delta_drops: âh,I,G,L,K,V1,i. â¬*[i] L â K.â{I}V1 â âV2. â¬*[âi] V1 â V2 â - âX2. â¦G, L⦠⢠#i â¬*[h] X2 â - â¨â¨ #i ⩳ X2 | â¦G, L⦠⢠V2 â¬*[h] X2. + âX2. â¦G,L⦠⢠#i â¬*[h] X2 â + â¨â¨ #i ⩳ X2 | â¦G,L⦠⢠V2 â¬*[h] X2. #h #I #G #L #K #V1 #i #HLK #V2 #HV12 #X2 #H elim (cpxs_inv_lref1_drops ⦠H) -H /2 width=1 by or_introl/ * #I0 #K0 #V0 #U0 #HLK0 #HVU0 #HU0 @@ -40,8 +40,8 @@ lapply (drops_mono ⦠HLK0 ⦠HLK) -HLK0 #H destruct qed-. (* Basic_1: was just: pr3_iso_beta *) -lemma cpxs_fwd_beta: âh,p,G,L,V,W,T,X2. â¦G, L⦠⢠âV.â{p}W.T â¬*[h] X2 â - â¨â¨ âV.â{p}W.T ⩳ X2 | â¦G, L⦠⢠â{p}âW.V.T â¬*[h] X2. +lemma cpxs_fwd_beta: âh,p,G,L,V,W,T,X2. â¦G,L⦠⢠âV.â{p}W.T â¬*[h] X2 â + â¨â¨ âV.â{p}W.T ⩳ X2 | â¦G,L⦠⢠â{p}âW.V.T â¬*[h] X2. #h #p #G #L #V #W #T #X2 #H elim (cpxs_inv_appl1 ⦠H) -H * [ #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/ | #b #W0 #T0 #HT0 #HU @@ -53,9 +53,9 @@ lemma cpxs_fwd_beta: âh,p,G,L,V,W,T,X2. â¦G, L⦠⢠âV.â{p}W.T â¬*[h] ] qed-. -lemma cpxs_fwd_theta: âh,p,G,L,V1,V,T,X2. â¦G, L⦠⢠âV1.â{p}V.T â¬*[h] X2 â +lemma cpxs_fwd_theta: âh,p,G,L,V1,V,T,X2. â¦G,L⦠⢠âV1.â{p}V.T â¬*[h] X2 â âV2. â¬*[1] V1 â V2 â - â¨â¨ âV1.â{p}V.T ⩳ X2 | â¦G, L⦠⢠â{p}V.âV2.T â¬*[h] X2. + â¨â¨ âV1.â{p}V.T ⩳ X2 | â¦G,L⦠⢠â{p}V.âV2.T â¬*[h] X2. #h #p #G #L #V1 #V #T #X2 #H #V2 #HV12 elim (cpxs_inv_appl1 ⦠H) -H * [ -HV12 #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/ @@ -84,13 +84,13 @@ elim (cpxs_inv_appl1 ⦠H) -H * ] qed-. -lemma cpxs_fwd_cast: âh,G,L,W,T,X2. â¦G, L⦠⢠âW.T â¬*[h] X2 â - â¨â¨ âW. T ⩳ X2 | â¦G, L⦠⢠T â¬*[h] X2 | â¦G, L⦠⢠W â¬*[h] X2. +lemma cpxs_fwd_cast: âh,G,L,W,T,X2. â¦G,L⦠⢠âW.T â¬*[h] X2 â + â¨â¨ âW. T ⩳ X2 | â¦G,L⦠⢠T â¬*[h] X2 | â¦G,L⦠⢠W â¬*[h] X2. #h #G #L #W #T #X2 #H elim (cpxs_inv_cast1 ⦠H) -H /2 width=1 by or3_intro1, or3_intro2/ * #W0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or3_intro0/ qed-. -lemma cpxs_fwd_cnx: âh,G,L,T1. â¦G, L⦠⢠â¬[h] ðâ¦T1⦠â - âX2. â¦G, L⦠⢠T1 â¬*[h] X2 â T1 ⩳ X2. +lemma cpxs_fwd_cnx: âh,G,L,T1. â¦G,L⦠⢠â¬[h] ðâ¦T1⦠â + âX2. â¦G,L⦠⢠T1 â¬*[h] X2 â T1 ⩳ X2. /3 width=5 by cpxs_inv_cnx1, tdeq_theq/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma index ec7f35fee..40c508756 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma @@ -20,7 +20,7 @@ include "basic_2/rt_computation/cpxs_theq.ma". (* Vector form of forward lemmas with head equivalence for terms ************) -lemma cpxs_fwd_sort_vector: âh,G,L,s,Vs,X2. â¦G, L⦠⢠â¶Vs.âs â¬*[h] X2 â â¶Vs.âs ⩳ X2. +lemma cpxs_fwd_sort_vector: âh,G,L,s,Vs,X2. â¦G,L⦠⢠â¶Vs.âs â¬*[h] X2 â â¶Vs.âs ⩳ X2. #h #G #L #s #Vs elim Vs -Vs /2 width=4 by cpxs_fwd_sort/ #V #Vs #IHVs #X2 #H elim (cpxs_inv_appl1 ⦠H) -H * @@ -37,8 +37,8 @@ qed-. (* Basic_2A1: was: cpxs_fwd_delta_vector *) lemma cpxs_fwd_delta_drops_vector: âh,I,G,L,K,V1,i. â¬*[i] L â K.â{I}V1 â âV2. â¬*[âi] V1 â V2 â - âVs,X2. â¦G, L⦠⢠â¶Vs.#i â¬*[h] X2 â - â¨â¨ â¶Vs.#i ⩳ X2 | â¦G, L⦠⢠â¶Vs.V2 â¬*[h] X2. + âVs,X2. â¦G,L⦠⢠â¶Vs.#i â¬*[h] X2 â + â¨â¨ â¶Vs.#i ⩳ X2 | â¦G,L⦠⢠â¶Vs.V2 â¬*[h] X2. #h #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs /2 width=5 by cpxs_fwd_delta_drops/ #V #Vs #IHVs #X2 #H -K -V1 @@ -62,8 +62,8 @@ elim (cpxs_inv_appl1 ⦠H) -H * qed-. (* Basic_1: was just: pr3_iso_appls_beta *) -lemma cpxs_fwd_beta_vector: âh,p,G,L,Vs,V,W,T,X2. â¦G, L⦠⢠â¶Vs.âV.â{p}W.T â¬*[h] X2 â - â¨â¨ â¶Vs.âV.â{p}W. T ⩳ X2 | â¦G, L⦠⢠â¶Vs.â{p}âW.V.T â¬*[h] X2. +lemma cpxs_fwd_beta_vector: âh,p,G,L,Vs,V,W,T,X2. â¦G,L⦠⢠â¶Vs.âV.â{p}W.T â¬*[h] X2 â + â¨â¨ â¶Vs.âV.â{p}W. T ⩳ X2 | â¦G,L⦠⢠â¶Vs.â{p}âW.V.T â¬*[h] X2. #h #p #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_beta/ #V0 #Vs #IHVs #V #W #T #X2 #H elim (cpxs_inv_appl1 ⦠H) -H * @@ -87,8 +87,8 @@ qed-. (* Basic_1: was just: pr3_iso_appls_abbr *) lemma cpxs_fwd_theta_vector: âh,G,L,V1b,V2b. â¬*[1] V1b â V2b â - âp,V,T,X2. â¦G, L⦠⢠â¶V1b.â{p}V.T â¬*[h] X2 â - â¨â¨ â¶V1b.â{p}V.T ⩳ X2 | â¦G, L⦠⢠â{p}V.â¶V2b.T â¬*[h] X2. + âp,V,T,X2. â¦G,L⦠⢠â¶V1b.â{p}V.T â¬*[h] X2 â + â¨â¨ â¶V1b.â{p}V.T ⩳ X2 | â¦G,L⦠⢠â{p}V.â¶V2b.T â¬*[h] X2. #h #G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/ #V1b #V2b #V1a #V2a #HV12a #HV12b #p generalize in match HV12a; -HV12a @@ -135,10 +135,10 @@ elim (cpxs_inv_appl1 ⦠H) -H * qed-. (* Basic_1: was just: pr3_iso_appls_cast *) -lemma cpxs_fwd_cast_vector: âh,G,L,Vs,W,T,X2. â¦G, L⦠⢠â¶Vs.âW.T â¬*[h] X2 â +lemma cpxs_fwd_cast_vector: âh,G,L,Vs,W,T,X2. â¦G,L⦠⢠â¶Vs.âW.T â¬*[h] X2 â â¨â¨ â¶Vs. âW. T ⩳ X2 - | â¦G, L⦠⢠â¶Vs.T â¬*[h] X2 - | â¦G, L⦠⢠â¶Vs.W â¬*[h] X2. + | â¦G,L⦠⢠â¶Vs.T â¬*[h] X2 + | â¦G,L⦠⢠â¶Vs.W â¬*[h] X2. #h #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_cast/ #V #Vs #IHVs #W #T #X2 #H elim (cpxs_inv_appl1 ⦠H) -H * @@ -166,8 +166,8 @@ elim (cpxs_inv_appl1 ⦠H) -H * qed-. (* Basic_1: was just: nf2_iso_appls_lref *) -lemma cpxs_fwd_cnx_vector: âh,G,L,T. ðâ¦T⦠â â¦G, L⦠⢠â¬[h] ðâ¦T⦠â - âVs,X2. â¦G, L⦠⢠â¶Vs.T â¬*[h] X2 â â¶Vs.T ⩳ X2. +lemma cpxs_fwd_cnx_vector: âh,G,L,T. ðâ¦T⦠â â¦G,L⦠⢠â¬[h] ðâ¦T⦠â + âVs,X2. â¦G,L⦠⢠â¶Vs.T â¬*[h] X2 â â¶Vs.T ⩳ X2. #h #G #L #T #H1T #H2T #Vs elim Vs -Vs [ @(cpxs_fwd_cnx ⦠H2T) ] (**) (* /2 width=3 by cpxs_fwd_cnx/ does not work *) #V #Vs #IHVs #X2 #H elim (cpxs_inv_appl1 ⦠H) -H * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx.ma index 384d014cb..7fe343b8a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx.ma @@ -28,11 +28,11 @@ interpretation (* Basic eliminators ********************************************************) lemma csx_ind: âh,G,L. âQ:predicate term. - (âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - (âT2. â¦G, L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â Q T2) â + (âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + (âT2. â¦G,L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â Q T. + âT. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â Q T. #h #G #L #Q #H0 #T1 #H elim H -T1 /5 width=1 by SN_intro/ qed-. @@ -41,14 +41,14 @@ qed-. (* Basic_1: was just: sn3_pr2_intro *) lemma csx_intro: âh,G,L,T1. - (âT2. â¦G, L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â â¦G, L⦠⢠â¬*[h] ðâ¦T2â¦) â - â¦G, L⦠⢠â¬*[h] ðâ¦T1â¦. + (âT2. â¦G,L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â â¦G,L⦠⢠â¬*[h] ðâ¦T2â¦) â + â¦G,L⦠⢠â¬*[h] ðâ¦T1â¦. /4 width=1 by SN_intro/ qed. (* Basic forward lemmas *****************************************************) -fact csx_fwd_pair_sn_aux: âh,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â - âI,V,T. U = â¡{I}V.T â â¦G, L⦠⢠â¬*[h] ðâ¦Vâ¦. +fact csx_fwd_pair_sn_aux: âh,G,L,U. â¦G,L⦠⢠â¬*[h] ðâ¦U⦠â + âI,V,T. U = â¡{I}V.T â â¦G,L⦠⢠â¬*[h] ðâ¦Vâ¦. #h #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct @csx_intro #V2 #HLV2 #HV2 @(IH (â¡{I}V2.T)) -IH /2 width=3 by cpx_pair_sn/ -HLV2 @@ -56,23 +56,23 @@ fact csx_fwd_pair_sn_aux: âh,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â qed-. (* Basic_1: was just: sn3_gen_head *) -lemma csx_fwd_pair_sn: âh,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â¡{I}V.T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦Vâ¦. +lemma csx_fwd_pair_sn: âh,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â¡{I}V.T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦Vâ¦. /2 width=5 by csx_fwd_pair_sn_aux/ qed-. -fact csx_fwd_bind_dx_aux: âh,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â - âp,I,V,T. U = â{p,I}V.T â â¦G, L.â{I}V⦠⢠â¬*[h] ðâ¦Tâ¦. +fact csx_fwd_bind_dx_aux: âh,G,L,U. â¦G,L⦠⢠â¬*[h] ðâ¦U⦠â + âp,I,V,T. U = â{p,I}V.T â â¦G,L.â{I}V⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L #U #H elim H -H #U0 #_ #IH #p #I #V #T #H destruct @csx_intro #T2 #HLT2 #HT2 -@(IH (â{p,I}V.T2)) -IH /2 width=3 by cpx_bind/ -HLT2 +@(IH (â{p, I}V.T2)) -IH /2 width=3 by cpx_bind/ -HLT2 #H elim (tdeq_inv_pair ⦠H) -H /2 width=1 by/ qed-. (* Basic_1: was just: sn3_gen_bind *) -lemma csx_fwd_bind_dx: âh,p,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â â¦G, L.â{I}V⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_bind_dx: âh,p,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â â¦G,L.â{I}V⦠⢠â¬*[h] ðâ¦Tâ¦. /2 width=4 by csx_fwd_bind_dx_aux/ qed-. -fact csx_fwd_flat_dx_aux: âh,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â - âI,V,T. U = â{I}V.T â â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +fact csx_fwd_flat_dx_aux: âh,G,L,U. â¦G,L⦠⢠â¬*[h] ðâ¦U⦠â + âI,V,T. U = â{I}V.T â â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct @csx_intro #T2 #HLT2 #HT2 @(IH (â{I}V.T2)) -IH /2 width=3 by cpx_flat/ -HLT2 @@ -80,15 +80,15 @@ fact csx_fwd_flat_dx_aux: âh,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â qed-. (* Basic_1: was just: sn3_gen_flat *) -lemma csx_fwd_flat_dx: âh,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{I}V.T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_flat_dx: âh,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{I}V.T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. /2 width=5 by csx_fwd_flat_dx_aux/ qed-. -lemma csx_fwd_bind: âh,p,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â - â¦G, L⦠⢠â¬*[h] ðâ¦V⦠⧠â¦G, L.â{I}V⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_bind: âh,p,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â + â¦G,L⦠⢠â¬*[h] ðâ¦V⦠⧠â¦G,L.â{I}V⦠⢠â¬*[h] ðâ¦Tâ¦. /3 width=3 by csx_fwd_pair_sn, csx_fwd_bind_dx, conj/ qed-. -lemma csx_fwd_flat: âh,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{I}V.T⦠â - â¦G, L⦠⢠â¬*[h] ðâ¦V⦠⧠â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_flat: âh,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{I}V.T⦠â + â¦G,L⦠⢠â¬*[h] ðâ¦V⦠⧠â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. /3 width=3 by csx_fwd_pair_sn, csx_fwd_flat_dx, conj/ qed-. (* Basic_1: removed theorems 14: diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_aaa.ma index c44bf1d53..dfbcf7e48 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_aaa.ma @@ -21,7 +21,7 @@ include "basic_2/rt_computation/csx_gcr.ma". (* Main properties with atomic arity assignment *****************************) -theorem aaa_csx: âh,G,L,T,A. â¦G, L⦠⢠T â A â â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +theorem aaa_csx: âh,G,L,T,A. â¦G,L⦠⢠T â A â â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L #T #A #H @(gcr_aaa ⦠(csx_gcp h) (csx_gcr h) ⦠H) qed. @@ -29,32 +29,32 @@ qed. (* Advanced eliminators *****************************************************) fact aaa_ind_csx_aux: âh,G,L,A. âQ:predicate term. - (âT1. â¦G, L⦠⢠T1 â A â - (âT2. â¦G, L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 + (âT1. â¦G,L⦠⢠T1 â A â + (âT2. â¦G,L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L⦠⢠T â A â Q T. + âT. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L⦠⢠T â A â Q T. #h #G #L #A #Q #IH #T #H @(csx_ind ⦠H) -T /4 width=5 by cpx_aaa_conf/ qed-. lemma aaa_ind_csx: âh,G,L,A. âQ:predicate term. - (âT1. â¦G, L⦠⢠T1 â A â - (âT2. â¦G, L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 + (âT1. â¦G,L⦠⢠T1 â A â + (âT2. â¦G,L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT. â¦G, L⦠⢠T â A â Q T. + âT. â¦G,L⦠⢠T â A â Q T. /5 width=9 by aaa_ind_csx_aux, aaa_csx/ qed-. fact aaa_ind_csx_cpxs_aux: âh,G,L,A. âQ:predicate term. - (âT1. â¦G, L⦠⢠T1 â A â - (âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 + (âT1. â¦G,L⦠⢠T1 â A â + (âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L⦠⢠T â A â Q T. + âT. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L⦠⢠T â A â Q T. #h #G #L #A #Q #IH #T #H @(csx_ind_cpxs ⦠H) -T /4 width=5 by cpxs_aaa_conf/ qed-. (* Basic_2A1: was: aaa_ind_csx_alt *) lemma aaa_ind_csx_cpxs: âh,G,L,A. âQ:predicate term. - (âT1. â¦G, L⦠⢠T1 â A â - (âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 + (âT1. â¦G,L⦠⢠T1 â A â + (âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT. â¦G, L⦠⢠T â A â Q T. + âT. â¦G,L⦠⢠T â A â Q T. /5 width=9 by aaa_ind_csx_cpxs_aux, aaa_csx/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx.ma index eaaaa9aa2..3cd1edff9 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx.ma @@ -20,10 +20,10 @@ include "basic_2/rt_computation/csx.ma". (* Properties with normal terms for unbound parallel rt-transition **********) (* Basic_1: was just: sn3_nf2 *) -lemma cnx_csx: âh,G,L,T. â¦G, L⦠⢠â¬[h] ðâ¦T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma cnx_csx: âh,G,L,T. â¦G,L⦠⢠â¬[h] ðâ¦T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. /2 width=1 by NF_to_SN/ qed. (* Advanced properties ******************************************************) -lemma csx_sort: âh,G,L,s. â¦G, L⦠⢠â¬*[h] ðâ¦âsâ¦. +lemma csx_sort: âh,G,L,s. â¦G,L⦠⢠â¬*[h] ðâ¦âsâ¦. /3 width=4 by cnx_csx, cnx_sort/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx_vector.ma index d0072aa83..91a7f2925 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx_vector.ma @@ -23,8 +23,8 @@ include "basic_2/rt_computation/csx_vector.ma". (* Properties with normal terms for unbound parallel rt-transition **********) (* Basic_1: was just: sn3_appls_lref *) -lemma csx_applv_cnx: âh,G,L,T. ðâ¦T⦠â â¦G, L⦠⢠â¬[h] ðâ¦T⦠â - âVs. â¦G, L⦠⢠â¬*[h] ðâ¦Vs⦠â â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.Tâ¦. +lemma csx_applv_cnx: âh,G,L,T. ðâ¦T⦠â â¦G,L⦠⢠â¬[h] ðâ¦T⦠â + âVs. â¦G,L⦠⢠â¬*[h] ðâ¦Vs⦠â â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.Tâ¦. #h #G #L #T #H1T #H2T #Vs elim Vs -Vs [ #_ normalize in ⢠(????%); /2 width=1 by cnx_csx/ | #V #Vs #IHV #H @@ -38,5 +38,5 @@ qed. (* Advanced properties ******************************************************) -lemma csx_applv_sort: âh,G,L,s,Vs. â¦G, L⦠⢠â¬*[h] ðâ¦Vs⦠â â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.âsâ¦. +lemma csx_applv_sort: âh,G,L,s,Vs. â¦G,L⦠⢠â¬*[h] ðâ¦Vs⦠â â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.âsâ¦. /3 width=6 by csx_applv_cnx, cnx_sort, simple_atom/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cpxs.ma index 586c2847f..aa206225c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cpxs.ma @@ -22,13 +22,13 @@ include "basic_2/rt_computation/csx_csx.ma". (* Basic_1: was just: sn3_intro *) lemma csx_intro_cpxs: âh,G,L,T1. - (âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â â¦G, L⦠⢠â¬*[h] ðâ¦T2â¦) â - â¦G, L⦠⢠â¬*[h] ðâ¦T1â¦. + (âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â â¦G,L⦠⢠â¬*[h] ðâ¦T2â¦) â + â¦G,L⦠⢠â¬*[h] ðâ¦T1â¦. /4 width=1 by cpx_cpxs, csx_intro/ qed-. (* Basic_1: was just: sn3_pr3_trans *) -lemma csx_cpxs_trans: âh,G,L,T1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â â¦G, L⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_cpxs_trans: âh,G,L,T1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â â¦G,L⦠⢠â¬*[h] ðâ¦T2â¦. #h #G #L #T1 #HT1 #T2 #H @(cpxs_ind ⦠H) -T2 /2 width=3 by csx_cpx_trans/ qed-. @@ -36,11 +36,11 @@ qed-. (* Eliminators with unbound context-sensitive rt-computation for terms ******) lemma csx_ind_cpxs_tdeq: âh,G,L. âQ:predicate term. - (âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - (âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 + (âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + (âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - âT0. â¦G, L⦠⢠T1 â¬*[h] T0 â âT2. T0 â T2 â Q T2. + âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + âT0. â¦G,L⦠⢠T1 â¬*[h] T0 â âT2. T0 â T2 â Q T2. #h #G #L #Q #IH #T1 #H @(csx_ind ⦠H) -T1 #T1 #HT1 #IH1 #T0 #HT10 #T2 #HT02 @IH -IH /3 width=3 by csx_cpxs_trans, csx_tdeq_trans/ -HT1 #V2 #HTV2 #HnTV2 @@ -60,10 +60,10 @@ qed-. (* Basic_2A1: was: csx_ind_alt *) lemma csx_ind_cpxs: âh,G,L. âQ:predicate term. - (âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - (âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 + (âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + (âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 â T2 â â¥) â Q T2) â Q T1 ) â - âT. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â Q T. + âT. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â Q T. #h #G #L #Q #IH #T #HT @(csx_ind_cpxs_tdeq ⦠IH ⦠HT) -IH -HT // (**) (* full auto fails *) qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma index 3702ba245..456f38417 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma @@ -19,22 +19,22 @@ include "basic_2/rt_computation/csx_drops.ma". (* Advanced properties ******************************************************) -lemma csx_tdeq_trans: âh,G,L,T1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - âT2. T1 â T2 â â¦G, L⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_tdeq_trans: âh,G,L,T1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + âT2. T1 â T2 â â¦G,L⦠⢠â¬*[h] ðâ¦T2â¦. #h #G #L #T1 #H @(csx_ind ⦠H) -T1 #T #_ #IH #T2 #HT2 @csx_intro #T1 #HT21 #HnT21 elim (tdeq_cpx_trans ⦠HT2 ⦠HT21) -HT21 /4 width=5 by tdeq_repl/ qed-. -lemma csx_cpx_trans: âh,G,L,T1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - âT2. â¦G, L⦠⢠T1 â¬[h] T2 â â¦G, L⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_cpx_trans: âh,G,L,T1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + âT2. â¦G,L⦠⢠T1 â¬[h] T2 â â¦G,L⦠⢠â¬*[h] ðâ¦T2â¦. #h #G #L #T1 #H @(csx_ind ⦠H) -T1 #T1 #HT1 #IHT1 #T2 #HLT12 elim (tdeq_dec T1 T2) /3 width=4 by csx_tdeq_trans/ qed-. (* Basic_1: was just: sn3_cast *) -lemma csx_cast: âh,G,L,W. â¦G, L⦠⢠â¬*[h] ðâ¦W⦠â - âT. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦âW.Tâ¦. +lemma csx_cast: âh,G,L,W. â¦G,L⦠⢠â¬*[h] ðâ¦W⦠â + âT. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦âW.Tâ¦. #h #G #L #W #HW @(csx_ind ⦠HW) -W #W #HW #IHW #T #HT @(csx_ind ⦠HT) -T #T #HT #IHT @csx_intro @@ -52,7 +52,7 @@ qed. (* Basic_1: was just: sn3_abbr *) (* Basic_2A1: was: csx_lref_bind *) lemma csx_lref_pair: âh,I,G,L,K,V,i. â¬*[i] L â K.â{I}V â - â¦G, K⦠⢠â¬*[h] ðâ¦V⦠â â¦G, L⦠⢠â¬*[h] ðâ¦#iâ¦. + â¦G,K⦠⢠â¬*[h] ðâ¦V⦠â â¦G,L⦠⢠â¬*[h] ðâ¦#iâ¦. #h #I #G #L #K #V #i #HLK #HV @csx_intro #X #H #Hi elim (cpx_inv_lref1_drops ⦠H) -H [ #H destruct elim Hi // @@ -67,16 +67,16 @@ qed. (* Basic_1: was: sn3_gen_def *) (* Basic_2A1: was: csx_inv_lref_bind *) lemma csx_inv_lref_pair: âh,I,G,L,K,V,i. â¬*[i] L â K.â{I}V â - â¦G, L⦠⢠â¬*[h] ðâ¦#i⦠â â¦G, K⦠⢠â¬*[h] ðâ¦Vâ¦. + â¦G,L⦠⢠â¬*[h] ðâ¦#i⦠â â¦G,K⦠⢠â¬*[h] ðâ¦Vâ¦. #h #I #G #L #K #V #i #HLK #Hi elim (lifts_total V (ðâ´âiâµ)) /4 width=9 by csx_inv_lifts, csx_cpx_trans, cpx_delta_drops, drops_isuni_fwd_drop2/ qed-. -lemma csx_inv_lref: âh,G,L,i. â¦G, L⦠⢠â¬*[h] ðâ¦#i⦠â - â¨â¨ â¬*[â», ðâ´iâµ] L â â +lemma csx_inv_lref: âh,G,L,i. â¦G,L⦠⢠â¬*[h] ðâ¦#i⦠â + â¨â¨ â¬*[â»,ðâ´iâµ] L â â | ââI,K. â¬*[i] L â K.â¤{I} - | ââI,K,V. â¬*[i] L â K.â{I}V & â¦G, K⦠⢠â¬*[h] ðâ¦Vâ¦. + | ââI,K,V. â¬*[i] L â K.â{I}V & â¦G,K⦠⢠â¬*[h] ðâ¦Vâ¦. #h #G #L #i #H elim (drops_F_uni L i) /2 width=1 by or3_intro0/ * * /4 width=9 by csx_inv_lref_pair, ex2_3_intro, ex1_2_intro, or3_intro2, or3_intro1/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma index 4899dc66d..889eddcfe 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma @@ -23,8 +23,8 @@ include "basic_2/rt_computation/csx_vector.ma". (* Advanced properties ************************************* ****************) (* Basic_1: was just: sn3_appls_beta *) -lemma csx_applv_beta: âh,p,G,L,Vs,V,W,T. â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.â{p}âW.V.T⦠â - â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.âV.â{p}W.Tâ¦. +lemma csx_applv_beta: âh,p,G,L,Vs,V,W,T. â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.â{p}âW.V.T⦠â + â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.âV.â{p}W.Tâ¦. #h #p #G #L #Vs elim Vs -Vs /2 width=1 by csx_appl_beta/ #V0 #Vs #IHV #V #W #T #H1T lapply (csx_fwd_pair_sn ⦠H1T) #HV0 @@ -39,7 +39,7 @@ qed. lemma csx_applv_delta: âh,I,G,L,K,V1,i. â¬*[i] L â K.â{I}V1 â âV2. â¬*[âi] V1 â V2 â - âVs. â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.V2⦠â â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.#iâ¦. + âVs. â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.V2⦠â â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.#iâ¦. #h #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs [ /4 width=11 by csx_inv_lifts, csx_lref_pair, drops_isuni_fwd_drop2/ | #V #Vs #IHV #H1T @@ -56,8 +56,8 @@ qed. (* Basic_1: was just: sn3_appls_abbr *) lemma csx_applv_theta: âh,p,G,L,V1b,V2b. â¬*[1] V1b â V2b â - âV,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p}V.â¶V2b.T⦠â - â¦G, L⦠⢠â¬*[h] ðâ¦â¶V1b.â{p}V.Tâ¦. + âV,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p}V.â¶V2b.T⦠â + â¦G,L⦠⢠â¬*[h] ðâ¦â¶V1b.â{p}V.Tâ¦. #h #p #G #L #V1b #V2b * -V1b -V2b /2 width=1 by/ #V1b #V2b #V1 #V2 #HV12 #H generalize in match HV12; -HV12 generalize in match V2; -V2 generalize in match V1; -V1 @@ -74,8 +74,8 @@ elim (cpxs_fwd_theta_vector ⦠(V2⨮V2b) ⦠H1) -H1 /2 width=1 by liftsv_cons qed. (* Basic_1: was just: sn3_appls_cast *) -lemma csx_applv_cast: âh,G,L,Vs,U. â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.U⦠â - âT. â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.âU.Tâ¦. +lemma csx_applv_cast: âh,G,L,Vs,U. â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.U⦠â + âT. â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.âU.Tâ¦. #h #G #L #Vs elim Vs -Vs /2 width=1 by csx_cast/ #V #Vs #IHV #U #H1U #T #H1T lapply (csx_fwd_pair_sn ⦠H1U) #HV diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma index 2ffd57655..fcb2f9af8 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/csx_rdeq.ma". (* Properties with sort-irrelevant equivalence for closures *****************) -lemma csx_fdeq_conf: âh,G1,L1,T1. â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_fdeq_conf: âh,G1,L1,T1. â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2 /3 width=3 by csx_rdeq_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 index a08e70926..6027a70f5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma @@ -22,8 +22,8 @@ include "basic_2/rt_computation/csx_lpx.ma". (* Properties with parallel rst-transition for closures *********************) (* Basic_2A1: was: csx_fpb_conf *) -lemma csx_fpbq_conf: âh,G1,L1,T1. â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_fpbq_conf: âh,G1,L1,T1. â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * /2 width=6 by csx_cpx_trans, csx_fquq_conf, csx_lpx_conf, csx_fdeq_conf/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fqus.ma index ee76d6762..03ae7cc37 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fqus.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fqus.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/csx_lsubr.ma". (* Properties with extended supclosure **************************************) -lemma csx_fqu_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_fqu_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ /3 width=5 by csx_inv_lref_pair, drops_refl/ | /2 width=3 by csx_fwd_pair_sn/ @@ -31,20 +31,20 @@ lemma csx_fqu_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, ] qed-. -lemma csx_fquq_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_fquq_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 * /2 width=6 by csx_fqu_conf/ * #HG #HL #HT destruct // qed-. -lemma csx_fqup_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_fqup_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 /3 width=6 by csx_fqu_conf/ qed-. -lemma csx_fqus_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma csx_fqus_conf: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind ⦠H) -H /3 width=6 by csx_fquq_conf/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma index 77cf480fa..ed06dcdea 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma @@ -19,16 +19,16 @@ include "basic_2/rt_computation/csx_cpxs.ma". (* Properties with unbound parallel rt-transition on all entries ************) -lemma csx_lpx_conf: âh,G,L1,T. â¦G, L1⦠⢠â¬*[h] ðâ¦T⦠â - âL2. â¦G, L1⦠⢠â¬[h] L2 â â¦G, L2⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_lpx_conf: âh,G,L1,T. â¦G,L1⦠⢠â¬*[h] ðâ¦T⦠â + âL2. â¦G,L1⦠⢠â¬[h] L2 â â¦G,L2⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L1 #T #H @(csx_ind_cpxs ⦠H) -T /4 width=3 by csx_intro, lpx_cpx_trans/ qed-. (* Advanced properties ******************************************************) -lemma csx_abst: âh,p,G,L,W. â¦G, L⦠⢠â¬*[h] ðâ¦W⦠â - âT. â¦G, L.âW⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦â{p}W.Tâ¦. +lemma csx_abst: âh,p,G,L,W. â¦G,L⦠⢠â¬*[h] ðâ¦W⦠â + âT. â¦G,L.âW⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦â{p}W.Tâ¦. #h #p #G #L #W #HW @(csx_ind ⦠HW) -W #W #_ #IHW #T #HT @(csx_ind ⦠HT) -T #T #HT #IHT @@ -42,8 +42,8 @@ elim (tdneq_inv_pair ⦠H2) -H2 ] qed. -lemma csx_abbr: âh,p,G,L,V. â¦G, L⦠⢠â¬*[h] ðâ¦V⦠â - âT. â¦G, L.âV⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦â{p}V.Tâ¦. +lemma csx_abbr: âh,p,G,L,V. â¦G,L⦠⢠â¬*[h] ðâ¦V⦠â + âT. â¦G,L.âV⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦â{p}V.Tâ¦. #h #p #G #L #V #HV @(csx_ind ⦠HV) -V #V #_ #IHV #T #HT @(csx_ind_cpxs ⦠HT) -T #T #HT #IHT @@ -60,8 +60,8 @@ elim (cpx_inv_abbr1 ⦠H1) -H1 * ] qed. -fact csx_appl_theta_aux: âh,p,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â âV1,V2. â¬*[1] V1 â V2 â - âV,T. U = â{p}V.âV2.T â â¦G, L⦠⢠â¬*[h] ðâ¦âV1.â{p}V.Tâ¦. +fact csx_appl_theta_aux: âh,p,G,L,U. â¦G,L⦠⢠â¬*[h] ðâ¦U⦠â âV1,V2. â¬*[1] V1 â V2 â + âV,T. U = â{p}V.âV2.T â â¦G,L⦠⢠â¬*[h] ðâ¦âV1.â{p}V.Tâ¦. #h #p #G #L #X #H @(csx_ind_cpxs ⦠H) -X #X #HVT #IHVT #V1 #V2 #HV12 #V #T #H destruct lapply (csx_fwd_pair_sn ⦠HVT) #HV @@ -94,6 +94,6 @@ elim (cpx_inv_appl1 ⦠HL) -HL * ] qed-. -lemma csx_appl_theta: âh,p,G,L,V,V2,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p}V.âV2.T⦠â - âV1. â¬*[1] V1 â V2 â â¦G, L⦠⢠â¬*[h] ðâ¦âV1.â{p}V.Tâ¦. +lemma csx_appl_theta: âh,p,G,L,V,V2,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p}V.âV2.T⦠â + âV1. â¬*[1] V1 â V2 â â¦G,L⦠⢠â¬*[h] ðâ¦âV1.â{p}V.Tâ¦. /2 width=5 by csx_appl_theta_aux/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpxs.ma index 14f7a9d3a..84086bcb6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpxs.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/lpxs_lpx.ma". (* Properties with unbound parallel rt-computation on all entries ***********) -lemma csx_lpxs_conf: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬*[h] L2 â - â¦G, L1⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L2⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_lpxs_conf: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬*[h] L2 â + â¦G,L1⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L2⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L1 #L2 #T #H @(lpxs_ind_dx ⦠H) -L2 /3 by lpxs_step_dx, csx_lpx_conf/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma index b96942572..07226df19 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/csx_csx.ma". (* Advanced properties ******************************************************) -fact csx_appl_beta_aux: âh,p,G,L,U1. â¦G, L⦠⢠â¬*[h] ðâ¦U1⦠â - âV,W,T1. U1 = â{p}âW.V.T1 â â¦G, L⦠⢠â¬*[h] ðâ¦âV.â{p}W.T1â¦. +fact csx_appl_beta_aux: âh,p,G,L,U1. â¦G,L⦠⢠â¬*[h] ðâ¦U1⦠â + âV,W,T1. U1 = â{p}âW.V.T1 â â¦G,L⦠⢠â¬*[h] ðâ¦âV.â{p}W.T1â¦. #h #p #G #L #X #H @(csx_ind ⦠H) -X #X #HT1 #IHT1 #V #W #T1 #H1 destruct @csx_intro #X #H1 #H2 @@ -42,23 +42,23 @@ elim (cpx_inv_appl1 ⦠H1) -H1 * qed-. (* Basic_1: was just: sn3_beta *) -lemma csx_appl_beta: âh,p,G,L,V,W,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p}âW.V.T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦âV.â{p}W.Tâ¦. +lemma csx_appl_beta: âh,p,G,L,V,W,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p}âW.V.T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦âV.â{p}W.Tâ¦. /2 width=3 by csx_appl_beta_aux/ qed. (* Advanced forward lemmas **************************************************) -fact csx_fwd_bind_dx_unit_aux: âh,G,L,U. â¦G, L⦠⢠â¬*[h] ðâ¦U⦠â - âp,I,J,V,T. U = â{p,I}V.T â â¦G, L.â¤{J}⦠⢠â¬*[h] ðâ¦Tâ¦. +fact csx_fwd_bind_dx_unit_aux: âh,G,L,U. â¦G,L⦠⢠â¬*[h] ðâ¦U⦠â + âp,I,J,V,T. U = â{p,I}V.T â â¦G,L.â¤{J}⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L #U #H elim H -H #U0 #_ #IH #p #I #J #V #T #H destruct @csx_intro #T2 #HLT2 #HT2 -@(IH (â{p,I}V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2 +@(IH (â{p, I}V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2 #H elim (tdeq_inv_pair ⦠H) -H /2 width=1 by/ qed-. -lemma csx_fwd_bind_dx_unit: âh,p,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â - âJ. â¦G, L.â¤{J}⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_bind_dx_unit: âh,p,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â + âJ. â¦G,L.â¤{J}⦠⢠â¬*[h] ðâ¦Tâ¦. /2 width=6 by csx_fwd_bind_dx_unit_aux/ qed-. -lemma csx_fwd_bind_unit: âh,p,I,G,L,V,T. â¦G, L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â - âJ. â¦G, L⦠⢠â¬*[h] ðâ¦V⦠⧠â¦G, L.â¤{J}⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_bind_unit: âh,p,I,G,L,V,T. â¦G,L⦠⢠â¬*[h] ðâ¦â{p,I}V.T⦠â + âJ. â¦G,L⦠⢠â¬*[h] ðâ¦V⦠⧠â¦G,L.â¤{J}⦠⢠â¬*[h] ðâ¦Tâ¦. /3 width=4 by csx_fwd_pair_sn, csx_fwd_bind_dx_unit, conj/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma index a254d9751..dcd0462e1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma @@ -20,8 +20,8 @@ include "basic_2/rt_computation/csx_csx.ma". (* Properties with sort-irrelevant equivalence for local environments *******) (* Basic_2A1: uses: csx_lleq_conf *) -lemma csx_rdeq_conf: âh,G,L1,T. â¦G, L1⦠⢠â¬*[h] ðâ¦T⦠â - âL2. L1 â[T] L2 â â¦G, L2⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_rdeq_conf: âh,G,L1,T. â¦G,L1⦠⢠â¬*[h] ðâ¦T⦠â + âL2. L1 â[T] L2 â â¦G,L2⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L1 #T #H @(csx_ind ⦠H) -T #T1 #_ #IH #L2 #HL12 @csx_intro #T2 #HT12 #HnT12 @@ -31,5 +31,5 @@ qed-. (* Basic_2A1: uses: csx_lleq_conf *) lemma csx_rdeq_trans: âh,L1,L2,T. L1 â[T] L2 â - âG. â¦G, L2⦠⢠â¬*[h] ðâ¦T⦠â â¦G, L1⦠⢠â¬*[h] ðâ¦Tâ¦. + âG. â¦G,L2⦠⢠â¬*[h] ðâ¦T⦠â â¦G,L1⦠⢠â¬*[h] ðâ¦Tâ¦. /3 width=3 by csx_rdeq_conf, rdeq_sym/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma index 95cb186f5..50a460732 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma @@ -19,9 +19,9 @@ include "basic_2/rt_computation/csx_csx.ma". (* Properties with simple terms *********************************************) -lemma csx_appl_simple: âh,G,L,V. â¦G, L⦠⢠â¬*[h] ðâ¦V⦠â âT1. - (âT2. â¦G, L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â â¦G, L⦠⢠â¬*[h] ðâ¦âV.T2â¦) â - ðâ¦T1⦠â â¦G, L⦠⢠â¬*[h] ðâ¦âV.T1â¦. +lemma csx_appl_simple: âh,G,L,V. â¦G,L⦠⢠â¬*[h] ðâ¦V⦠â âT1. + (âT2. â¦G,L⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â â¦G,L⦠⢠â¬*[h] ðâ¦âV.T2â¦) â + ðâ¦T1⦠â â¦G,L⦠⢠â¬*[h] ðâ¦âV.T1â¦. #h #G #L #V #H @(csx_ind ⦠H) -V #V #_ #IHV #T1 #IHT1 #HT1 @csx_intro #X #H1 #H2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_theq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_theq.ma index 478f6fa05..bb3b10b01 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_theq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_theq.ma @@ -24,9 +24,9 @@ include "basic_2/rt_computation/csx_csx.ma". (* Basic_1: was just: sn3_appl_appl *) (* Basic_2A1: was: csx_appl_simple_tsts *) -lemma csx_appl_simple_theq: âh,G,L,V. â¦G, L⦠⢠â¬*[h] ðâ¦V⦠â âT1. â¦G, L⦠⢠â¬*[h] ðâ¦T1⦠â - (âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â (T1 ⩳ T2 â â¥) â â¦G, L⦠⢠â¬*[h] ðâ¦âV.T2â¦) â - ðâ¦T1⦠â â¦G, L⦠⢠â¬*[h] ðâ¦âV.T1â¦. +lemma csx_appl_simple_theq: âh,G,L,V. â¦G,L⦠⢠â¬*[h] ðâ¦V⦠â âT1. â¦G,L⦠⢠â¬*[h] ðâ¦T1⦠â + (âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â (T1 ⩳ T2 â â¥) â â¦G,L⦠⢠â¬*[h] ðâ¦âV.T2â¦) â + ðâ¦T1⦠â â¦G,L⦠⢠â¬*[h] ðâ¦âV.T1â¦. #h #G #L #V #H @(csx_ind ⦠H) -V #V #_ #IHV #T1 #H @(csx_ind ⦠H) -T1 #T1 #H1T1 #IHT1 #H2T1 #H3T1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_vector.ma index 0e11278b9..f4b85eb9d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_vector.ma @@ -26,14 +26,14 @@ interpretation (* Basic inversion lemmas ***************************************************) -lemma csxv_inv_cons: âh,G,L,T,Ts. â¦G, L⦠⢠â¬*[h] ðâ¦T⨮Ts⦠â - â¦G, L⦠⢠â¬*[h] ðâ¦T⦠⧠â¦G, L⦠⢠â¬*[h] ðâ¦Tsâ¦. +lemma csxv_inv_cons: âh,G,L,T,Ts. â¦G,L⦠⢠â¬*[h] ðâ¦T⨮Ts⦠â + â¦G,L⦠⢠â¬*[h] ðâ¦T⦠⧠â¦G,L⦠⢠â¬*[h] ðâ¦Tsâ¦. normalize // qed-. (* Basic forward lemmas *****************************************************) -lemma csx_fwd_applv: âh,G,L,T,Vs. â¦G, L⦠⢠â¬*[h] ðâ¦â¶Vs.T⦠â - â¦G, L⦠⢠â¬*[h] ðâ¦Vs⦠⧠â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma csx_fwd_applv: âh,G,L,T,Vs. â¦G,L⦠⢠â¬*[h] ðâ¦â¶Vs.T⦠â + â¦G,L⦠⢠â¬*[h] ðâ¦Vs⦠⧠â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L #T #Vs elim Vs -Vs /2 width=1 by conj/ #V #Vs #IHVs #HVs lapply (csx_fwd_pair_sn ⦠HVs) #HV diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma index ba56fd0c5..2c2f375f2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma @@ -20,45 +20,45 @@ include "basic_2/rt_computation/fpbs.ma". definition fpbg: âh. tri_relation genv lenv term â λh,G1,L1,T1,G2,L2,T2. - ââG,L,T. â¦G1, L1, T1⦠â»[h] â¦G, L, T⦠& â¦G, L, T⦠â¥[h] â¦G2, L2, T2â¦. + ââG,L,T. â¦G1,L1,T1⦠â»[h] â¦G,L,T⦠& â¦G,L,T⦠â¥[h] â¦G2,L2,T2â¦. interpretation "proper parallel rst-computation (closure)" 'PRedSubTyStarProper h G1 L1 T1 G2 L2 T2 = (fpbg h G1 L1 T1 G2 L2 T2). (* Basic properties *********************************************************) -lemma fpb_fpbg: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fpb_fpbg: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /2 width=5 by ex2_3_intro/ qed. lemma fpbg_fpbq_trans: âh,G1,G,G2,L1,L,L2,T1,T,T2. - â¦G1, L1, T1⦠>[h] â¦G, L, T⦠â â¦G, L, T⦠â½[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠>[h] â¦G,L,T⦠â â¦G,L,T⦠â½[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 * /3 width=9 by fpbs_strap1, ex2_3_intro/ qed-. lemma fpbg_fqu_trans (h): âG1,G,G2,L1,L,L2,T1,T,T2. - â¦G1, L1, T1⦠>[h] â¦G, L, T⦠â â¦G, L, T⦠â â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠>[h] â¦G,L,T⦠â â¦G,L,T⦠â â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2 /4 width=5 by fpbg_fpbq_trans, fpbq_fquq, fqu_fquq/ qed-. (* Note: this is used in the closure proof *) -lemma fpbg_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G, L, T⦠â¥[h] â¦G2, L2, T2⦠â - âG1,L1,T1. â¦G1, L1, T1⦠>[h] â¦G, L, T⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fpbg_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G,L,T⦠â¥[h] â¦G2,L2,T2⦠â + âG1,L1,T1. â¦G1,L1,T1⦠>[h] â¦G,L,T⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G #G2 #L #L2 #T #T2 #H @(fpbs_ind_dx ⦠H) -G -L -T /3 width=5 by fpbg_fpbq_trans/ qed-. (* Basic_2A1: uses: fpbg_fleq_trans *) -lemma fpbg_fdeq_trans: âh,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠>[h] â¦G, L, T⦠â - âG2,L2,T2. â¦G, L, T⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fpbg_fdeq_trans: âh,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠>[h] â¦G,L,T⦠â + âG2,L2,T2. â¦G,L,T⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /3 width=5 by fpbg_fpbq_trans, fpbq_fdeq/ qed-. (* Properties with t-bound rt-transition for terms **************************) lemma cpm_tdneq_cpm_fpbg (h) (G) (L): - ân1,T1,T. â¦G, L⦠⢠T1 â¡[n1,h] T â (T1 â T â â¥) â - ân2,T2. â¦G, L⦠⢠T â¡[n2,h] T2 â â¦G, L, T1⦠>[h] â¦G, L, T2â¦. + ân1,T1,T. â¦G,L⦠⢠T1 â¡[n1,h] T â (T1 â T â â¥) â + ân2,T2. â¦G,L⦠⢠T â¡[n2,h] T2 â â¦G,L,T1⦠>[h] â¦G,L,T2â¦. /4 width=5 by fpbq_fpbs, cpm_fpbq, cpm_fpb, ex2_3_intro/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_cpxs.ma index d5d24893f..6fef34261 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_cpxs.ma @@ -21,13 +21,13 @@ include "basic_2/rt_computation/fpbg_fpbs.ma". (* Properties with unbound context-sensitive parallel rt-computation ********) (* Basic_2A1: was: cpxs_fpbg *) -lemma cpxs_tdneq_fpbg (h): âG,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - (T1 â T2 â â¥) â â¦G, L, T1⦠>[h] â¦G, L, T2â¦. +lemma cpxs_tdneq_fpbg (h): âG,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + (T1 â T2 â â¥) â â¦G,L,T1⦠>[h] â¦G,L,T2â¦. #h #G #L #T1 #T2 #H #H0 elim (cpxs_tdneq_fwd_step_sn ⦠H ⦠H0) -H -H0 /4 width=5 by cpxs_tdeq_fpbs, fpb_cpx, ex2_3_intro/ qed. -lemma cpxs_fpbg_trans (h): âG1,L1,T1,T. â¦G1, L1⦠⢠T1 â¬*[h] T â - âG2,L2,T2. â¦G1, L1, T⦠>[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma cpxs_fpbg_trans (h): âG1,L1,T1,T. â¦G1,L1⦠⢠T1 â¬*[h] T â + âG2,L2,T2. â¦G1,L1,T⦠>[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_fpbg_trans, cpxs_fpbs/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbs.ma index 57f4a81af..1eb2d110b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbs.ma @@ -22,7 +22,7 @@ include "basic_2/rt_computation/fpbg.ma". (* Advanced forward lemmas **************************************************) lemma fpbg_fwd_fpbs: âh,G1,G2,L1,L2,T1,T2. - â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 * /3 width=5 by fpbs_strap2, fpb_fpbq/ qed-. @@ -30,8 +30,8 @@ qed-. (* Advanced properties with sort-irrelevant equivalence on closures *********) (* Basic_2A1: uses: fleq_fpbg_trans *) -lemma fdeq_fpbg_trans: âh,G,G2,L,L2,T,T2. â¦G, L, T⦠>[h] â¦G2, L2, T2⦠â - âG1,L1,T1. â¦G1, L1, T1⦠â â¦G, L, T⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fdeq_fpbg_trans: âh,G,G2,L,L2,T,T2. â¦G,L,T⦠>[h] â¦G2,L2,T2⦠â + âG1,L1,T1. â¦G1,L1,T1⦠â â¦G,L,T⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G #G2 #L #L2 #T #T2 * #G0 #L0 #T0 #H0 #H02 #G1 #L1 #T1 #H1 elim (fdeq_fpb_trans ⦠H1 ⦠H0) -G -L -T /4 width=9 by fpbs_strap2, fpbq_fdeq, ex2_3_intro/ @@ -40,15 +40,15 @@ qed-. (* Properties with parallel proper rst-reduction on closures ****************) lemma fpb_fpbg_trans: âh,G1,G,G2,L1,L,L2,T1,T,T2. - â¦G1, L1, T1⦠â»[h] â¦G, L, T⦠â â¦G, L, T⦠>[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠â»[h] â¦G,L,T⦠â â¦G,L,T⦠>[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /3 width=5 by fpbg_fwd_fpbs, ex2_3_intro/ qed-. (* Properties with parallel rst-reduction on closures ***********************) lemma fpbq_fpbg_trans: âh,G1,G,G2,L1,L,L2,T1,T,T2. - â¦G1, L1, T1⦠â½[h] â¦G, L, T⦠â â¦G, L, T⦠>[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠â½[h] â¦G,L,T⦠â â¦G,L,T⦠>[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2 elim (fpbq_inv_fpb ⦠H1) -H1 /2 width=5 by fdeq_fpbg_trans, fpb_fpbg_trans/ @@ -56,8 +56,8 @@ qed-. (* Properties with parallel rst-compuutation on closures ********************) -lemma fpbs_fpbg_trans: âh,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â - âG2,L2,T2. â¦G, L, T⦠>[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fpbs_fpbg_trans: âh,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â + âG2,L2,T2. â¦G,L,T⦠>[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G1 #G #L1 #L #T1 #T #H @(fpbs_ind ⦠H) -G -L -T /3 width=5 by fpbq_fpbg_trans/ qed-. @@ -71,9 +71,9 @@ lemma fqup_fpbg_trans (h): (* Advanced inversion lemmas of parallel rst-computation on closures ********) (* Basic_2A1: was: fpbs_fpbg *) -lemma fpbs_inv_fpbg: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â - â¨â¨ â¦G1, L1, T1⦠â â¦G2, L2, T2⦠- | â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fpbs_inv_fpbg: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â + â¨â¨ â¦G1,L1,T1⦠â â¦G2,L2,T2⦠+ | â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind ⦠H) -G2 -L2 -T2 [ /2 width=1 by or_introl/ | #G #G2 #L #L2 #T #T2 #_ #H2 * #H1 @@ -89,9 +89,9 @@ qed-. (* Advanced properties of parallel rst-computation on closures **************) -lemma fpbs_fpb_trans: âh,F1,F2,K1,K2,T1,T2. â¦F1, K1, T1⦠â¥[h] â¦F2, K2, T2⦠â - âG2,L2,U2. â¦F2, K2, T2⦠â»[h] â¦G2, L2, U2⦠â - ââG1,L1,U1. â¦F1, K1, T1⦠â»[h] â¦G1, L1, U1⦠& â¦G1, L1, U1⦠â¥[h] â¦G2, L2, U2â¦. +lemma fpbs_fpb_trans: âh,F1,F2,K1,K2,T1,T2. â¦F1,K1,T1⦠â¥[h] â¦F2,K2,T2⦠â + âG2,L2,U2. â¦F2,K2,T2⦠â»[h] â¦G2,L2,U2⦠â + ââG1,L1,U1. â¦F1,K1,T1⦠â»[h] â¦G1,L1,U1⦠& â¦G1,L1,U1⦠â¥[h] â¦G2,L2,U2â¦. #h #F1 #F2 #K1 #K2 #T1 #T2 #H elim (fpbs_inv_fpbg ⦠H) -H [ #H12 #G2 #L2 #U2 #H2 elim (fdeq_fpb_trans ⦠H12 ⦠H2) -F2 -K2 -T2 /3 width=5 by fdeq_fpbs, ex2_3_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fqup.ma index c72dcc821..9e40865af 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fqup.ma @@ -19,14 +19,14 @@ include "basic_2/rt_computation/fpbg.ma". (* Advanced properties with sort-irrelevant equivalence for terms ***********) -lemma fpbg_tdeq_div: âh,G1,G2,L1,L2,T1,T. â¦G1, L1, T1⦠>[h] â¦G2, L2, T⦠â - âT2. T2 â T â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fpbg_tdeq_div: âh,G1,G2,L1,L2,T1,T. â¦G1,L1,T1⦠>[h] â¦G2,L2,T⦠â + âT2. T2 â T â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. /4 width=5 by fpbg_fdeq_trans, tdeq_fdeq, tdeq_sym/ qed-. (* Properties with plus-iterated structural successor for closures **********) (* Note: this is used in the closure proof *) -lemma fqup_fpbg: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+ â¦G2, L2, T2⦠â â¦G1, L1, T1⦠>[h] â¦G2, L2, T2â¦. +lemma fqup_fpbg: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+ â¦G2,L2,T2⦠â â¦G1,L1,T1⦠>[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqup_inv_step_sn ⦠H) -H /3 width=5 by fqus_fpbs, fpb_fqu, ex2_3_intro/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lpxs.ma index 4abcd30de..0921a5e12 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lpxs.ma @@ -20,8 +20,8 @@ include "basic_2/rt_computation/fpbg.ma". (* Properties with unbound rt-computation on full local environments ********) (* Basic_2A1: uses: lpxs_fpbg *) -lemma lpxs_rdneq_fpbg: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬*[h] L2 â - (L1 â[T] L2 â â¥) â â¦G, L1, T⦠>[h] â¦G, L2, Tâ¦. +lemma lpxs_rdneq_fpbg: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬*[h] L2 â + (L1 â[T] L2 â â¥) â â¦G,L1,T⦠>[h] â¦G,L2,Tâ¦. #h #G #L1 #L2 #T #H #H0 elim (lpxs_rdneq_inv_step_sn ⦠H ⦠H0) -H -H0 /4 width=7 by fpb_lpx, lpxs_fdeq_fpbs, fdeq_intro_sn, ex2_3_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma index ab2994823..9d6f5c280 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma @@ -27,13 +27,13 @@ interpretation "parallel rst-computation (closure)" (* Basic eliminators ********************************************************) lemma fpbs_ind: âh,G1,L1,T1. âQ:relation3 genv lenv term. Q G1 L1 T1 â - (âG,G2,L,L2,T,T2. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â â¦G, L, T⦠â½[h] â¦G2, L2, T2⦠â Q G L T â Q G2 L2 T2) â - âG2,L2,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â Q G2 L2 T2. + (âG,G2,L,L2,T,T2. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â â¦G,L,T⦠â½[h] â¦G2,L2,T2⦠â Q G L T â Q G2 L2 T2) â + âG2,L2,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â Q G2 L2 T2. /3 width=8 by tri_TC_star_ind/ qed-. lemma fpbs_ind_dx: âh,G2,L2,T2. âQ:relation3 genv lenv term. Q G2 L2 T2 â - (âG1,G,L1,L,T1,T. â¦G1, L1, T1⦠â½[h] â¦G, L, T⦠â â¦G, L, T⦠â¥[h] â¦G2, L2, T2⦠â Q G L T â Q G1 L1 T1) â - âG1,L1,T1. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â Q G1 L1 T1. + (âG1,G,L1,L,T1,T. â¦G1,L1,T1⦠â½[h] â¦G,L,T⦠â â¦G,L,T⦠â¥[h] â¦G2,L2,T2⦠â Q G L T â Q G1 L1 T1) â + âG1,L1,T1. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â Q G1 L1 T1. /3 width=8 by tri_TC_star_ind_dx/ qed-. (* Basic properties *********************************************************) @@ -41,34 +41,34 @@ lemma fpbs_ind_dx: âh,G2,L2,T2. âQ:relation3 genv lenv term. Q G2 L2 T2 â lemma fpbs_refl: âh. tri_reflexive ⦠(fpbs h). /2 width=1 by tri_inj/ qed. -lemma fpbq_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbq_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /2 width=1 by tri_inj/ qed. -lemma fpbs_strap1: âh,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â - â¦G, L, T⦠â½[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_strap1: âh,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â + â¦G,L,T⦠â½[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /2 width=5 by tri_step/ qed-. -lemma fpbs_strap2: âh,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â½[h] â¦G, L, T⦠â - â¦G, L, T⦠â¥[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_strap2: âh,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â½[h] â¦G,L,T⦠â + â¦G,L,T⦠â¥[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /2 width=5 by tri_TC_strap/ qed-. (* Basic_2A1: uses: lleq_fpbs fleq_fpbs *) -lemma fdeq_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fdeq_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=1 by fpbq_fpbs, fpbq_fdeq/ qed. (* Basic_2A1: uses: fpbs_lleq_trans *) -lemma fpbs_fdeq_trans: âh,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â - âG2,L2,T2. â¦G, L, T⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_fdeq_trans: âh,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â + âG2,L2,T2. â¦G,L,T⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=9 by fpbs_strap1, fpbq_fdeq/ qed-. (* Basic_2A1: uses: lleq_fpbs_trans *) -lemma fdeq_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G, L, T⦠â¥[h] â¦G2, L2, T2⦠â - âG1,L1,T1. â¦G1, L1, T1⦠â â¦G, L, T⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fdeq_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G,L,T⦠â¥[h] â¦G2,L2,T2⦠â + âG1,L1,T1. â¦G1,L1,T1⦠â â¦G,L,T⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_strap2, fpbq_fdeq/ qed-. lemma tdeq_rdeq_lpx_fpbs: âh,T1,T2. T1 â T2 â âL1,L0. L1 â[T2] L0 â - âG,L2. â¦G, L0⦠⢠â¬[h] L2 â â¦G, L1, T1⦠â¥[h] â¦G, L2, T2â¦. + âG,L2. â¦G,L0⦠⢠â¬[h] L2 â â¦G,L1,T1⦠â¥[h] â¦G,L2,T2â¦. /4 width=5 by fdeq_fpbs, fpbs_strap1, fpbq_lpx, fdeq_intro_dx/ qed. (* Basic_2A1: removed theorems 3: 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 0ecacf3e4..9d27bacb8 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 @@ -19,8 +19,8 @@ include "basic_2/rt_computation/fpbs.ma". (* Properties with atomic arity assignment for terms ************************) -lemma fpbs_aaa_conf: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â - âA1. â¦G1, L1⦠⢠T1 â A1 â âA2. â¦G2, L2⦠⢠T2 â A2. +lemma fpbs_aaa_conf: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â + âA1. â¦G1,L1⦠⢠T1 â A1 â âA2. â¦G2,L2⦠⢠T2 â A2. #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind ⦠H) -G2 -L2 -T2 /2 width=2 by ex_intro/ #G #G2 #L #L2 #T #T2 #_ #H2 #IH1 #A #HA elim (IH1 ⦠HA) -IH1 -A /2 width=8 by fpbq_aaa_conf/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpx.ma index b716e5d43..5dd4e5378 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpx.ma @@ -21,9 +21,9 @@ include "basic_2/rt_computation/fpbs_lpxs.ma". (* Properties with unbound context-sensitive parallel rt-transition *********) (* Basic_2A1: uses: fpbs_cpx_trans_neq *) -lemma fpbs_cpx_tdneq_trans: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â¥[h] â¦G2, L2, U2â¦. +lemma fpbs_cpx_tdneq_trans: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â¥[h] â¦G2,L2,U2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2 elim (fpbs_inv_star ⦠H) -H #G0 #L0 #L3 #T0 #T3 #HT10 #H10 #HL03 #H32 elim (fdeq_cpx_trans ⦠H32 ⦠HTU2) -HTU2 #T4 #HT34 #H42 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpxs.ma index 09a7919b1..f995181c3 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpxs.ma @@ -19,40 +19,40 @@ include "basic_2/rt_computation/fpbs_fqup.ma". (* Properties with unbound context-sensitive parallel rt-computation ********) -lemma cpxs_fpbs: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â â¦G, L, T1⦠â¥[h] â¦G, L, T2â¦. +lemma cpxs_fpbs: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â â¦G,L,T1⦠â¥[h] â¦G,L,T2â¦. #h #G #L #T1 #T2 #H @(cpxs_ind ⦠H) -T2 /3 width=5 by fpbq_cpx, fpbs_strap1/ qed. -lemma fpbs_cpxs_trans: âh,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G1, L1, T1⦠â¥[h] â¦G, L, T2â¦. +lemma fpbs_cpxs_trans: âh,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â + âT2. â¦G,L⦠⢠T â¬*[h] T2 â â¦G1,L1,T1⦠â¥[h] â¦G,L,T2â¦. #h #G1 #G #L1 #L #T1 #T #H1 #T2 #H @(cpxs_ind ⦠H) -T2 /3 width=5 by fpbs_strap1, fpbq_cpx/ qed-. -lemma cpxs_fpbs_trans: âh,G1,G2,L1,L2,T,T2. â¦G1, L1, T⦠â¥[h] â¦G2, L2, T2⦠â - âT1. â¦G1, L1⦠⢠T1 â¬*[h] T â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma cpxs_fpbs_trans: âh,G1,G2,L1,L2,T,T2. â¦G1,L1,T⦠â¥[h] â¦G2,L2,T2⦠â + âT1. â¦G1,L1⦠⢠T1 â¬*[h] T â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T #T2 #H1 #T1 #H @(cpxs_ind_dx ⦠H) -T1 /3 width=5 by fpbs_strap2, fpbq_cpx/ qed-. -lemma cpxs_tdeq_fpbs_trans: âh,G1,L1,T1,T. â¦G1, L1⦠⢠T1 â¬*[h] T â +lemma cpxs_tdeq_fpbs_trans: âh,G1,L1,T1,T. â¦G1,L1⦠⢠T1 â¬*[h] T â âT0. T â T0 â - âG2,L2,T2. â¦G1, L1, T0⦠â¥[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. + âG2,L2,T2. â¦G1,L1,T0⦠â¥[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=3 by cpxs_fpbs_trans, tdeq_fpbs_trans/ qed-. -lemma cpxs_tdeq_fpbs: âh,G,L,T1,T. â¦G, L⦠⢠T1 â¬*[h] T â - âT2. T â T2 â â¦G, L, T1⦠â¥[h] â¦G, L, T2â¦. +lemma cpxs_tdeq_fpbs: âh,G,L,T1,T. â¦G,L⦠⢠T1 â¬*[h] T â + âT2. T â T2 â â¦G,L,T1⦠â¥[h] â¦G,L,T2â¦. /4 width=3 by cpxs_fpbs_trans, fdeq_fpbs, tdeq_fdeq/ qed. (* Properties with star-iterated structural successor for closures **********) -lemma cpxs_fqus_fpbs: âh,G1,L1,T1,T. â¦G1, L1⦠⢠T1 â¬*[h] T â - âG2,L2,T2. â¦G1, L1, T⦠â* â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma cpxs_fqus_fpbs: âh,G1,L1,T1,T. â¦G1,L1⦠⢠T1 â¬*[h] T â + âG2,L2,T2. â¦G1,L1,T⦠â* â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_fqus_trans, cpxs_fpbs/ qed. (* Properties with plus-iterated structural successor for closures **********) -lemma cpxs_fqup_fpbs: âh,G1,L1,T1,T. â¦G1, L1⦠⢠T1 â¬*[h] T â - âG2,L2,T2. â¦G1, L1, T⦠â+ â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma cpxs_fqup_fpbs: âh,G1,L1,T1,T. â¦G1,L1⦠⢠T1 â¬*[h] T â + âG2,L2,T2. â¦G1,L1,T⦠â+ â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_fqup_trans, cpxs_fpbs/ qed. 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 71f12aeff..583f5e31f 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 @@ -20,8 +20,8 @@ include "basic_2/rt_computation/fpbs.ma". (* Properties with sn for unbound parallel rt-transition for terms **********) (* Basic_2A1: was: csx_fpbs_conf *) -lemma fpbs_csx_conf: âh,G1,L1,T1. â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â â¦G2, L2⦠⢠â¬*[h] ðâ¦T2â¦. +lemma fpbs_csx_conf: âh,G1,L1,T1. â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â â¦G2,L2⦠⢠â¬*[h] ðâ¦T2â¦. #h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 #H @(fpbs_ind ⦠H) -G2 -L2 -T2 /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 2c6cb6a8b..428644da8 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 @@ -19,6 +19,6 @@ include "basic_2/rt_computation/fpbs.ma". (* Properties with proper parallel rst-reduction on closures ****************) -lemma fpb_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpb_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=1 by fpbq_fpbs, fpb_fpbq/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqup.ma index 8c588f3b3..ccb50f624 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqup.ma @@ -21,25 +21,25 @@ include "basic_2/rt_computation/fpbs_fqus.ma". (* Advanced properties ******************************************************) lemma tdeq_fpbs_trans: âh,T1,T. T1 â T â - âG1,G2,L1,L2,T2. â¦G1, L1, T⦠â¥[h] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. + âG1,G2,L1,L2,T2. â¦G1,L1,T⦠â¥[h] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fdeq_fpbs_trans, tdeq_fdeq/ qed-. -lemma fpbs_tdeq_trans: âh,G1,G2,L1,L2,T1,T. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T⦠â - âT2. T â T2 â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_tdeq_trans: âh,G1,G2,L1,L2,T1,T. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T⦠â + âT2. T â T2 â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_fdeq_trans, tdeq_fdeq/ qed-. (* Properties with plus-iterated structural successor for closures **********) -lemma fqup_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+ â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fqup_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+ â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 /4 width=5 by fqu_fquq, fpbq_fquq, tri_step/ qed. -lemma fpbs_fqup_trans: âh,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â - âG2,L2,T2. â¦G, L, T⦠â+ â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_fqup_trans: âh,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â + âG2,L2,T2. â¦G,L,T⦠â+ â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fpbs_fqus_trans, fqup_fqus/ qed-. -lemma fqup_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G, L, T⦠â¥[h] â¦G2, L2, T2⦠â - âG1,L1,T1. â¦G1, L1, T1⦠â+ â¦G, L, T⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fqup_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G,L,T⦠â¥[h] â¦G2,L2,T2⦠â + âG1,L1,T1. â¦G1,L1,T1⦠â+ â¦G,L,T⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by fqus_fpbs_trans, fqup_fqus/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqus.ma index 57de42633..c869f3d9f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqus.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqus.ma @@ -19,20 +19,20 @@ include "basic_2/rt_computation/fpbs.ma". (* Properties with star-iterated structural successor for closures **********) -lemma fqus_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â* â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fqus_fpbs: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â* â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind ⦠H) -G2 -L2 -T2 /3 width=5 by fpbq_fquq, tri_step/ qed. -lemma fpbs_fqus_trans: âh,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠â¥[h] â¦G, L, T⦠â - âG2,L2,T2. â¦G, L, T⦠â* â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_fqus_trans: âh,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠â¥[h] â¦G,L,T⦠â + âG2,L2,T2. â¦G,L,T⦠â* â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H @(fqus_ind ⦠H) -G2 -L2 -T2 /3 width=5 by fpbs_strap1, fpbq_fquq/ qed-. -lemma fqus_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G, L, T⦠â¥[h] â¦G2, L2, T2⦠â - âG1,L1,T1. â¦G1, L1, T1⦠â* â¦G, L, T⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fqus_fpbs_trans: âh,G,G2,L,L2,T,T2. â¦G,L,T⦠â¥[h] â¦G2,L2,T2⦠â + âG1,L1,T1. â¦G1,L1,T1⦠â* â¦G,L,T⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G #G2 #L #L2 #T #T2 #H1 #G1 #L1 #T1 #H @(fqus_ind_dx ⦠H) -G1 -L1 -T1 /3 width=5 by fpbs_strap2, fpbq_fquq/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lpxs.ma index c5ad6426a..07df0c624 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lpxs.ma @@ -23,49 +23,49 @@ include "basic_2/rt_computation/fpbs_cpxs.ma". (* Properties with unbound rt-computation on full local environments *******) -lemma lpxs_fpbs: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬*[h] L2 â â¦G, L1, T⦠â¥[h] â¦G, L2, Tâ¦. +lemma lpxs_fpbs: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬*[h] L2 â â¦G,L1,T⦠â¥[h] â¦G,L2,Tâ¦. #h #G #L1 #L2 #T #H @(lpxs_ind_dx ⦠H) -L2 /3 width=5 by fpbq_lpx, fpbs_strap1/ qed. -lemma fpbs_lpxs_trans: âh,G1,G2,L1,L,T1,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L, T2⦠â - âL2. â¦G2, L⦠⢠â¬*[h] L2 â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_lpxs_trans: âh,G1,G2,L1,L,T1,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L,T2⦠â + âL2. â¦G2,L⦠⢠â¬*[h] L2 â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L #T1 #T2 #H1 #L2 #H @(lpxs_ind_dx ⦠H) -L2 /3 width=5 by fpbs_strap1, fpbq_lpx/ qed-. -lemma lpxs_fpbs_trans: âh,G1,G2,L,L2,T1,T2. â¦G1, L, T1⦠â¥[h] â¦G2, L2, T2⦠â - âL1. â¦G1, L1⦠⢠â¬*[h] L â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma lpxs_fpbs_trans: âh,G1,G2,L,L2,T1,T2. â¦G1,L,T1⦠â¥[h] â¦G2,L2,T2⦠â + âL1. â¦G1,L1⦠⢠â¬*[h] L â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L #L2 #T1 #T2 #H1 #L1 #H @(lpxs_ind_sn ⦠H) -L1 /3 width=5 by fpbs_strap2, fpbq_lpx/ qed-. (* Basic_2A1: uses: lpxs_lleq_fpbs *) -lemma lpxs_fdeq_fpbs: âh,G1,L1,L,T1. â¦G1, L1⦠⢠â¬*[h] L â - âG2,L2,T2. â¦G1, L, T1⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma lpxs_fdeq_fpbs: âh,G1,L1,L,T1. â¦G1,L1⦠⢠â¬*[h] L â + âG2,L2,T2. â¦G1,L,T1⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=3 by lpxs_fpbs_trans, fdeq_fpbs/ qed. -lemma fpbs_lpx_trans: âh,G1,G2,L1,L,T1,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L, T2⦠â - âL2. â¦G2, L⦠⢠â¬[h] L2 â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fpbs_lpx_trans: âh,G1,G2,L1,L,T1,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L,T2⦠â + âL2. â¦G2,L⦠⢠â¬[h] L2 â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=3 by fpbs_lpxs_trans, lpx_lpxs/ qed-. (* Properties with star-iterated structural successor for closures **********) -lemma fqus_lpxs_fpbs: âh,G1,G2,L1,L,T1,T2. â¦G1, L1, T1⦠â* â¦G2, L, T2⦠â - âL2. â¦G2, L⦠⢠â¬*[h] L2 â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma fqus_lpxs_fpbs: âh,G1,G2,L1,L,T1,T2. â¦G1,L1,T1⦠â* â¦G2,L,T2⦠â + âL2. â¦G2,L⦠⢠â¬*[h] L2 â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=3 by fpbs_lpxs_trans, fqus_fpbs/ qed. (* Properties with unbound context-sensitive parallel rt-computation ********) -lemma cpxs_fqus_lpxs_fpbs: âh,G1,L1,T1,T. â¦G1, L1⦠⢠T1 â¬*[h] T â - âG2,L,T2. â¦G1, L1, T⦠â* â¦G2, L, T2⦠â - âL2.â¦G2, L⦠⢠â¬*[h] L2 â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2â¦. +lemma cpxs_fqus_lpxs_fpbs: âh,G1,L1,T1,T. â¦G1,L1⦠⢠T1 â¬*[h] T â + âG2,L,T2. â¦G1,L1,T⦠â* â¦G2,L,T2⦠â + âL2.â¦G2,L⦠⢠â¬*[h] L2 â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2â¦. /3 width=5 by cpxs_fqus_fpbs, fpbs_lpxs_trans/ qed. -lemma fpbs_cpxs_tdeq_fqup_lpx_trans: âh,G1,G3,L1,L3,T1,T3. â¦G1, L1, T1⦠⥠[h] â¦G3, L3, T3⦠â - âT4. â¦G3, L3⦠⢠T3 â¬*[h] T4 â âT5. T4 â T5 â - âG2,L4,T2. â¦G3, L3, T5⦠â+ â¦G2, L4, T2⦠â - âL2. â¦G2, L4⦠⢠â¬[h] L2 â â¦G1, L1, T1⦠⥠[h] â¦G2, L2, T2â¦. +lemma fpbs_cpxs_tdeq_fqup_lpx_trans: âh,G1,G3,L1,L3,T1,T3. â¦G1,L1,T1⦠⥠[h] â¦G3,L3,T3⦠â + âT4. â¦G3,L3⦠⢠T3 â¬*[h] T4 â âT5. T4 â T5 â + âG2,L4,T2. â¦G3,L3,T5⦠â+ â¦G2,L4,T2⦠â + âL2. â¦G2,L4⦠⢠â¬[h] L2 â â¦G1,L1,T1⦠⥠[h] â¦G2,L2,T2â¦. #h #G1 #G3 #L1 #L3 #T1 #T3 #H13 #T4 #HT34 #T5 #HT45 #G2 #L4 #T2 #H34 #L2 #HL42 @(fpbs_lpx_trans ⦠HL42) -L2 (**) (* full auto too slow *) @(fpbs_fqup_trans ⦠H34) -G2 -L4 -T2 @@ -75,18 +75,18 @@ qed-. (* Advanced properties ******************************************************) (* Basic_2A1: uses: fpbs_intro_alt *) -lemma fpbs_intro_star: âh,G1,L1,T1,T. â¦G1, L1⦠⢠T1 â¬*[h] T â - âG,L,T0. â¦G1, L1, T⦠â* â¦G, L, T0⦠â - âL0. â¦G, L⦠⢠â¬*[h] L0 â - âG2,L2,T2. â¦G, L0, T0⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠. +lemma fpbs_intro_star: âh,G1,L1,T1,T. â¦G1,L1⦠⢠T1 â¬*[h] T â + âG,L,T0. â¦G1,L1,T⦠â* â¦G,L,T0⦠â + âL0. â¦G,L⦠⢠â¬*[h] L0 â + âG2,L2,T2. â¦G,L0,T0⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠. /3 width=5 by cpxs_fqus_lpxs_fpbs, fpbs_strap1, fpbq_fdeq/ qed. (* Advanced inversion lemmas *************************************************) (* Basic_2A1: uses: fpbs_inv_alt *) -lemma fpbs_inv_star: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â - ââG,L,L0,T,T0. â¦G1, L1⦠⢠T1 â¬*[h] T & â¦G1, L1, T⦠â* â¦G, L, T0⦠- & â¦G, L⦠⢠â¬*[h] L0 & â¦G, L0, T0⦠â â¦G2, L2, T2â¦. +lemma fpbs_inv_star: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â + ââG,L,L0,T,T0. â¦G1,L1⦠⢠T1 â¬*[h] T & â¦G1,L1,T⦠â* â¦G,L,T0⦠+ & â¦G,L⦠⢠â¬*[h] L0 & â¦G,L0,T0⦠â â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind_dx ⦠H) -G1 -L1 -T1 [ /2 width=9 by ex4_5_intro/ | #G1 #G0 #L1 #L0 #T1 #T0 * -G0 -L0 -T0 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb.ma index 936fabeca..e5a0108c3 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb.ma @@ -19,7 +19,7 @@ include "basic_2/rt_transition/fpb.ma". inductive fsb (h): relation3 genv lenv term â | fsb_intro: âG1,L1,T1. ( - âG2,L2,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â fsb h G2 L2 T2 + âG2,L2,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â fsb h G2 L2 T2 ) â fsb h G1 L1 T1 . @@ -32,11 +32,11 @@ interpretation (* Note: eliminator with shorter ground hypothesis *) (* Note: to be named fsb_ind when fsb becomes a definition like csx, lfsx ***) lemma fsb_ind_alt: âh. âQ: relation3 â¦. ( - âG1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â ( - âG2,L2,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â Q G2 L2 T2 + âG1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â ( + âG2,L2,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â Q G2 L2 T2 ) â Q G1 L1 T1 ) â - âG,L,T. â¥[h] ðâ¦G, L, T⦠â Q G L T. + âG,L,T. â¥[h] ðâ¦G,L,T⦠â Q G L T. #h #Q #IH #G #L #T #H elim H -G -L -T /4 width=1 by fsb_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_aaa.ma index 93e9c0ec4..7ea1776a0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_aaa.ma @@ -22,17 +22,17 @@ include "basic_2/rt_computation/fsb_csx.ma". (* Main properties with atomic arity assignment for terms *******************) (* Note: this is the "big tree" theorem *) -theorem aaa_fsb: âh,G,L,T,A. â¦G, L⦠⢠T â A â â¥[h] ðâ¦G, L, Tâ¦. +theorem aaa_fsb: âh,G,L,T,A. â¦G,L⦠⢠T â A â â¥[h] ðâ¦G,L,Tâ¦. /3 width=2 by aaa_csx, csx_fsb/ qed. (* Advanced eliminators with atomic arity assignment for terms **************) fact aaa_ind_fpb_aux: âh. âQ:relation3 â¦. - (âG1,L1,T1,A. â¦G1, L1⦠⢠T1 â A â - (âG2,L2,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1,A. â¦G1,L1⦠⢠T1 â A â + (âG2,L2,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG,L,T. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â âA. â¦G, L⦠⢠T â A â Q G L T. + âG,L,T. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â âA. â¦G,L⦠⢠T â A â Q G L T. #h #R #IH #G #L #T #H @(csx_ind_fpb ⦠H) -G -L -T #G1 #L1 #T1 #H1 #IH1 #A1 #HTA1 @IH -IH // #G2 #L2 #T2 #H12 elim (fpbs_aaa_conf ⦠G2 ⦠L2 ⦠T2 ⦠HTA1) -A1 @@ -40,19 +40,19 @@ fact aaa_ind_fpb_aux: âh. âQ:relation3 â¦. qed-. lemma aaa_ind_fpb: âh. âQ:relation3 â¦. - (âG1,L1,T1,A. â¦G1, L1⦠⢠T1 â A â - (âG2,L2,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1,A. â¦G1,L1⦠⢠T1 â A â + (âG2,L2,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG,L,T,A. â¦G, L⦠⢠T â A â Q G L T. + âG,L,T,A. â¦G,L⦠⢠T â A â Q G L T. /4 width=4 by aaa_ind_fpb_aux, aaa_csx/ qed-. fact aaa_ind_fpbg_aux: âh. âQ:relation3 â¦. - (âG1,L1,T1,A. â¦G1, L1⦠⢠T1 â A â - (âG2,L2,T2. â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1,A. â¦G1,L1⦠⢠T1 â A â + (âG2,L2,T2. â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG,L,T. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â âA. â¦G, L⦠⢠T â A â Q G L T. + âG,L,T. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â âA. â¦G,L⦠⢠T â A â Q G L T. #h #Q #IH #G #L #T #H @(csx_ind_fpbg ⦠H) -G -L -T #G1 #L1 #T1 #H1 #IH1 #A1 #HTA1 @IH -IH // #G2 #L2 #T2 #H12 elim (fpbs_aaa_conf ⦠G2 ⦠L2 ⦠T2 ⦠HTA1) -A1 @@ -60,9 +60,9 @@ fact aaa_ind_fpbg_aux: âh. âQ:relation3 â¦. qed-. lemma aaa_ind_fpbg: âh. âQ:relation3 â¦. - (âG1,L1,T1,A. â¦G1, L1⦠⢠T1 â A â - (âG2,L2,T2. â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1,A. â¦G1,L1⦠⢠T1 â A â + (âG2,L2,T2. â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG,L,T,A. â¦G, L⦠⢠T â A â Q G L T. + âG,L,T,A. â¦G,L⦠⢠T â A â Q G L T. /4 width=4 by aaa_ind_fpbg_aux, aaa_csx/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_csx.ma index 2d33b783e..83d407f75 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_csx.ma @@ -21,14 +21,14 @@ include "basic_2/rt_computation/fsb_fpbg.ma". (* Inversion lemmas with context-sensitive stringly rt-normalizing terms ****) -lemma fsb_inv_csx: âh,G,L,T. â¥[h] ðâ¦G, L, T⦠â â¦G, L⦠⢠â¬*[h] ðâ¦Tâ¦. +lemma fsb_inv_csx: âh,G,L,T. â¥[h] ðâ¦G,L,T⦠â â¦G,L⦠⢠â¬*[h] ðâ¦Tâ¦. #h #G #L #T #H @(fsb_ind_alt ⦠H) -G -L -T /5 width=1 by csx_intro, fpb_cpx/ qed-. (* Propreties with context-sensitive stringly rt-normalizing terms **********) -lemma csx_fsb_fpbs: âh,G1,L1,T1. â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â â¥[h] ðâ¦G2, L2, T2â¦. +lemma csx_fsb_fpbs: âh,G1,L1,T1. â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â â¥[h] ðâ¦G2,L2,T2â¦. #h #G1 #L1 #T1 #H @(csx_ind ⦠H) -T1 #T1 #HT1 #IHc #G2 #L2 #T2 @(fqup_wf_ind (â) ⦠G2 L2 T2) -G2 -L2 -T2 #G0 #L0 #T0 #IHu #H10 @@ -56,23 +56,23 @@ generalize in match IHu; -IHu generalize in match H10; -H10 ] qed. -lemma csx_fsb: âh,G,L,T. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â â¥[h] ðâ¦G, L, Tâ¦. +lemma csx_fsb: âh,G,L,T. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â â¥[h] ðâ¦G,L,Tâ¦. /2 width=5 by csx_fsb_fpbs/ qed. (* Advanced eliminators *****************************************************) lemma csx_ind_fpb: âh. âQ:relation3 genv lenv term. - (âG1,L1,T1. â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â - (âG2,L2,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1. â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â + (âG2,L2,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG,L,T. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â Q G L T. + âG,L,T. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â Q G L T. /4 width=4 by fsb_inv_csx, csx_fsb, fsb_ind_alt/ qed-. lemma csx_ind_fpbg: âh. âQ:relation3 genv lenv term. - (âG1,L1,T1. â¦G1, L1⦠⢠â¬*[h] ðâ¦T1⦠â - (âG2,L2,T2. â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1. â¦G1,L1⦠⢠â¬*[h] ðâ¦T1⦠â + (âG2,L2,T2. â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG,L,T. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â Q G L T. + âG,L,T. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â Q G L T. /4 width=4 by fsb_inv_csx, csx_fsb, fsb_ind_fpbg/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma index 84703ccb6..a24b46ffe 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/fsb.ma". (* Properties with sort-irrelevant equivalence for closures *****************) -lemma fsb_fdeq_trans: âh,G1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â â¥[h] ðâ¦G2, L2, T2â¦. +lemma fsb_fdeq_trans: âh,G1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â¥[h] ðâ¦G2,L2,T2â¦. #h #G1 #L1 #T1 #H @(fsb_ind_alt ⦠H) -G1 -L1 -T1 #G1 #L1 #T1 #_ #IH #G2 #L2 #T2 #H12 @fsb_intro #G #L #T #H2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma index 806180ead..0ebebad3a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma @@ -19,8 +19,8 @@ include "basic_2/rt_computation/fsb_fdeq.ma". (* Properties with parallel rst-computation for closures ********************) -lemma fsb_fpbs_trans: âh,G1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â â¥[h] ðâ¦G2, L2, T2â¦. +lemma fsb_fpbs_trans: âh,G1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â â¥[h] ðâ¦G2,L2,T2â¦. #h #G1 #L1 #T1 #H @(fsb_ind_alt ⦠H) -G1 -L1 -T1 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12 elim (fpbs_inv_fpbg ⦠H12) -H12 @@ -32,19 +32,19 @@ qed-. (* Properties with proper parallel rst-computation for closures *************) lemma fsb_intro_fpbg: âh,G1,L1,T1. ( - âG2,L2,T2. â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â â¥[h] ðâ¦G2, L2, T2⦠- ) â â¥[h] ðâ¦G1, L1, T1â¦. + âG2,L2,T2. â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â â¥[h] ðâ¦G2,L2,T2⦠+ ) â â¥[h] ðâ¦G1,L1,T1â¦. /4 width=1 by fsb_intro, fpb_fpbg/ qed. (* Eliminators with proper parallel rst-computation for closures ************) lemma fsb_ind_fpbg_fpbs: âh. âQ:relation3 genv lenv term. - (âG1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â - (âG2,L2,T2. â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â + (âG2,L2,T2. â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â - âG2,L2,T2. â¦G1, L1, T1⦠â¥[h] â¦G2, L2, T2⦠â Q G2 L2 T2. + âG1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â + âG2,L2,T2. â¦G1,L1,T1⦠â¥[h] â¦G2,L2,T2⦠â Q G2 L2 T2. #h #Q #IH1 #G1 #L1 #T1 #H @(fsb_ind_alt ⦠H) -G1 -L1 -T1 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12 @IH1 -IH1 @@ -56,11 +56,11 @@ lemma fsb_ind_fpbg_fpbs: âh. âQ:relation3 genv lenv term. qed-. lemma fsb_ind_fpbg: âh. âQ:relation3 genv lenv term. - (âG1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â - (âG2,L2,T2. â¦G1, L1, T1⦠>[h] â¦G2, L2, T2⦠â Q G2 L2 T2) â + (âG1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â + (âG2,L2,T2. â¦G1,L1,T1⦠>[h] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â - âG1,L1,T1. â¥[h] ðâ¦G1, L1, T1⦠â Q G1 L1 T1. + âG1,L1,T1. â¥[h] ðâ¦G1,L1,T1⦠â Q G1 L1 T1. #h #Q #IH #G1 #L1 #T1 #H @(fsb_ind_fpbg_fpbs ⦠H) -H /3 width=1 by/ qed-. @@ -68,7 +68,7 @@ qed-. (* Inversion lemmas with proper parallel rst-computation for closures *******) lemma fsb_fpbg_refl_false (h) (G) (L) (T): - â¥[h] ðâ¦G, L, T⦠â â¦G, L, T⦠>[h] â¦G, L, T⦠â â¥. + â¥[h] ðâ¦G,L,T⦠â â¦G,L,T⦠>[h] â¦G,L,T⦠â â¥. #h #G #L #T #H @(fsb_ind_fpbg ⦠H) -G -L -T #G1 #L1 #T1 #_ #IH #H /2 width=5 by/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs.ma index 880278d22..7a3de7dca 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs.ma @@ -28,38 +28,38 @@ interpretation (* Basic properties *********************************************************) (* Basic_2A1: uses: lprs_pair_refl *) -lemma lprs_bind_refl_dx (h) (G): âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â - âI. â¦G, L1.â{I}⦠⢠â¡*[h] L2.â{I}. +lemma lprs_bind_refl_dx (h) (G): âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â + âI. â¦G,L1.â{I}⦠⢠â¡*[h] L2.â{I}. /2 width=1 by lex_bind_refl_dx/ qed. -lemma lprs_pair (h) (G): âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â - âV1,V2. â¦G, L1⦠⢠V1 â¡*[h] V2 â - âI. â¦G, L1.â{I}V1⦠⢠â¡*[h] L2.â{I}V2. +lemma lprs_pair (h) (G): âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â + âV1,V2. â¦G,L1⦠⢠V1 â¡*[h] V2 â + âI. â¦G,L1.â{I}V1⦠⢠â¡*[h] L2.â{I}V2. /2 width=1 by lex_pair/ qed. -lemma lprs_refl (h) (G): âL. â¦G, L⦠⢠â¡*[h] L. +lemma lprs_refl (h) (G): âL. â¦G,L⦠⢠â¡*[h] L. /2 width=1 by lex_refl/ qed. (* Basic inversion lemmas ***************************************************) (* Basic_2A1: uses: lprs_inv_atom1 *) -lemma lprs_inv_atom_sn (h) (G): âL2. â¦G, â⦠⢠â¡*[h] L2 â L2 = â. +lemma lprs_inv_atom_sn (h) (G): âL2. â¦G,â⦠⢠â¡*[h] L2 â L2 = â. /2 width=2 by lex_inv_atom_sn/ qed-. (* Basic_2A1: was: lprs_inv_pair1 *) lemma lprs_inv_pair_sn (h) (G): - âI,K1,L2,V1. â¦G, K1.â{I}V1⦠⢠â¡*[h] L2 â - ââK2,V2. â¦G, K1⦠⢠â¡*[h] K2 & â¦G, K1⦠⢠V1 â¡*[h] V2 & L2 = K2.â{I}V2. + âI,K1,L2,V1. â¦G,K1.â{I}V1⦠⢠â¡*[h] L2 â + ââK2,V2. â¦G,K1⦠⢠â¡*[h] K2 & â¦G,K1⦠⢠V1 â¡*[h] V2 & L2 = K2.â{I}V2. /2 width=1 by lex_inv_pair_sn/ qed-. (* Basic_2A1: uses: lprs_inv_atom2 *) -lemma lprs_inv_atom_dx (h) (G): âL1. â¦G, L1⦠⢠â¡*[h] â â L1 = â. +lemma lprs_inv_atom_dx (h) (G): âL1. â¦G,L1⦠⢠â¡*[h] â â L1 = â. /2 width=2 by lex_inv_atom_dx/ qed-. (* Basic_2A1: was: lprs_inv_pair2 *) lemma lprs_inv_pair_dx (h) (G): - âI,L1,K2,V2. â¦G, L1⦠⢠â¡*[h] K2.â{I}V2 â - ââK1,V1. â¦G, K1⦠⢠â¡*[h] K2 & â¦G, K1⦠⢠V1 â¡*[h] V2 & L1 = K1.â{I}V1. + âI,L1,K2,V2. â¦G,L1⦠⢠â¡*[h] K2.â{I}V2 â + ââK1,V1. â¦G,K1⦠⢠â¡*[h] K2 & â¦G,K1⦠⢠V1 â¡*[h] V2 & L1 = K1.â{I}V1. /2 width=1 by lex_inv_pair_dx/ qed-. (* Basic eliminators ********************************************************) @@ -68,12 +68,12 @@ lemma lprs_inv_pair_dx (h) (G): lemma lprs_ind (h) (G): âQ:relation lenv. Q (â) (â) â ( âI,K1,K2. - â¦G, K1⦠⢠â¡*[h] K2 â + â¦G,K1⦠⢠â¡*[h] K2 â Q K1 K2 â Q (K1.â{I}) (K2.â{I}) ) â ( âI,K1,K2,V1,V2. - â¦G, K1⦠⢠â¡*[h] K2 â â¦G, K1⦠⢠V1 â¡*[h] V2 â + â¦G,K1⦠⢠â¡*[h] K2 â â¦G,K1⦠⢠V1 â¡*[h] V2 â Q K1 K2 â Q (K1.â{I}V1) (K2.â{I}V2) ) â - âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â Q L1 L2. + âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â Q L1 L2. /3 width=4 by lex_ind/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma index ad24e5876..591dbd1c1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma @@ -19,22 +19,22 @@ include "basic_2/rt_computation/lprs_lpr.ma". (* Properties with t-bound context-sensitive rt-computarion for terms *******) lemma lprs_cpms_trans (n) (h) (G): - âL2,T1,T2. â¦G, L2⦠⢠T1 â¡*[n, h] T2 â - âL1. â¦G, L1⦠⢠â¡*[h] L2 â â¦G, L1⦠⢠T1 â¡*[n, h] T2. + âL2,T1,T2. â¦G,L2⦠⢠T1 â¡*[n,h] T2 â + âL1. â¦G,L1⦠⢠â¡*[h] L2 â â¦G,L1⦠⢠T1 â¡*[n,h] T2. #n #h #G #L2 #T1 #T2 #HT12 #L1 #H @(lprs_ind_sn ⦠H) -L1 /2 width=3 by lpr_cpms_trans/ qed-. lemma lprs_cpm_trans (n) (h) (G): - âL2,T1,T2. â¦G, L2⦠⢠T1 â¡[n, h] T2 â - âL1. â¦G, L1⦠⢠â¡*[h] L2 â â¦G, L1⦠⢠T1 â¡*[n, h] T2. + âL2,T1,T2. â¦G,L2⦠⢠T1 â¡[n,h] T2 â + âL1. â¦G,L1⦠⢠â¡*[h] L2 â â¦G,L1⦠⢠T1 â¡*[n,h] T2. /3 width=3 by lprs_cpms_trans, cpm_cpms/ qed-. (* Basic_2A1: includes cprs_bind2 *) lemma cpms_bind_dx (n) (h) (G) (L): - âV1,V2. â¦G, L⦠⢠V1 â¡*[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¡*[n, h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¡*[n, h] â{p,I}V2.T2. + âV1,V2. â¦G,L⦠⢠V1 â¡*[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¡*[n,h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¡*[n,h] â{p,I}V2.T2. /4 width=5 by lprs_cpms_trans, lprs_pair, cpms_bind/ qed. (* Inversion lemmas with t-bound context-sensitive rt-computarion for terms *) @@ -43,8 +43,8 @@ lemma cpms_bind_dx (n) (h) (G) (L): (* Basic_2A1: includes: cprs_inv_abst1 *) (* Basic_2A1: uses: scpds_inv_abst1 *) lemma cpms_inv_abst_sn (n) (h) (G) (L): - âp,V1,T1,X2. â¦G, L⦠⢠â{p}V1.T1 â¡*[n, h] X2 â - ââV2,T2. â¦G, L⦠⢠V1 â¡*[h] V2 & â¦G, L.âV1⦠⢠T1 â¡*[n, h] T2 & + âp,V1,T1,X2. â¦G,L⦠⢠â{p}V1.T1 â¡*[n,h] X2 â + ââV2,T2. â¦G,L⦠⢠V1 â¡*[h] V2 & â¦G,L.âV1⦠⢠T1 â¡*[n,h] T2 & X2 = â{p}V2.T2. #n #h #G #L #p #V1 #T1 #X2 #H @(cpms_ind_dx ⦠H) -X2 /2 width=5 by ex3_2_intro/ @@ -63,8 +63,8 @@ qed-. (* Basic_2A1: includes: cprs_inv_abst *) lemma cpms_inv_abst_bi (n) (h) (p1) (p2) (G) (L): - âW1,W2,T1,T2. â¦G, L⦠⢠â{p1}W1.T1 â¡*[n, h] â{p2}W2.T2 â - â§â§ p1 = p2 & â¦G, L⦠⢠W1 â¡*[h] W2 & â¦G, L.âW1⦠⢠T1 â¡*[n, h] T2. + âW1,W2,T1,T2. â¦G,L⦠⢠â{p1}W1.T1 â¡*[n,h] â{p2}W2.T2 â + â§â§ p1 = p2 & â¦G,L⦠⢠W1 â¡*[h] W2 & â¦G,L.âW1⦠⢠T1 â¡*[n,h] T2. #n #h #p1 #p2 #G #L #W1 #W2 #T1 #T2 #H elim (cpms_inv_abst_sn ⦠H) -H #W #T #HW1 #HT1 #H destruct /2 width=1 by and3_intro/ @@ -73,9 +73,9 @@ qed-. (* Basic_1: was pr3_gen_abbr *) (* Basic_2A1: includes: cprs_inv_abbr1 *) lemma cpms_inv_abbr_sn_dx (n) (h) (G) (L): - âp,V1,T1,X2. â¦G, L⦠⢠â{p}V1.T1 â¡*[n, h] X2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡*[h] V2 & â¦G, L.âV1⦠⢠T1 â¡*[n, h] T2 & X2 = â{p}V2.T2 - | ââT2. â¦G, L.âV1⦠⢠T1 â¡*[n ,h] T2 & â¬*[1] X2 â T2 & p = â. + âp,V1,T1,X2. â¦G,L⦠⢠â{p}V1.T1 â¡*[n,h] X2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡*[h] V2 & â¦G,L.âV1⦠⢠T1 â¡*[n,h] T2 & X2 = â{p}V2.T2 + | ââT2. â¦G,L.âV1⦠⢠T1 â¡*[n ,h] T2 & â¬*[1] X2 â T2 & p = â. #n #h #G #L #p #V1 #T1 #X2 #H @(cpms_ind_dx ⦠H) -X2 -n /3 width=5 by ex3_2_intro, or_introl/ #n1 #n2 #X #X2 #_ * * @@ -95,8 +95,8 @@ qed-. (* Basic_2A1: uses: scpds_inv_abbr_abst *) lemma cpms_inv_abbr_abst (n) (h) (G) (L): - âp1,p2,V1,W2,T1,T2. â¦G, L⦠⢠â{p1}V1.T1 â¡*[n, h] â{p2}W2.T2 â - ââT. â¦G, L.âV1⦠⢠T1 â¡*[n, h] T & â¬*[1] â{p2}W2.T2 â T & p1 = â. + âp1,p2,V1,W2,T1,T2. â¦G,L⦠⢠â{p1}V1.T1 â¡*[n,h] â{p2}W2.T2 â + ââT. â¦G,L.âV1⦠⢠T1 â¡*[n,h] T & â¬*[1] â{p2}W2.T2 â T & p1 = â. #n #h #G #L #p1 #p2 #V1 #W2 #T1 #T2 #H elim (cpms_inv_abbr_sn_dx ⦠H) -H * [ #V #T #_ #_ #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cprs.ma index 958fcab3b..1706ae98e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cprs.ma @@ -20,16 +20,16 @@ include "basic_2/rt_computation/lprs_cpms.ma". (* Advanced properties ******************************************************) (* Basic_2A1: was: lprs_pair2 *) -lemma lprs_pair_dx (h) (G): âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â - âV1,V2. â¦G, L2⦠⢠V1 â¡*[h] V2 â - âI. â¦G, L1.â{I}V1⦠⢠â¡*[h] L2.â{I}V2. +lemma lprs_pair_dx (h) (G): âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â + âV1,V2. â¦G,L2⦠⢠V1 â¡*[h] V2 â + âI. â¦G,L1.â{I}V1⦠⢠â¡*[h] L2.â{I}V2. /3 width=3 by lprs_pair, lprs_cpms_trans/ qed. (* Properties on context-sensitive parallel r-computation for terms *********) -lemma lprs_cprs_conf_dx (h) (G): âL0.âT0,T1:term. â¦G, L0⦠⢠T0 â¡*[h] T1 â - âL1. â¦G, L0⦠⢠â¡*[h] L1 â - ââT. â¦G, L1⦠⢠T1 â¡*[h] T & â¦G, L1⦠⢠T0 â¡*[h] T. +lemma lprs_cprs_conf_dx (h) (G): âL0.âT0,T1:term. â¦G,L0⦠⢠T0 â¡*[h] T1 â + âL1. â¦G,L0⦠⢠â¡*[h] L1 â + ââT. â¦G,L1⦠⢠T1 â¡*[h] T & â¦G,L1⦠⢠T0 â¡*[h] T. #h #G #L0 #T0 #T1 #HT01 #L1 #H @(lprs_ind_dx ⦠H) -L1 /2 width=3 by ex2_intro/ #L #L1 #_ #HL1 * #T #HT1 #HT0 -L0 @@ -39,21 +39,21 @@ elim (cprs_conf ⦠HT2 ⦠HT3) -T /3 width=5 by cprs_trans, ex2_intro/ qed-. -lemma lprs_cpr_conf_dx (h) (G): âL0. âT0,T1:term. â¦G, L0⦠⢠T0 â¡[h] T1 â - âL1. â¦G, L0⦠⢠â¡*[h] L1 â - ââT. â¦G, L1⦠⢠T1 â¡*[h] T & â¦G, L1⦠⢠T0 â¡*[h] T. +lemma lprs_cpr_conf_dx (h) (G): âL0. âT0,T1:term. â¦G,L0⦠⢠T0 â¡[h] T1 â + âL1. â¦G,L0⦠⢠â¡*[h] L1 â + ââT. â¦G,L1⦠⢠T1 â¡*[h] T & â¦G,L1⦠⢠T0 â¡*[h] T. /3 width=3 by lprs_cprs_conf_dx, cpm_cpms/ qed-. (* Note: this can be proved on its own using lprs_ind_sn *) -lemma lprs_cprs_conf_sn (h) (G): âL0. âT0,T1:term. â¦G, L0⦠⢠T0 â¡*[h] T1 â - âL1. â¦G, L0⦠⢠â¡*[h] L1 â - ââT. â¦G, L0⦠⢠T1 â¡*[h] T & â¦G, L1⦠⢠T0 â¡*[h] T. +lemma lprs_cprs_conf_sn (h) (G): âL0. âT0,T1:term. â¦G,L0⦠⢠T0 â¡*[h] T1 â + âL1. â¦G,L0⦠⢠â¡*[h] L1 â + ââT. â¦G,L0⦠⢠T1 â¡*[h] T & â¦G,L1⦠⢠T0 â¡*[h] T. #h #G #L0 #T0 #T1 #HT01 #L1 #HL01 elim (lprs_cprs_conf_dx ⦠HT01 ⦠HL01) -HT01 /3 width=3 by lprs_cpms_trans, ex2_intro/ qed-. -lemma lprs_cpr_conf_sn (h) (G): âL0. âT0,T1:term. â¦G, L0⦠⢠T0 â¡[h] T1 â - âL1. â¦G, L0⦠⢠â¡*[h] L1 â - ââT. â¦G, L0⦠⢠T1 â¡*[h] T & â¦G, L1⦠⢠T0 â¡*[h] T. +lemma lprs_cpr_conf_sn (h) (G): âL0. âT0,T1:term. â¦G,L0⦠⢠T0 â¡[h] T1 â + âL1. â¦G,L0⦠⢠â¡*[h] L1 â + ââT. â¦G,L0⦠⢠T1 â¡*[h] T & â¦G,L1⦠⢠T0 â¡*[h] T. /3 width=3 by lprs_cprs_conf_sn, cpm_cpms/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_ctc.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_ctc.ma index ecef51fe5..742a0038a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_ctc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_ctc.ma @@ -20,11 +20,11 @@ include "basic_2/rt_computation/lprs.ma". (* Properties with contextual transitive closure ****************************) lemma lprs_CTC (h) (G): - âL1,L2. L1⪤[CTC ⦠(λL. cpm h G L 0)] L2 â â¦G, L1â¦â¢ â¡*[h] L2. + âL1,L2. L1⪤[CTC ⦠(λL. cpm h G L 0)] L2 â â¦G,L1â¦â¢ â¡*[h] L2. /3 width=3 by cprs_CTC, lex_co/ qed. (* Inversion lemmas with contextual transitive closure **********************) lemma lprs_inv_CTC (h) (G): - âL1,L2. â¦G, L1â¦â¢ â¡*[h] L2 â L1⪤[CTC ⦠(λL. cpm h G L 0)] L2. + âL1,L2. â¦G,L1â¦â¢ â¡*[h] L2 â L1⪤[CTC ⦠(λL. cpm h G L 0)] L2. /3 width=3 by cprs_inv_CTC, lex_co/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_length.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_length.ma index ae38e76a4..4327dcb7b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_length.ma @@ -19,5 +19,5 @@ include "basic_2/rt_computation/lprs.ma". (* Forward lemmas with length for local environments ************************) -lemma lprs_fwd_length (h) (G): âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â |L1| = |L2|. +lemma lprs_fwd_length (h) (G): âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â |L1| = |L2|. /2 width=2 by lex_fwd_length/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpr.ma index 120177208..ea0456434 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpr.ma @@ -20,29 +20,29 @@ include "basic_2/rt_computation/lprs_tc.ma". (* Basic_2A1: was: lprs_ind_dx *) lemma lprs_ind_sn (h) (G) (L2): âQ:predicate lenv. Q L2 â - (âL1,L. â¦G, L1⦠⢠â¡[h] L â â¦G, L⦠⢠â¡*[h] L2 â Q L â Q L1) â - âL1. â¦G, L1⦠⢠â¡*[h] L2 â Q L1. + (âL1,L. â¦G,L1⦠⢠â¡[h] L â â¦G,L⦠⢠â¡*[h] L2 â Q L â Q L1) â + âL1. â¦G,L1⦠⢠â¡*[h] L2 â Q L1. /4 width=8 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, cpr_refl, lex_CTC_ind_sn/ qed-. (* Basic_2A1: was: lprs_ind *) lemma lprs_ind_dx (h) (G) (L1): âQ:predicate lenv. Q L1 â - (âL,L2. â¦G, L1⦠⢠â¡*[h] L â â¦G, L⦠⢠â¡[h] L2 â Q L â Q L2) â - âL2. â¦G, L1⦠⢠â¡*[h] L2 â Q L2. + (âL,L2. â¦G,L1⦠⢠â¡*[h] L â â¦G,L⦠⢠â¡[h] L2 â Q L â Q L2) â + âL2. â¦G,L1⦠⢠â¡*[h] L2 â Q L2. /4 width=8 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, cpr_refl, lex_CTC_ind_dx/ qed-. (* Properties with unbound rt-transition for full local environments ********) -lemma lpr_lprs (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â â¦G, L1⦠⢠â¡*[h] L2. +lemma lpr_lprs (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â â¦G,L1⦠⢠â¡*[h] L2. /4 width=3 by lprs_CTC, lpr_cprs_trans, lex_CTC_inj/ qed. (* Basic_2A1: was: lprs_strap2 *) -lemma lprs_step_sn (h) (G): âL1,L. â¦G, L1⦠⢠â¡[h] L â - âL2.â¦G, L⦠⢠â¡*[h] L2 â â¦G, L1⦠⢠â¡*[h] L2. +lemma lprs_step_sn (h) (G): âL1,L. â¦G,L1⦠⢠â¡[h] L â + âL2.â¦G,L⦠⢠â¡*[h] L2 â â¦G,L1⦠⢠â¡*[h] L2. /4 width=3 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, lex_CTC_step_sn/ qed-. (* Basic_2A1: was: lpxs_strap1 *) -lemma lprs_step_dx (h) (G): âL1,L. â¦G, L1⦠⢠â¡*[h] L â - âL2. â¦G, L⦠⢠â¡[h] L2 â â¦G, L1⦠⢠â¡*[h] L2. +lemma lprs_step_dx (h) (G): âL1,L. â¦G,L1⦠⢠â¡*[h] L â + âL2. â¦G,L⦠⢠â¡[h] L2 â â¦G,L1⦠⢠â¡*[h] L2. /4 width=3 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, lex_CTC_step_dx/ qed-. lemma lprs_strip (h) (G): confluent2 ⦠(lprs h G) (lpr h G). diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpxs.ma index fe2d59ee7..5709df1f3 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpxs.ma @@ -22,5 +22,5 @@ include "basic_2/rt_computation/lprs.ma". (* Basic_2A1: was: lprs_lpxs *) (* Note: original proof uses lpr_fwd_lpx and monotonic_TC *) -lemma lprs_fwd_lpxs (h) (G) : âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â â¦G, L1⦠⢠â¬*[h] L2. +lemma lprs_fwd_lpxs (h) (G) : âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â â¦G,L1⦠⢠â¬*[h] L2. /3 width=3 by cpms_fwd_cpxs, lex_co/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_tc.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_tc.ma index 122051b4d..3b031c6d5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_tc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_tc.ma @@ -21,11 +21,11 @@ include "basic_2/rt_computation/cprs_lpr.ma". (* Properties with transitive closure ***************************************) lemma lprs_TC (h) (G): - âL1,L2. TC ⦠(lex (λL.cpm h G L 0)) L1 L2 â â¦G, L1â¦â¢ â¡*[h] L2. + âL1,L2. TC ⦠(lex (λL.cpm h G L 0)) L1 L2 â â¦G,L1â¦â¢ â¡*[h] L2. /4 width=3 by lprs_CTC, lex_CTC, lpr_cprs_trans/ qed. (* Inversion lemmas with transitive closure *********************************) lemma lprs_inv_TC (h) (G): - âL1,L2. â¦G, L1â¦â¢ â¡*[h] L2 â TC ⦠(lex (λL.cpm h G L 0)) L1 L2. + âL1,L2. â¦G,L1â¦â¢ â¡*[h] L2 â TC ⦠(lex (λL.cpm h G L 0)) L1 L2. /3 width=3 by lprs_inv_CTC, lex_inv_CTC/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs.ma index 322f43712..d532c62bf 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs.ma @@ -28,13 +28,13 @@ interpretation (* Basic properties *********************************************************) (* Basic_2A1: uses: lpxs_pair_refl *) -lemma lpxs_bind_refl_dx (h) (G): âL1,L2. â¦G, L1⦠⢠â¬*[h] L2 â - âI. â¦G, L1.â{I}⦠⢠â¬*[h] L2.â{I}. +lemma lpxs_bind_refl_dx (h) (G): âL1,L2. â¦G,L1⦠⢠â¬*[h] L2 â + âI. â¦G,L1.â{I}⦠⢠â¬*[h] L2.â{I}. /2 width=1 by lex_bind_refl_dx/ qed. -lemma lpxs_pair (h) (G): âL1,L2. â¦G, L1⦠⢠â¬*[h] L2 â - âV1,V2. â¦G, L1⦠⢠V1 â¬*[h] V2 â - âI. â¦G, L1.â{I}V1⦠⢠â¬*[h] L2.â{I}V2. +lemma lpxs_pair (h) (G): âL1,L2. â¦G,L1⦠⢠â¬*[h] L2 â + âV1,V2. â¦G,L1⦠⢠V1 â¬*[h] V2 â + âI. â¦G,L1.â{I}V1⦠⢠â¬*[h] L2.â{I}V2. /2 width=1 by lex_pair/ qed. lemma lpxs_refl (h) (G): reflexive ⦠(lpxs h G). @@ -43,25 +43,25 @@ lemma lpxs_refl (h) (G): reflexive ⦠(lpxs h G). (* Basic inversion lemmas ***************************************************) (* Basic_2A1: was: lpxs_inv_atom1 *) -lemma lpxs_inv_atom_sn (h) (G): âL2. â¦G, â⦠⢠â¬*[h] L2 â L2 = â. +lemma lpxs_inv_atom_sn (h) (G): âL2. â¦G,â⦠⢠â¬*[h] L2 â L2 = â. /2 width=2 by lex_inv_atom_sn/ qed-. -lemma lpxs_inv_bind_sn (h) (G): âI1,L2,K1. â¦G, K1.â{I1}⦠⢠â¬*[h] L2 â - ââI2,K2. â¦G, K1⦠⢠â¬*[h] K2 & â¦G, K1⦠⢠I1 â¬*[h] I2 & L2 = K2.â{I2}. +lemma lpxs_inv_bind_sn (h) (G): âI1,L2,K1. â¦G,K1.â{I1}⦠⢠â¬*[h] L2 â + ââI2,K2. â¦G,K1⦠⢠â¬*[h] K2 & â¦G,K1⦠⢠I1 â¬*[h] I2 & L2 = K2.â{I2}. /2 width=1 by lex_inv_bind_sn/ qed-. (* Basic_2A1: was: lpxs_inv_pair1 *) -lemma lpxs_inv_pair_sn (h) (G): âI,L2,K1,V1. â¦G, K1.â{I}V1⦠⢠â¬*[h] L2 â - ââK2,V2. â¦G, K1⦠⢠â¬*[h] K2 & â¦G, K1⦠⢠V1 â¬*[h] V2 & L2 = K2.â{I}V2. +lemma lpxs_inv_pair_sn (h) (G): âI,L2,K1,V1. â¦G,K1.â{I}V1⦠⢠â¬*[h] L2 â + ââK2,V2. â¦G,K1⦠⢠â¬*[h] K2 & â¦G,K1⦠⢠V1 â¬*[h] V2 & L2 = K2.â{I}V2. /2 width=1 by lex_inv_pair_sn/ qed-. (* Basic_2A1: was: lpxs_inv_atom2 *) -lemma lpxs_inv_atom_dx (h) (G): âL1. â¦G, L1⦠⢠â¬*[h] â â L1 = â. +lemma lpxs_inv_atom_dx (h) (G): âL1. â¦G,L1⦠⢠â¬*[h] â â L1 = â. /2 width=2 by lex_inv_atom_dx/ qed-. (* Basic_2A1: was: lpxs_inv_pair2 *) -lemma lpxs_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G, L1⦠⢠â¬*[h] K2.â{I}V2 â - ââK1,V1. â¦G, K1⦠⢠â¬*[h] K2 & â¦G, K1⦠⢠V1 â¬*[h] V2 & L1 = K1.â{I}V1. +lemma lpxs_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G,L1⦠⢠â¬*[h] K2.â{I}V2 â + ââK1,V1. â¦G,K1⦠⢠â¬*[h] K2 & â¦G,K1⦠⢠V1 â¬*[h] V2 & L1 = K1.â{I}V1. /2 width=1 by lex_inv_pair_dx/ qed-. (* Basic eliminators ********************************************************) @@ -70,12 +70,12 @@ lemma lpxs_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G, L1⦠⢠â¬*[h] K2.â{I} lemma lpxs_ind (h) (G): âQ:relation lenv. Q (â) (â) â ( âI,K1,K2. - â¦G, K1⦠⢠â¬*[h] K2 â + â¦G,K1⦠⢠â¬*[h] K2 â Q K1 K2 â Q (K1.â{I}) (K2.â{I}) ) â ( âI,K1,K2,V1,V2. - â¦G, K1⦠⢠â¬*[h] K2 â â¦G, K1⦠⢠V1 â¬*[h] V2 â + â¦G,K1⦠⢠â¬*[h] K2 â â¦G,K1⦠⢠V1 â¬*[h] V2 â Q K1 K2 â Q (K1.â{I}V1) (K2.â{I}V2) ) â - âL1,L2. â¦G, L1⦠⢠â¬*[h] L2 â Q L1 L2. + âL1,L2. â¦G,L1⦠⢠â¬*[h] L2 â Q L1 L2. /3 width=4 by lex_ind/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma index 71742516c..611aab47b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma @@ -19,15 +19,15 @@ include "basic_2/rt_computation/lpxs_lpx.ma". (* Properties with context-sensitive extended rt-computation for terms ******) (* Basic_2A1: was: cpxs_bind2 *) -lemma cpxs_bind_dx (h) (G): âL,V1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¬*[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +lemma cpxs_bind_dx (h) (G): âL,V1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¬*[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. /4 width=5 by lpxs_cpxs_trans, lpxs_pair, cpxs_bind/ qed. (* Inversion lemmas with context-sensitive ext rt-computation for terms *****) -lemma cpxs_inv_abst1 (h) (G): âp,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬*[h] U2 â - ââV2,T2. â¦G, L⦠⢠V1 â¬*[h] V2 & â¦G, L.âV1⦠⢠T1 â¬*[h] T2 & +lemma cpxs_inv_abst1 (h) (G): âp,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¬*[h] U2 â + ââV2,T2. â¦G,L⦠⢠V1 â¬*[h] V2 & â¦G,L.âV1⦠⢠T1 â¬*[h] T2 & U2 = â{p}V2.T2. #h #G #p #L #V1 #T1 #U2 #H @(cpxs_ind ⦠H) -U2 /2 width=5 by ex3_2_intro/ #U0 #U2 #_ #HU02 * #V0 #T0 #HV10 #HT10 #H destruct @@ -38,10 +38,10 @@ qed-. (* Basic_2A1: was: cpxs_inv_abbr1 *) lemma cpxs_inv_abbr1_dx (h) (p) (G) (L): - âV1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬*[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬*[h] V2 & â¦G, L.âV1⦠⢠T1 â¬*[h] T2 & + âV1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¬*[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬*[h] V2 & â¦G,L.âV1⦠⢠T1 â¬*[h] T2 & U2 = â{p}V2.T2 - | ââT2. â¦G, L.âV1⦠⢠T1 â¬*[h] T2 & â¬*[1] U2 â T2 & p = â. + | ââT2. â¦G,L.âV1⦠⢠T1 â¬*[h] T2 & â¬*[1] U2 â T2 & p = â. #h #p #G #L #V1 #T1 #U2 #H @(cpxs_ind ⦠H) -U2 /3 width=5 by ex3_2_intro, or_introl/ #U0 #U2 #_ #HU02 * * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma index 30bbb3e75..e21438d63 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma @@ -19,9 +19,9 @@ include "basic_2/rt_computation/lpxs_rdeq.ma". (* Properties with sort-irrelevant equivalence on closures ******************) -lemma fdeq_lpxs_trans (h): âG1,G2,L1,L0,T1,T2. â¦G1, L1, T1⦠â â¦G2, L0, T2⦠â - âL2. â¦G2, L0⦠â¢â¬*[h] L2 â - ââL. â¦G1, L1⦠â¢â¬*[h] L & â¦G1, L, T1⦠â â¦G2, L2, T2â¦. +lemma fdeq_lpxs_trans (h): âG1,G2,L1,L0,T1,T2. â¦G1,L1,T1⦠â â¦G2,L0,T2⦠â + âL2. â¦G2,L0⦠â¢â¬*[h] L2 â + ââL. â¦G1,L1⦠â¢â¬*[h] L & â¦G1,L,T1⦠â â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L0 #T1 #T2 #H1 #L2 #HL02 elim (fdeq_inv_gen_dx ⦠H1) -H1 #HG #HL10 #HT12 destruct elim (rdeq_lpxs_trans ⦠HL02 ⦠HL10) -L0 #L0 #HL10 #HL02 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_length.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_length.ma index fd664b95c..8ab26578e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_length.ma @@ -19,5 +19,5 @@ include "basic_2/rt_computation/lpxs.ma". (* Forward lemmas with length for local environments ************************) -lemma lpxs_fwd_length (h) (G): âL1,L2. â¦G, L1⦠⢠â¬*[h] L2 â |L1| = |L2|. +lemma lpxs_fwd_length (h) (G): âL1,L2. â¦G,L1⦠⢠â¬*[h] L2 â |L1| = |L2|. /2 width=2 by lex_fwd_length/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_lpx.ma index 52a418617..c27507776 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_lpx.ma @@ -20,31 +20,31 @@ include "basic_2/rt_computation/lpxs.ma". (* Properties with unbound rt-transition for full local environments ********) -lemma lpx_lpxs (h) (G): âL1,L2. â¦G, L1⦠⢠â¬[h] L2 â â¦G, L1⦠⢠â¬*[h] L2. +lemma lpx_lpxs (h) (G): âL1,L2. â¦G,L1⦠⢠â¬[h] L2 â â¦G,L1⦠⢠â¬*[h] L2. /3 width=3 by lpx_cpxs_trans, lex_CTC_inj/ qed. (* Basic_2A1: was: lpxs_strap2 *) -lemma lpxs_step_sn (h) (G): âL1,L. â¦G, L1⦠⢠â¬[h] L â - âL2. â¦G, L⦠⢠â¬*[h] L2 â â¦G, L1⦠⢠â¬*[h] L2. +lemma lpxs_step_sn (h) (G): âL1,L. â¦G,L1⦠⢠â¬[h] L â + âL2. â¦G,L⦠⢠â¬*[h] L2 â â¦G,L1⦠⢠â¬*[h] L2. /3 width=3 by lpx_cpxs_trans, lex_CTC_step_sn/ qed-. (* Basic_2A1: was: lpxs_strap1 *) -lemma lpxs_step_dx (h) (G): âL1,L. â¦G, L1⦠⢠â¬*[h] L â - âL2. â¦G, L⦠⢠â¬[h] L2 â â¦G, L1⦠⢠â¬*[h] L2. +lemma lpxs_step_dx (h) (G): âL1,L. â¦G,L1⦠⢠â¬*[h] L â + âL2. â¦G,L⦠⢠â¬[h] L2 â â¦G,L1⦠⢠â¬*[h] L2. /3 width=3 by lpx_cpxs_trans, lex_CTC_step_dx/ qed-. (* Eliminators with unbound rt-transition for full local environments *******) (* Basic_2A1: was: lpxs_ind_dx *) lemma lpxs_ind_sn (h) (G) (L2): âQ:predicate lenv. Q L2 â - (âL1,L. â¦G, L1⦠⢠â¬[h] L â â¦G, L⦠⢠â¬*[h] L2 â Q L â Q L1) â - âL1. â¦G, L1⦠⢠â¬*[h] L2 â Q L1. + (âL1,L. â¦G,L1⦠⢠â¬[h] L â â¦G,L⦠⢠â¬*[h] L2 â Q L â Q L1) â + âL1. â¦G,L1⦠⢠â¬*[h] L2 â Q L1. /3 width=7 by lpx_cpxs_trans, cpx_refl, lex_CTC_ind_sn/ qed-. (* Basic_2A1: was: lpxs_ind *) lemma lpxs_ind_dx (h) (G) (L1): âQ:predicate lenv. Q L1 â - (âL,L2. â¦G, L1⦠⢠â¬*[h] L â â¦G, L⦠⢠â¬[h] L2 â Q L â Q L2) â - âL2. â¦G, L1⦠⢠â¬*[h] L2 â Q L2. + (âL,L2. â¦G,L1⦠⢠â¬*[h] L â â¦G,L⦠⢠â¬[h] L2 â Q L â Q L2) â + âL2. â¦G,L1⦠⢠â¬*[h] L2 â Q L2. /3 width=7 by lpx_cpxs_trans, cpx_refl, lex_CTC_ind_dx/ qed-. (* Properties with context-sensitive extended rt-transition for terms *******) @@ -65,7 +65,7 @@ qed-. (* Advanced properties ******************************************************) (* Basic_2A1: was: lpxs_pair2 *) -lemma lpxs_pair_dx (h) (G): âL1,L2. â¦G, L1⦠⢠â¬*[h] L2 â - âV1,V2. â¦G, L2⦠⢠V1 â¬*[h] V2 â - âI. â¦G, L1.â{I}V1⦠⢠â¬*[h] L2.â{I}V2. +lemma lpxs_pair_dx (h) (G): âL1,L2. â¦G,L1⦠⢠â¬*[h] L2 â + âV1,V2. â¦G,L2⦠⢠V1 â¬*[h] V2 â + âI. â¦G,L1.â{I}V1⦠⢠â¬*[h] L2.â{I}V2. /3 width=3 by lpxs_pair, lpxs_cpxs_trans/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma index 2bc873339..dd0a02ce2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma @@ -21,9 +21,9 @@ include "basic_2/rt_computation/lpxs_lpx.ma". (* Basic_2A1: uses: lleq_lpxs_trans *) lemma rdeq_lpxs_trans (h) (G) (T:term): - âL2,K2. â¦G, L2⦠⢠â¬*[h] K2 â + âL2,K2. â¦G,L2⦠⢠â¬*[h] K2 â âL1. L1 â[T] L2 â - ââK1. â¦G, L1⦠⢠â¬*[h] K1 & K1 â[T] K2. + ââK1. â¦G,L1⦠⢠â¬*[h] K1 & K1 â[T] K2. #h #G #T #L2 #K2 #H @(lpxs_ind_sn ⦠H) -L2 /2 width=3 by ex2_intro/ #L #L2 #HL2 #_ #IH #L1 #HT elim (rdeq_lpx_trans ⦠HL2 ⦠HT) -L #L #HL1 #HT @@ -33,9 +33,9 @@ qed-. (* Basic_2A1: uses: lpxs_nlleq_inv_step_sn *) lemma lpxs_rdneq_inv_step_sn (h) (G) (T:term): - âL1,L2. â¦G, L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â - ââL,L0. â¦G, L1⦠⢠â¬[h] L & L1 â[T] L â ⥠& - â¦G, L⦠⢠â¬*[h] L0 & L0 â[T] L2. + âL1,L2. â¦G,L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â + ââL,L0. â¦G,L1⦠⢠â¬[h] L & L1 â[T] L â ⥠& + â¦G,L⦠⢠â¬*[h] L0 & L0 â[T] L2. #h #G #T #L1 #L2 #H @(lpxs_ind_sn ⦠H) -L1 [ #H elim H -H // | #L1 #L #H1 #H2 #IH2 #H12 elim (rdeq_dec L1 L T) #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx.ma index d976e52d1..e2fb36648 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx.ma @@ -25,7 +25,7 @@ inductive lsubsx (h) (G): rtmap â relation lenv â lsubsx h G (⫯f) (K1.â{I}) (K2.â{I}) | lsubsx_unit: âf,I,K1,K2. lsubsx h G f K1 K2 â lsubsx h G (âf) (K1.â¤{I}) (K2.â§) -| lsubsx_pair: âf,I,K1,K2,V. G ⢠â¬*[h, V] ðâ¦K2⦠â +| lsubsx_pair: âf,I,K1,K2,V. G ⢠â¬*[h,V] ðâ¦K2⦠â lsubsx h G f K1 K2 â lsubsx h G (âf) (K1.â{I}V) (K2.â§) . @@ -35,7 +35,7 @@ interpretation (* Basic inversion lemmas ***************************************************) -fact lsubsx_inv_atom_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â +fact lsubsx_inv_atom_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h,g] L2 â L1 = â â L2 = â. #h #g #G #L1 #L2 * -g -L1 -L2 // [ #f #I #K1 #K2 #_ #H destruct @@ -44,12 +44,12 @@ fact lsubsx_inv_atom_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â ] qed-. -lemma lsubsx_inv_atom_sn: âh,g,G,L2. G ⢠â ââ§[h, g] L2 â L2 = â. +lemma lsubsx_inv_atom_sn: âh,g,G,L2. G ⢠â ââ§[h,g] L2 â L2 = â. /2 width=7 by lsubsx_inv_atom_sn_aux/ qed-. -fact lsubsx_inv_push_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â +fact lsubsx_inv_push_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h,g] L2 â âf,I,K1. g = ⫯f â L1 = K1.â{I} â - ââK2. G ⢠K1 ââ§[h, f] K2 & L2 = K2.â{I}. + ââK2. G ⢠K1 ââ§[h,f] K2 & L2 = K2.â{I}. #h #g #G #L1 #L2 * -g -L1 -L2 [ #f #g #J #L1 #_ #H destruct | #f #I #K1 #K2 #HK12 #g #J #L1 #H1 #H2 destruct @@ -61,13 +61,13 @@ fact lsubsx_inv_push_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â ] qed-. -lemma lsubsx_inv_push_sn: âh,f,I,G,K1,L2. G ⢠K1.â{I} ââ§[h, ⫯f] L2 â - ââK2. G ⢠K1 ââ§[h, f] K2 & L2 = K2.â{I}. +lemma lsubsx_inv_push_sn: âh,f,I,G,K1,L2. G ⢠K1.â{I} ââ§[h,⫯f] L2 â + ââK2. G ⢠K1 ââ§[h,f] K2 & L2 = K2.â{I}. /2 width=5 by lsubsx_inv_push_sn_aux/ qed-. -fact lsubsx_inv_unit_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â +fact lsubsx_inv_unit_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h,g] L2 â âf,I,K1. g = âf â L1 = K1.â¤{I} â - ââK2. G ⢠K1 ââ§[h, f] K2 & L2 = K2.â§. + ââK2. G ⢠K1 ââ§[h,f] K2 & L2 = K2.â§. #h #g #G #L1 #L2 * -g -L1 -L2 [ #f #g #J #L1 #_ #H destruct | #f #I #K1 #K2 #_ #g #J #L1 #H @@ -78,14 +78,14 @@ fact lsubsx_inv_unit_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â ] qed-. -lemma lsubsx_inv_unit_sn: âh,f,I,G,K1,L2. G ⢠K1.â¤{I} ââ§[h, âf] L2 â - ââK2. G ⢠K1 ââ§[h, f] K2 & L2 = K2.â§. +lemma lsubsx_inv_unit_sn: âh,f,I,G,K1,L2. G ⢠K1.â¤{I} ââ§[h,âf] L2 â + ââK2. G ⢠K1 ââ§[h,f] K2 & L2 = K2.â§. /2 width=6 by lsubsx_inv_unit_sn_aux/ qed-. -fact lsubsx_inv_pair_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â +fact lsubsx_inv_pair_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h,g] L2 â âf,I,K1,V. g = âf â L1 = K1.â{I}V â - ââK2. G ⢠â¬*[h, V] ðâ¦K2⦠& - G ⢠K1 ââ§[h, f] K2 & L2 = K2.â§. + ââK2. G ⢠â¬*[h,V] ðâ¦K2⦠& + G ⢠K1 ââ§[h,f] K2 & L2 = K2.â§. #h #g #G #L1 #L2 * -g -L1 -L2 [ #f #g #J #L1 #W #_ #H destruct | #f #I #K1 #K2 #_ #g #J #L1 #W #H @@ -97,17 +97,17 @@ fact lsubsx_inv_pair_sn_aux: âh,g,G,L1,L2. G ⢠L1 ââ§[h, g] L2 â qed-. (* Basic_2A1: uses: lcosx_inv_pair *) -lemma lsubsx_inv_pair_sn: âh,f,I,G,K1,L2,V. G ⢠K1.â{I}V ââ§[h, âf] L2 â - ââK2. G ⢠â¬*[h, V] ðâ¦K2⦠& - G ⢠K1 ââ§[h, f] K2 & L2 = K2.â§. +lemma lsubsx_inv_pair_sn: âh,f,I,G,K1,L2,V. G ⢠K1.â{I}V ââ§[h,âf] L2 â + ââK2. G ⢠â¬*[h,V] ðâ¦K2⦠& + G ⢠K1 ââ§[h,f] K2 & L2 = K2.â§. /2 width=6 by lsubsx_inv_pair_sn_aux/ qed-. (* Advanced inversion lemmas ************************************************) -lemma lsubsx_inv_pair_sn_gen: âh,g,I,G,K1,L2,V. G ⢠K1.â{I}V ââ§[h, g] L2 â - â¨â¨ ââf,K2. G ⢠K1 ââ§[h, f] K2 & g = ⫯f & L2 = K2.â{I}V - | ââf,K2. G ⢠â¬*[h, V] ðâ¦K2⦠& - G ⢠K1 ââ§[h, f] K2 & g = âf & L2 = K2.â§. +lemma lsubsx_inv_pair_sn_gen: âh,g,I,G,K1,L2,V. G ⢠K1.â{I}V ââ§[h,g] L2 â + â¨â¨ ââf,K2. G ⢠K1 ââ§[h,f] K2 & g = ⫯f & L2 = K2.â{I}V + | ââf,K2. G ⢠â¬*[h,V] ðâ¦K2⦠& + G ⢠K1 ââ§[h,f] K2 & g = âf & L2 = K2.â§. #h #g #I #G #K1 #L2 #V #H elim (pn_split g) * #f #Hf destruct [ elim (lsubsx_inv_push_sn ⦠H) -H /3 width=5 by ex3_2_intro, or_introl/ @@ -117,8 +117,8 @@ qed-. (* Advanced forward lemmas **************************************************) -lemma lsubsx_fwd_bind_sn: âh,g,I1,G,K1,L2. G ⢠K1.â{I1} ââ§[h, g] L2 â - ââI2,K2. G ⢠K1 ââ§[h, ⫱g] K2 & L2 = K2.â{I2}. +lemma lsubsx_fwd_bind_sn: âh,g,I1,G,K1,L2. G ⢠K1.â{I1} ââ§[h,g] L2 â + ââI2,K2. G ⢠K1 ââ§[h,⫱g] K2 & L2 = K2.â{I2}. #h #g #I1 #G #K1 #L2 elim (pn_split g) * #f #Hf destruct [ #H elim (lsubsx_inv_push_sn ⦠H) -H @@ -132,7 +132,7 @@ qed-. (* Basic properties *********************************************************) -lemma lsubsx_eq_repl_back: âh,G,L1,L2. eq_repl_back ⦠(λf. G ⢠L1 ââ§[h, f] L2). +lemma lsubsx_eq_repl_back: âh,G,L1,L2. eq_repl_back ⦠(λf. G ⢠L1 ââ§[h,f] L2). #h #G #L1 #L2 #f1 #H elim H -L1 -L2 -f1 // [ #f #I #L1 #L2 #_ #IH #x #H elim (eq_inv_px ⦠H) -H /3 width=3 by lsubsx_push/ @@ -143,7 +143,7 @@ lemma lsubsx_eq_repl_back: âh,G,L1,L2. eq_repl_back ⦠(λf. G ⢠L1 ââ§[ ] qed-. -lemma lsubsx_eq_repl_fwd: âh,G,L1,L2. eq_repl_fwd ⦠(λf. G ⢠L1 ââ§[h, f] L2). +lemma lsubsx_eq_repl_fwd: âh,G,L1,L2. eq_repl_fwd ⦠(λf. G ⢠L1 ââ§[h,f] L2). #h #G #L1 #L2 @eq_repl_sym /2 width=3 by lsubsx_eq_repl_back/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_lsubsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_lsubsx.ma index 0a06062e6..82038855e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_lsubsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_lsubsx.ma @@ -18,8 +18,8 @@ include "basic_2/rt_computation/lsubsx.ma". (* Main properties **********************************************************) -theorem lsubsx_fix: âh,f,G,L1,L. G ⢠L1 ââ§[h, f] L â - âL2. G ⢠L ââ§[h, f] L2 â L = L2. +theorem lsubsx_fix: âh,f,G,L1,L. G ⢠L1 ââ§[h,f] L â + âL2. G ⢠L ââ§[h,f] L2 â L = L2. #h #f #G #L1 #L #H elim H -f -L1 -L [ #f #L2 #H >(lsubsx_inv_atom_sn ⦠H) -L2 // diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma index 70ba811a9..7240fb3b6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma @@ -22,9 +22,9 @@ include "basic_2/rt_computation/lsubsx.ma". (* Basic_2A1: uses: lsx_cpx_trans_lcosx *) lemma rdsx_cpx_trans_lsubsx (h): - âG,L0,T1,T2. â¦G, L0⦠⢠T1 â¬[h] T2 â - âf,L. G ⢠L0 ââ§[h, f] L â - G ⢠â¬*[h, T1] ðâ¦L⦠â G ⢠â¬*[h, T2] ðâ¦Lâ¦. + âG,L0,T1,T2. â¦G,L0⦠⢠T1 â¬[h] T2 â + âf,L. G ⢠L0 ââ§[h,f] L â + G ⢠â¬*[h,T1] ðâ¦L⦠â G ⢠â¬*[h,T2] ðâ¦Lâ¦. #h #G #L0 #T1 #T2 #H @(cpx_ind ⦠H) -G -L0 -T1 -T2 // [ #I0 #G #K0 #V1 #V2 #W2 #_ #IH #HVW2 #g #L #HK0 #HL elim (lsubsx_inv_pair_sn_gen ⦠HK0) -HK0 * @@ -63,13 +63,13 @@ qed-. (* Basic_2A1: uses: lsx_cpx_trans_O *) lemma rdsx_cpx_trans (h): - âG,L,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â - G ⢠â¬*[h, T1] ðâ¦L⦠â G ⢠â¬*[h, T2] ðâ¦Lâ¦. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â + G ⢠â¬*[h,T1] ðâ¦L⦠â G ⢠â¬*[h,T2] ðâ¦Lâ¦. /3 width=6 by rdsx_cpx_trans_lsubsx, lsubsx_refl/ qed-. lemma rdsx_cpxs_trans (h): - âG,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - G ⢠â¬*[h, T1] ðâ¦L⦠â G ⢠â¬*[h, T2] ðâ¦Lâ¦. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + G ⢠â¬*[h,T1] ðâ¦L⦠â G ⢠â¬*[h,T2] ðâ¦Lâ¦. #h #G #L #T1 #T2 #H @(cpxs_ind_dx ???????? H) -T1 // /3 width=3 by rdsx_cpx_trans/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx.ma index 45dd9f908..46b287bb9 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx.ma @@ -30,11 +30,11 @@ interpretation (* Basic_2A1: uses: lsx_ind *) lemma rdsx_ind (h) (G) (T): âQ:predicate lenv. - (âL1. G ⢠â¬*[h, T] ðâ¦L1⦠â - (âL2. â¦G, L1⦠⢠â¬[h] L2 â (L1 â[T] L2 â â¥) â Q L2) â + (âL1. G ⢠â¬*[h,T] ðâ¦L1⦠â + (âL2. â¦G,L1⦠⢠â¬[h] L2 â (L1 â[T] L2 â â¥) â Q L2) â Q L1 ) â - âL. G ⢠â¬*[h, T] ðâ¦L⦠â Q L. + âL. G ⢠â¬*[h,T] ðâ¦L⦠â Q L. #h #G #T #Q #H0 #L1 #H elim H -L1 /5 width=1 by SN_intro/ qed-. @@ -44,16 +44,16 @@ qed-. (* Basic_2A1: uses: lsx_intro *) lemma rdsx_intro (h) (G) (T): âL1. - (âL2. â¦G, L1⦠⢠â¬[h] L2 â (L1 â[T] L2 â â¥) â G ⢠â¬*[h, T] ðâ¦L2â¦) â - G ⢠â¬*[h, T] ðâ¦L1â¦. + (âL2. â¦G,L1⦠⢠â¬[h] L2 â (L1 â[T] L2 â â¥) â G ⢠â¬*[h,T] ðâ¦L2â¦) â + G ⢠â¬*[h,T] ðâ¦L1â¦. /5 width=1 by SN_intro/ qed. (* Basic forward lemmas *****************************************************) (* Basic_2A1: uses: lsx_fwd_pair_sn lsx_fwd_bind_sn lsx_fwd_flat_sn *) lemma rdsx_fwd_pair_sn (h) (G): - âI,L,V,T. G ⢠â¬*[h, â¡{I}V.T] ðâ¦L⦠â - G ⢠â¬*[h, V] ðâ¦Lâ¦. + âI,L,V,T. G ⢠â¬*[h,â¡{I}V.T] ðâ¦L⦠â + G ⢠â¬*[h,V] ðâ¦Lâ¦. #h #G #I #L #V #T #H @(rdsx_ind ⦠H) -L #L1 #_ #IHL1 @rdsx_intro #L2 #HL12 #HnL12 @@ -62,8 +62,8 @@ qed-. (* Basic_2A1: uses: lsx_fwd_flat_dx *) lemma rdsx_fwd_flat_dx (h) (G): - âI,L,V,T. G ⢠â¬*[h, â{I}V.T] ðâ¦L⦠â - G ⢠â¬*[h, T] ðâ¦Lâ¦. + âI,L,V,T. G ⢠â¬*[h,â{I}V.T] ðâ¦L⦠â + G ⢠â¬*[h,T] ðâ¦Lâ¦. #h #G #I #L #V #T #H @(rdsx_ind ⦠H) -L #L1 #_ #IHL1 @rdsx_intro #L2 #HL12 #HnL12 @@ -71,23 +71,23 @@ lemma rdsx_fwd_flat_dx (h) (G): qed-. fact rdsx_fwd_pair_aux (h) (G): - âL. G ⢠â¬*[h, #0] ðâ¦L⦠â - âI,K,V. L = K.â{I}V â G ⢠â¬*[h, V] ðâ¦Kâ¦. + âL. G ⢠â¬*[h,#0] ðâ¦L⦠â + âI,K,V. L = K.â{I}V â G ⢠â¬*[h,V] ðâ¦Kâ¦. #h #G #L #H @(rdsx_ind ⦠H) -L #L1 #_ #IH #I #K1 #V #H destruct /5 width=5 by lpx_pair, rdsx_intro, rdeq_fwd_zero_pair/ qed-. lemma rdsx_fwd_pair (h) (G): - âI,K,V. G ⢠â¬*[h, #0] ðâ¦K.â{I}V⦠â G ⢠â¬*[h, V] ðâ¦Kâ¦. + âI,K,V. G ⢠â¬*[h,#0] ðâ¦K.â{I}V⦠â G ⢠â¬*[h,V] ðâ¦Kâ¦. /2 width=4 by rdsx_fwd_pair_aux/ qed-. (* Basic inversion lemmas ***************************************************) (* Basic_2A1: uses: lsx_inv_flat *) lemma rdsx_inv_flat (h) (G): - âI,L,V,T. G ⢠â¬*[h, â{I}V.T] ðâ¦L⦠â - â§â§ G ⢠â¬*[h, V] ðâ¦L⦠& G ⢠â¬*[h, T] ðâ¦Lâ¦. + âI,L,V,T. G ⢠â¬*[h,â{I}V.T] ðâ¦L⦠â + â§â§ G ⢠â¬*[h,V] ðâ¦L⦠& G ⢠â¬*[h,T] ðâ¦Lâ¦. /3 width=3 by rdsx_fwd_pair_sn, rdsx_fwd_flat_dx, conj/ qed-. (* Basic_2A1: removed theorems 9: diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_csx.ma index 436c2b224..f6c85a089 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_csx.ma @@ -22,9 +22,9 @@ include "basic_2/rt_computation/lsubsx_rdsx.ma". (* Basic_2A1: uses: lsx_lref_be_lpxs *) lemma rdsx_pair_lpxs (h) (G): - âK1,V. â¦G, K1⦠⢠â¬*[h] ðâ¦V⦠â - âK2. G ⢠â¬*[h, V] ðâ¦K2⦠â â¦G, K1⦠⢠â¬*[h] K2 â - âI. G ⢠â¬*[h, #0] ðâ¦K2.â{I}Vâ¦. + âK1,V. â¦G,K1⦠⢠â¬*[h] ðâ¦V⦠â + âK2. G ⢠â¬*[h,V] ðâ¦K2⦠â â¦G,K1⦠⢠â¬*[h] K2 â + âI. G ⢠â¬*[h,#0] ðâ¦K2.â{I}Vâ¦. #h #G #K1 #V #H @(csx_ind_cpxs ⦠H) -V #V0 #_ #IHV0 #K2 #H @(rdsx_ind ⦠H) -K2 #K0 #HK0 #IHK0 #HK10 #I @@ -42,8 +42,8 @@ qed. (* Basic_2A1: uses: lsx_lref_be *) lemma rdsx_lref_pair_drops (h) (G): - âK,V. â¦G, K⦠⢠â¬*[h] ðâ¦V⦠â G ⢠â¬*[h, V] ðâ¦K⦠â - âI,i,L. â¬*[i] L â K.â{I}V â G ⢠â¬*[h, #i] ðâ¦Lâ¦. + âK,V. â¦G,K⦠⢠â¬*[h] ðâ¦V⦠â G ⢠â¬*[h,V] ðâ¦K⦠â + âI,i,L. â¬*[i] L â K.â{I}V â G ⢠â¬*[h,#i] ðâ¦Lâ¦. #h #G #K #V #HV #HK #I #i elim i -i [ #L #H >(drops_fwd_isid ⦠H) -H /2 width=3 by rdsx_pair_lpxs/ | #i #IH #L #H @@ -55,7 +55,7 @@ qed. (* Main properties **********************************************************) (* Basic_2A1: uses: csx_lsx *) -theorem csx_rdsx (h): âG,L,T. â¦G, L⦠⢠â¬*[h] ðâ¦T⦠â G ⢠â¬*[h, T] ðâ¦Lâ¦. +theorem csx_rdsx (h): âG,L,T. â¦G,L⦠⢠â¬*[h] ðâ¦T⦠â G ⢠â¬*[h,T] ðâ¦Lâ¦. #h #G #L #T @(fqup_wf_ind_eq (â») ⦠G L T) -G -L -T #Z #Y #X #IH #G #L * * // [ #i #HG #HL #HT #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_drops.ma index a27c2a71d..3c1c6ac7e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_drops.ma @@ -23,7 +23,7 @@ include "basic_2/rt_computation/rdsx_fqup.ma". (* Note: this uses length *) (* Basic_2A1: uses: lsx_lift_le lsx_lift_ge *) -lemma rdsx_lifts (h) (G): d_liftable1_isuni ⦠(λL,T. G ⢠â¬*[h, T] ðâ¦Lâ¦). +lemma rdsx_lifts (h) (G): d_liftable1_isuni ⦠(λL,T. G ⢠â¬*[h,T] ðâ¦Lâ¦). #h #G #K #T #H @(rdsx_ind ⦠H) -K #K1 #_ #IH #b #f #L1 #HLK1 #Hf #U #HTU @rdsx_intro #L2 #HL12 #HnL12 elim (lpx_drops_conf ⦠HLK1 ⦠HL12) @@ -33,7 +33,7 @@ qed-. (* Inversion lemmas on relocation *******************************************) (* Basic_2A1: uses: lsx_inv_lift_le lsx_inv_lift_be lsx_inv_lift_ge *) -lemma rdsx_inv_lifts (h) (G): d_deliftable1_isuni ⦠(λL,T. G ⢠â¬*[h, T] ðâ¦Lâ¦). +lemma rdsx_inv_lifts (h) (G): d_deliftable1_isuni ⦠(λL,T. G ⢠â¬*[h,T] ðâ¦Lâ¦). #h #G #L #U #H @(rdsx_ind ⦠H) -L #L1 #_ #IH #b #f #K1 #HLK1 #Hf #T #HTU @rdsx_intro #K2 #HK12 #HnK12 elim (drops_lpx_trans ⦠HLK1 ⦠HK12) -HK12 @@ -43,13 +43,13 @@ qed-. (* Advanced properties ******************************************************) (* Basic_2A1: uses: lsx_lref_free *) -lemma rdsx_lref_atom (h) (G): âL,i. â¬*[â», ðâ´iâµ] L â â â G ⢠â¬*[h, #i] ðâ¦Lâ¦. +lemma rdsx_lref_atom (h) (G): âL,i. â¬*[â»,ðâ´iâµ] L â â â G ⢠â¬*[h,#i] ðâ¦Lâ¦. #h #G #L1 #i #HL1 @(rdsx_lifts ⦠(#0) ⦠HL1) -HL1 // qed. (* Basic_2A1: uses: lsx_lref_skip *) -lemma rdsx_lref_unit (h) (G): âI,L,K,i. â¬*[i] L â K.â¤{I} â G ⢠â¬*[h, #i] ðâ¦Lâ¦. +lemma rdsx_lref_unit (h) (G): âI,L,K,i. â¬*[i] L â K.â¤{I} â G ⢠â¬*[h,#i] ðâ¦Lâ¦. #h #G #I #L1 #K1 #i #HL1 @(rdsx_lifts ⦠(#0) ⦠HL1) -HL1 // qed. @@ -58,8 +58,8 @@ qed. (* Basic_2A1: uses: lsx_fwd_lref_be *) lemma rdsx_fwd_lref_pair (h) (G): - âL,i. G ⢠â¬*[h, #i] ðâ¦L⦠â - âI,K,V. â¬*[i] L â K.â{I}V â G ⢠â¬*[h, V] ðâ¦Kâ¦. + âL,i. G ⢠â¬*[h,#i] ðâ¦L⦠â + âI,K,V. â¬*[i] L â K.â{I}V â G ⢠â¬*[h,V] ðâ¦Kâ¦. #h #G #L #i #HL #I #K #V #HLK lapply (rdsx_inv_lifts ⦠HL ⦠HLK ⦠(#0) ?) -L /2 width=2 by rdsx_fwd_pair/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_fqup.ma index 7906406eb..38293606c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_fqup.ma @@ -20,7 +20,7 @@ include "basic_2/rt_computation/rdsx.ma". (* Advanced properties ******************************************************) (* Basic_2A1: uses: lsx_atom *) -lemma lfsx_atom (h) (G) (T): G ⢠â¬*[h, T] ðâ¦ââ¦. +lemma lfsx_atom (h) (G) (T): G ⢠â¬*[h,T] ðâ¦ââ¦. #h #G #T @rdsx_intro #Y #H #HnT lapply (lpx_inv_atom_sn ⦠H) -H #H destruct @@ -33,8 +33,8 @@ qed. (* Note: the exclusion binder (â§) makes this more elegant and much simpler *) (* Note: the old proof without the exclusion binder requires lreq *) lemma rdsx_fwd_bind_dx (h) (G): - âp,I,L,V,T. G ⢠â¬*[h, â{p,I}V.T] ðâ¦L⦠â - G ⢠â¬*[h, T] ðâ¦L.â§â¦. + âp,I,L,V,T. G ⢠â¬*[h,â{p,I}V.T] ðâ¦L⦠â + G ⢠â¬*[h,T] ðâ¦L.â§â¦. #h #G #p #I #L #V #T #H @(rdsx_ind ⦠H) -L #L1 #_ #IH @rdsx_intro #Y #H #HT @@ -46,6 +46,6 @@ qed-. (* Basic_2A1: uses: lsx_inv_bind *) lemma rdsx_inv_bind (h) (G): - âp,I,L,V,T. G ⢠â¬*[h, â{p,I}V.T] ðâ¦L⦠â - â§â§ G ⢠â¬*[h, V] ðâ¦L⦠& G ⢠â¬*[h, T] ðâ¦L.â§â¦. + âp,I,L,V,T. G ⢠â¬*[h,â{p,I}V.T] ðâ¦L⦠â + â§â§ G ⢠â¬*[h,V] ðâ¦L⦠& G ⢠â¬*[h,T] ðâ¦L.â§â¦. /3 width=4 by rdsx_fwd_pair_sn, rdsx_fwd_bind_dx, conj/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_length.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_length.ma index 7c3c5703b..75177be45 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_length.ma @@ -21,18 +21,18 @@ include "basic_2/rt_computation/rdsx.ma". (* Advanced properties ******************************************************) (* Basic_2A1: uses: lsx_sort *) -lemma rdsx_sort (h) (G): âL,s. G ⢠â¬*[h, âs] ðâ¦Lâ¦. +lemma rdsx_sort (h) (G): âL,s. G ⢠â¬*[h,âs] ðâ¦Lâ¦. #h #G #L1 #s @rdsx_intro #L2 #H #Hs elim Hs -Hs /3 width=3 by lpx_fwd_length, rdeq_sort_length/ qed. (* Basic_2A1: uses: lsx_gref *) -lemma rdsx_gref (h) (G): âL,l. G ⢠â¬*[h, §l] ðâ¦Lâ¦. +lemma rdsx_gref (h) (G): âL,l. G ⢠â¬*[h,§l] ðâ¦Lâ¦. #h #G #L1 #s @rdsx_intro #L2 #H #Hs elim Hs -Hs /3 width=3 by lpx_fwd_length, rdeq_gref_length/ qed. -lemma rdsx_unit (h) (G): âI,L. G ⢠â¬*[h, #0] ðâ¦L.â¤{I}â¦. +lemma rdsx_unit (h) (G): âI,L. G ⢠â¬*[h,#0] ðâ¦L.â¤{I}â¦. #h #G #I #L1 @rdsx_intro #Y #HY #HnY elim HnY -HnY elim (lpx_inv_unit_sn ⦠HY) -HY #L2 #HL12 #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_lpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_lpxs.ma index 0368929ea..77867e07a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_lpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_lpxs.ma @@ -22,14 +22,14 @@ include "basic_2/rt_computation/rdsx_rdsx.ma". (* Basic_2A1: uses: lsx_intro_alt *) lemma rdsx_intro_lpxs (h) (G): - âL1,T. (âL2. â¦G, L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â G ⢠â¬*[h, T] ðâ¦L2â¦) â - G ⢠â¬*[h, T] ðâ¦L1â¦. + âL1,T. (âL2. â¦G,L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â G ⢠â¬*[h,T] ðâ¦L2â¦) â + G ⢠â¬*[h,T] ðâ¦L1â¦. /4 width=1 by lpx_lpxs, rdsx_intro/ qed-. (* Basic_2A1: uses: lsx_lpxs_trans *) lemma rdsx_lpxs_trans (h) (G): - âL1,T. G ⢠â¬*[h, T] ðâ¦L1⦠â - âL2. â¦G, L1⦠⢠â¬*[h] L2 â G ⢠â¬*[h, T] ðâ¦L2â¦. + âL1,T. G ⢠â¬*[h,T] ðâ¦L1⦠â + âL2. â¦G,L1⦠⢠â¬*[h] L2 â G ⢠â¬*[h,T] ðâ¦L2â¦. #h #G #L1 #T #HL1 #L2 #H @(lpxs_ind_dx ⦠H) -L2 /2 width=3 by rdsx_lpx_trans/ qed-. @@ -38,12 +38,12 @@ qed-. lemma rdsx_ind_lpxs_rdeq (h) (G): âT. âQ:predicate lenv. - (âL1. G ⢠â¬*[h, T] ðâ¦L1⦠â - (âL2. â¦G, L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â Q L2) â + (âL1. G ⢠â¬*[h,T] ðâ¦L1⦠â + (âL2. â¦G,L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â Q L2) â Q L1 ) â - âL1. G ⢠â¬*[h, T] ðâ¦L1⦠â - âL0. â¦G, L1⦠⢠â¬*[h] L0 â âL2. L0 â[T] L2 â Q L2. + âL1. G ⢠â¬*[h,T] ðâ¦L1⦠â + âL0. â¦G,L1⦠⢠â¬*[h] L0 â âL2. L0 â[T] L2 â Q L2. #h #G #T #Q #IH #L1 #H @(rdsx_ind ⦠H) -L1 #L1 #HL1 #IH1 #L0 #HL10 #L2 #HL02 @IH -IH /3 width=3 by rdsx_lpxs_trans, rdsx_rdeq_trans/ -HL1 #K2 #HLK2 #HnLK2 @@ -64,11 +64,11 @@ qed-. (* Basic_2A1: uses: lsx_ind_alt *) lemma rdsx_ind_lpxs (h) (G): âT. âQ:predicate lenv. - (âL1. G ⢠â¬*[h, T] ðâ¦L1⦠â - (âL2. â¦G, L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â Q L2) â + (âL1. G ⢠â¬*[h,T] ðâ¦L1⦠â + (âL2. â¦G,L1⦠⢠â¬*[h] L2 â (L1 â[T] L2 â â¥) â Q L2) â Q L1 ) â - âL. G ⢠â¬*[h, T] ðâ¦L⦠â Q L. + âL. G ⢠â¬*[h,T] ðâ¦L⦠â Q L. #h #G #T #Q #IH #L #HL @(rdsx_ind_lpxs_rdeq ⦠IH ⦠HL) -IH -HL // (**) (* full auto fails *) qed-. @@ -76,10 +76,10 @@ qed-. (* Advanced properties ******************************************************) fact rdsx_bind_lpxs_aux (h) (G): - âp,I,L1,V. G ⢠â¬*[h, V] ðâ¦L1⦠â - âY,T. G ⢠â¬*[h, T] ðâ¦Y⦠â - âL2. Y = L2.â{I}V â â¦G, L1⦠⢠â¬*[h] L2 â - G ⢠â¬*[h, â{p,I}V.T] ðâ¦L2â¦. + âp,I,L1,V. G ⢠â¬*[h,V] ðâ¦L1⦠â + âY,T. G ⢠â¬*[h,T] ðâ¦Y⦠â + âL2. Y = L2.â{I}V â â¦G,L1⦠⢠â¬*[h] L2 â + G ⢠â¬*[h,â{p,I}V.T] ðâ¦L2â¦. #h #G #p #I #L1 #V #H @(rdsx_ind_lpxs ⦠H) -L1 #L1 #_ #IHL1 #Y #T #H @(rdsx_ind_lpxs ⦠H) -Y #Y #HY #IHY #L2 #H #HL12 destruct @@ -97,16 +97,16 @@ qed-. (* Basic_2A1: uses: lsx_bind *) lemma rdsx_bind (h) (G): - âp,I,L,V. G ⢠â¬*[h, V] ðâ¦L⦠â - âT. G ⢠â¬*[h, T] ðâ¦L.â{I}V⦠â - G ⢠â¬*[h, â{p,I}V.T] ðâ¦Lâ¦. + âp,I,L,V. G ⢠â¬*[h,V] ðâ¦L⦠â + âT. G ⢠â¬*[h,T] ðâ¦L.â{I}V⦠â + G ⢠â¬*[h,â{p,I}V.T] ðâ¦Lâ¦. /2 width=3 by rdsx_bind_lpxs_aux/ qed. (* Basic_2A1: uses: lsx_flat_lpxs *) lemma rdsx_flat_lpxs (h) (G): - âI,L1,V. G ⢠â¬*[h, V] ðâ¦L1⦠â - âL2,T. G ⢠â¬*[h, T] ðâ¦L2⦠â â¦G, L1⦠⢠â¬*[h] L2 â - G ⢠â¬*[h, â{I}V.T] ðâ¦L2â¦. + âI,L1,V. G ⢠â¬*[h,V] ðâ¦L1⦠â + âL2,T. G ⢠â¬*[h,T] ðâ¦L2⦠â â¦G,L1⦠⢠â¬*[h] L2 â + G ⢠â¬*[h,â{I}V.T] ðâ¦L2â¦. #h #G #I #L1 #V #H @(rdsx_ind_lpxs ⦠H) -L1 #L1 #HL1 #IHL1 #L2 #T #H @(rdsx_ind_lpxs ⦠H) -L2 #L2 #HL2 #IHL2 #HL12 @rdsx_intro_lpxs @@ -123,15 +123,15 @@ qed-. (* Basic_2A1: uses: lsx_flat *) lemma rdsx_flat (h) (G): - âI,L,V. G ⢠â¬*[h, V] ðâ¦L⦠â - âT. G ⢠â¬*[h, T] ðâ¦L⦠â G ⢠â¬*[h, â{I}V.T] ðâ¦Lâ¦. + âI,L,V. G ⢠â¬*[h,V] ðâ¦L⦠â + âT. G ⢠â¬*[h,T] ðâ¦L⦠â G ⢠â¬*[h,â{I}V.T] ðâ¦Lâ¦. /2 width=3 by rdsx_flat_lpxs/ qed. fact rdsx_bind_lpxs_void_aux (h) (G): - âp,I,L1,V. G ⢠â¬*[h, V] ðâ¦L1⦠â - âY,T. G ⢠â¬*[h, T] ðâ¦Y⦠â - âL2. Y = L2.⧠â â¦G, L1⦠⢠â¬*[h] L2 â - G ⢠â¬*[h, â{p,I}V.T] ðâ¦L2â¦. + âp,I,L1,V. G ⢠â¬*[h,V] ðâ¦L1⦠â + âY,T. G ⢠â¬*[h,T] ðâ¦Y⦠â + âL2. Y = L2.⧠â â¦G,L1⦠⢠â¬*[h] L2 â + G ⢠â¬*[h,â{p,I}V.T] ðâ¦L2â¦. #h #G #p #I #L1 #V #H @(rdsx_ind_lpxs ⦠H) -L1 #L1 #_ #IHL1 #Y #T #H @(rdsx_ind_lpxs ⦠H) -Y #Y #HY #IHY #L2 #H #HL12 destruct @@ -148,7 +148,7 @@ elim (rdneq_inv_bind_void ⦠H) -H [ -IHY | -HY -IHL1 -HL12 ] qed-. lemma rdsx_bind_void (h) (G): - âp,I,L,V. G ⢠â¬*[h, V] ðâ¦L⦠â - âT. G ⢠â¬*[h, T] ðâ¦L.â§â¦ â - G ⢠â¬*[h, â{p,I}V.T] ðâ¦Lâ¦. + âp,I,L,V. G ⢠â¬*[h,V] ðâ¦L⦠â + âT. G ⢠â¬*[h,T] ðâ¦L.â§â¦ â + G ⢠â¬*[h,â{p,I}V.T] ðâ¦Lâ¦. /2 width=3 by rdsx_bind_lpxs_void_aux/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_rdsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_rdsx.ma index 8066dad4b..861fe1f45 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_rdsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_rdsx.ma @@ -21,8 +21,8 @@ include "basic_2/rt_computation/rdsx.ma". (* Basic_2A1: uses: lsx_lleq_trans *) lemma rdsx_rdeq_trans (h) (G): - âL1,T. G ⢠â¬*[h, T] ðâ¦L1⦠â - âL2. L1 â[T] L2 â G ⢠â¬*[h, T] ðâ¦L2â¦. + âL1,T. G ⢠â¬*[h,T] ðâ¦L1⦠â + âL2. L1 â[T] L2 â G ⢠â¬*[h,T] ðâ¦L2â¦. #h #G #L1 #T #H @(rdsx_ind ⦠H) -L1 #L1 #_ #IHL1 #L2 #HL12 @rdsx_intro #L #HL2 #HnL2 elim (rdeq_lpx_trans ⦠HL2 ⦠HL12) -HL2 @@ -31,8 +31,8 @@ qed-. (* Basic_2A1: uses: lsx_lpx_trans *) lemma rdsx_lpx_trans (h) (G): - âL1,T. G ⢠â¬*[h, T] ðâ¦L1⦠â - âL2. â¦G, L1⦠⢠â¬[h] L2 â G ⢠â¬*[h, T] ðâ¦L2â¦. + âL1,T. G ⢠â¬*[h,T] ðâ¦L1⦠â + âL2. â¦G,L1⦠⢠â¬[h] L2 â G ⢠â¬*[h,T] ðâ¦L2â¦. #h #G #L1 #T #H @(rdsx_ind ⦠H) -L1 #L1 #HL1 #IHL1 #L2 #HL12 elim (rdeq_dec L1 L2 T) /3 width=4 by rdsx_rdeq_trans/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc.ma index 156374e3f..df250a17b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc.ma @@ -18,7 +18,7 @@ include "basic_2/rt_transition/cpm.ma". (* CONTEXT-SENSITIVE PARALLEL R-CONVERSION FOR TERMS ************************) definition cpc: sh â relation4 genv lenv term term â - λh,G,L,T1,T2. â¦G, L⦠⢠T1 â¡[h] T2 ⨠â¦G, L⦠⢠T2 â¡[h] T1. + λh,G,L,T1,T2. â¦G,L⦠⢠T1 â¡[h] T2 ⨠â¦G,L⦠⢠T2 â¡[h] T1. interpretation "context-sensitive parallel r-conversion (term)" @@ -35,7 +35,7 @@ qed-. (* Basic forward lemmas *****************************************************) -lemma cpc_fwd_cpr: âh,G,L,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â - ââT. â¦G, L⦠⢠T1 â¡[h] T & â¦G, L⦠⢠T2 â¡[h] T. +lemma cpc_fwd_cpr: âh,G,L,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â + ââT. â¦G,L⦠⢠T1 â¡[h] T & â¦G,L⦠⢠T2 â¡[h] T. #h #G #L #T1 #T2 * /2 width=3 by ex2_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc_cpc.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc_cpc.ma index b5b9ac86c..d3151122a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc_cpc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc_cpc.ma @@ -18,6 +18,6 @@ include "basic_2/rt_conversion/cpc.ma". (* Main properties **********************************************************) -theorem cpc_conf: âh,G,L,T0,T1,T2. â¦G, L⦠⢠T0 â¬[h] T1 â â¦G, L⦠⢠T0 â¬[h] T2 â - ââT. â¦G, L⦠⢠T1 â¬[h] T & â¦G, L⦠⢠T2 â¬[h] T. +theorem cpc_conf: âh,G,L,T0,T1,T2. â¦G,L⦠⢠T0 â¬[h] T1 â â¦G,L⦠⢠T0 â¬[h] T2 â + ââT. â¦G,L⦠⢠T1 â¬[h] T & â¦G,L⦠⢠T2 â¬[h] T. /3 width=3 by cpc_sym, ex2_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/lpce.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/lpce.ma index b74313dae..8da6c1af4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/lpce.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/lpce.ma @@ -62,7 +62,7 @@ lemma lpce_inv_bind_dx (h) (G): lemma lpce_inv_unit_sn (h) (G): âI,L2,K1. â¦G,K1.â¤{I}⦠⢠â¬Î·[h] L2 â - ââK2. â¦G, K1⦠⢠â¬Î·[h] K2 & L2 = K2.â¤{I}. + ââK2. â¦G,K1⦠⢠â¬Î·[h] K2 & L2 = K2.â¤{I}. /2 width=1 by lex_inv_unit_sn/ qed-. lemma lpce_inv_pair_sn (h) (G): diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma index 59848b068..4daecd3eb 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma @@ -29,16 +29,16 @@ interpretation "context-sensitive parallel r-equivalence (term)" (* Basic_2A1: was: cpcs_ind_dx *) lemma cpcs_ind_sn (h) (G) (L) (T2): âQ:predicate term. Q T2 â - (âT1,T. â¦G, L⦠⢠T1 â¬[h] T â â¦G, L⦠⢠T â¬*[h] T2 â Q T â Q T1) â - âT1. â¦G, L⦠⢠T1 â¬*[h] T2 â Q T1. + (âT1,T. â¦G,L⦠⢠T1 â¬[h] T â â¦G,L⦠⢠T â¬*[h] T2 â Q T â Q T1) â + âT1. â¦G,L⦠⢠T1 â¬*[h] T2 â Q T1. normalize /3 width=6 by TC_star_ind_dx/ qed-. (* Basic_2A1: was: cpcs_ind *) lemma cpcs_ind_dx (h) (G) (L) (T1): âQ:predicate term. Q T1 â - (âT,T2. â¦G, L⦠⢠T1 â¬*[h] T â â¦G, L⦠⢠T â¬[h] T2 â Q T â Q T2) â - âT2. â¦G, L⦠⢠T1 â¬*[h] T2 â Q T2. + (âT,T2. â¦G,L⦠⢠T1 â¬*[h] T â â¦G,L⦠⢠T â¬[h] T2 â Q T â Q T2) â + âT2. â¦G,L⦠⢠T1 â¬*[h] T2 â Q T2. normalize /3 width=6 by TC_star_ind/ qed-. @@ -54,50 +54,50 @@ lemma cpcs_sym (h) (G) (L): symmetric ⦠(cpcs h G L). /2 width=1 by cpc_sym/ qed-. -lemma cpc_cpcs (h) (G) (L): âT1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpc_cpcs (h) (G) (L): âT1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. /2 width=1 by inj/ qed. (* Basic_2A1: was: cpcs_strap2 *) -lemma cpcs_step_sn (h) (G) (L): âT1,T. â¦G, L⦠⢠T1 â¬[h] T â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_step_sn (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¬[h] T â + âT2. â¦G,L⦠⢠T â¬*[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. normalize /2 width=3 by TC_strap/ qed-. (* Basic_2A1: was: cpcs_strap1 *) -lemma cpcs_step_dx (h) (G) (L): âT1,T. â¦G, L⦠⢠T1 â¬*[h] T â - âT2. â¦G, L⦠⢠T â¬[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_step_dx (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¬*[h] T â + âT2. â¦G,L⦠⢠T â¬[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. normalize /2 width=3 by step/ qed-. (* Basic_1: was: pc3_pr2_r *) -lemma cpr_cpcs_dx (h) (G) (L): âT1,T2. â¦G, L⦠⢠T1 â¡[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpr_cpcs_dx (h) (G) (L): âT1,T2. â¦G,L⦠⢠T1 â¡[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=1 by cpc_cpcs, or_introl/ qed. (* Basic_1: was: pc3_pr2_x *) -lemma cpr_cpcs_sn (h) (G) (L): âT1,T2. â¦G, L⦠⢠T2 â¡[h] T1 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpr_cpcs_sn (h) (G) (L): âT1,T2. â¦G,L⦠⢠T2 â¡[h] T1 â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=1 by cpc_cpcs, or_intror/ qed. (* Basic_1: was: pc3_pr2_u *) (* Basic_2A1: was: cpcs_cpr_strap2 *) -lemma cpcs_cpr_step_sn (h) (G) (L): âT1,T. â¦G, L⦠⢠T1 â¡[h] T â âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_cpr_step_sn (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¡[h] T â âT2. â¦G,L⦠⢠T â¬*[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=3 by cpcs_step_sn, or_introl/ qed-. (* Basic_2A1: was: cpcs_cpr_strap1 *) -lemma cpcs_cpr_step_dx (h) (G) (L): âT1,T. â¦G, L⦠⢠T1 â¬*[h] T â - âT2. â¦G, L⦠⢠T â¡[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_cpr_step_dx (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¬*[h] T â + âT2. â¦G,L⦠⢠T â¡[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=3 by cpcs_step_dx, or_introl/ qed-. -lemma cpcs_cpr_div (h) (G) (L): âT1,T. â¦G, L⦠⢠T1 â¬*[h] T â - âT2. â¦G, L⦠⢠T2 â¡[h] T â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_cpr_div (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¬*[h] T â + âT2. â¦G,L⦠⢠T2 â¡[h] T â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=3 by cpcs_step_dx, or_intror/ qed-. -lemma cpr_div (h) (G) (L): âT1,T. â¦G, L⦠⢠T1 â¡[h] T â - âT2. â¦G, L⦠⢠T2 â¡[h] T â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpr_div (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¡[h] T â + âT2. â¦G,L⦠⢠T2 â¡[h] T â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=3 by cpr_cpcs_dx, cpcs_step_dx, or_intror/ qed-. (* Basic_1: was: pc3_pr2_u2 *) -lemma cpcs_cpr_conf (h) (G) (L): âT1,T. â¦G, L⦠⢠T â¡[h] T1 â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_cpr_conf (h) (G) (L): âT1,T. â¦G,L⦠⢠T â¡[h] T1 â + âT2. â¦G,L⦠⢠T â¬*[h] T2 â â¦G,L⦠⢠T1 â¬*[h] T2. /3 width=3 by cpcs_step_sn, or_intror/ qed-. (* Basic_1: removed theorems 9: diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_aaa.ma index 13d12e5ad..2c1be91f4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_aaa.ma @@ -20,8 +20,8 @@ include "basic_2/rt_equivalence/cpcs_cprs.ma". (* Main inversion lemmas with atomic arity assignment on terms **************) (* Note: lemma 1500 *) -theorem cpcs_aaa_mono (h) (G) (L): âT1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - âA1. â¦G, L⦠⢠T1 â A1 â âA2. â¦G, L⦠⢠T2 â A2 â +theorem cpcs_aaa_mono (h) (G) (L): âT1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + âA1. â¦G,L⦠⢠T1 â A1 â âA2. â¦G,L⦠⢠T2 â A2 â A1 = A2. #h #G #L #T1 #T2 #HT12 #A1 #HA1 #A2 #HA2 elim (cpcs_inv_cprs ⦠HT12) -HT12 #T #HT1 #HT2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cpcs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cpcs.ma index a29055eee..85cd8c732 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cpcs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cpcs.ma @@ -31,21 +31,21 @@ theorem cpcs_canc_dx (h) (G) (L): right_cancellable ⦠(cpcs h G L). (* Advanced properties ******************************************************) -lemma cpcs_bind1 (h) (G) (L): âV1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âI,T1,T2. â¦G, L.â{I}V1⦠⢠T1 â¬*[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +lemma cpcs_bind1 (h) (G) (L): âV1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âI,T1,T2. â¦G,L.â{I}V1⦠⢠T1 â¬*[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. /3 width=3 by cpcs_trans, cpcs_bind_sn, cpcs_bind_dx/ qed. -lemma cpcs_bind2 (h) (G) (L): âV1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âI,T1,T2. â¦G, L.â{I}V2⦠⢠T1 â¬*[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. +lemma cpcs_bind2 (h) (G) (L): âV1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âI,T1,T2. â¦G,L.â{I}V2⦠⢠T1 â¬*[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V1.T1 â¬*[h] â{p,I}V2.T2. /3 width=3 by cpcs_trans, cpcs_bind_sn, cpcs_bind_dx/ qed. (* Advanced properties with r-transition for full local environments ********) (* Basic_1: was: pc3_wcpr0 *) -lemma lpr_cpcs_conf (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â - âT1,T2. â¦G, L1⦠⢠T1 â¬*[h] T2 â â¦G, L2⦠⢠T1 â¬*[h] T2. +lemma lpr_cpcs_conf (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â + âT1,T2. â¦G,L1⦠⢠T1 â¬*[h] T2 â â¦G,L2⦠⢠T1 â¬*[h] T2. #h #G #L1 #L2 #HL12 #T1 #T2 #H elim (cpcs_inv_cprs ⦠H) -H /3 width=5 by cpcs_canc_dx, lpr_cprs_conf/ qed-. 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 5292a2665..bd40f01c3 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 @@ -20,8 +20,8 @@ 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. +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. #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 @@ -35,7 +35,7 @@ qed-. (* Basic_1: was: pc3_gen_sort *) (* Basic_2A1: was: cpcs_inv_sort *) -lemma cpcs_inv_sort_bi (h) (G) (L): âs1,s2. â¦G, L⦠⢠âs1 â¬*[h] âs2 â s1 = s2. +lemma cpcs_inv_sort_bi (h) (G) (L): âs1,s2. â¦G,L⦠⢠âs1 â¬*[h] âs2 â s1 = s2. #h #G #L #s1 #s2 #H elim (cpcs_inv_cprs ⦠H) -H #T #H1 >(cprs_inv_sort1 ⦠H1) -T #H2 lapply (cprs_inv_sort1 ⦠H2) -L #H destruct // @@ -43,8 +43,8 @@ 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. + â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. #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 @@ -53,13 +53,13 @@ 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. + â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. /3 width=1 by cpcs_inv_abst_sn, cpcs_sym/ qed-. (* Basic_1: was: pc3_gen_sort_abst *) lemma cpcs_inv_sort_abst (h) (G) (L): - âp,W,T,s. â¦G, L⦠⢠âs â¬*[h] â{p}W.T â â¥. + âp,W,T,s. â¦G,L⦠⢠âs â¬*[h] â{p}W.T â â¥. #h #G #L #p #W #T #s #H elim (cpcs_inv_cprs ⦠H) -H #X #H1 >(cprs_inv_sort1 ⦠H1) -X #H2 @@ -69,97 +69,97 @@ 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] 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] 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. +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. #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 â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_cprs_step_sn (h) (G) (L): âT1,T. â¦G,L⦠⢠T1 â¡*[h] 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. +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. #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 â - âT2. â¦G, L⦠⢠T â¬*[h] T2 â â¦G, L⦠⢠T1 â¬*[h] T2. +lemma cpcs_cprs_conf (h) (G) (L): âT1,T. â¦G,L⦠⢠T â¡*[h] 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] T â + âT2. â¦G,L⦠⢠T2 â¡*[h] 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] T â + âT2. â¦G,L⦠⢠T2 â¡[h] 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] T â + âT2. â¦G,L⦠⢠T2 â¡*[h] 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] T1 â + âT2. â¦G,L⦠⢠T â¡[h] 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] T1 â + âT2. â¦G,L⦠⢠T â¡[h] 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] T1 â + âT2. â¦G,L⦠⢠T â¡*[h] 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-. (* Basic_1: was only: pc3_thin_dx *) -lemma cpcs_flat (h) (G) (L): âV1,V2. â¦G, L⦠⢠V1 â¬*[h] V2 â - âT1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - âI. â¦G, L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. +lemma cpcs_flat (h) (G) (L): âV1,V2. â¦G,L⦠⢠V1 â¬*[h] V2 â + âT1,T2. â¦G,L⦠⢠T1 â¬*[h] T2 â + âI. â¦G,L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. #h #G #L #V1 #V2 #HV12 #T1 #T2 #HT12 elim (cpcs_inv_cprs ⦠HV12) -HV12 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 â - âT1,T2. â¦G, L⦠⢠T1 â¬*[h] T2 â - âI. â¦G, L⦠⢠â{I}V1.T1 â¬*[h] â{I}V2.T2. +lemma cpcs_flat_dx_cpr_rev (h) (G) (L): âV1,V2. â¦G,L⦠⢠V2 â¡[h] 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. -lemma cpcs_bind_dx (h) (G) (L): âI,V,T1,T2. â¦G, L.â{I}V⦠⢠T1 â¬*[h] T2 â - âp. â¦G, L⦠⢠â{p,I}V.T1 â¬*[h] â{p,I}V.T2. +lemma cpcs_bind_dx (h) (G) (L): âI,V,T1,T2. â¦G,L.â{I}V⦠⢠T1 â¬*[h] T2 â + âp. â¦G,L⦠⢠â{p,I}V.T1 â¬*[h] â{p,I}V.T2. #h #G #L #I #V #T1 #T2 #HT12 elim (cpcs_inv_cprs ⦠HT12) -HT12 /3 width=5 by cprs_div, cpms_bind/ qed. -lemma cpcs_bind_sn (h) (G) (L): âI,V1,V2,T. â¦G, L⦠⢠V1 â¬*[h] V2 â - âp. â¦G, L⦠⢠â{p,I}V1.T â¬*[h] â{p,I}V2.T. +lemma cpcs_bind_sn (h) (G) (L): âI,V1,V2,T. â¦G,L⦠⢠V1 â¬*[h] V2 â + âp. â¦G,L⦠⢠â{p,I}V1.T â¬*[h] â{p,I}V2.T. #h #G #L #I #V1 #V2 #T #HV12 elim (cpcs_inv_cprs ⦠HV12) -HV12 /3 width=5 by cprs_div, cpms_bind/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_lprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_lprs.ma index 3564a480a..6da444ce1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_lprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_lprs.ma @@ -19,20 +19,20 @@ include "basic_2/rt_equivalence/cpcs_cprs.ma". (* Properties with parallel r-computation for full local environments *******) -lemma lpr_cpcs_trans (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â - âT1,T2. â¦G, L2⦠⢠T1 â¬*[h] T2 â â¦G, L1⦠⢠T1 â¬*[h] T2. +lemma lpr_cpcs_trans (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â + âT1,T2. â¦G,L2⦠⢠T1 â¬*[h] T2 â â¦G,L1⦠⢠T1 â¬*[h] T2. #h #G #L1 #L2 #HL12 #T1 #T2 #H elim (cpcs_inv_cprs ⦠H) -H /4 width=5 by cprs_div, lpr_cpms_trans/ qed-. -lemma lprs_cpcs_trans (h) (G): âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â - âT1,T2. â¦G, L2⦠⢠T1 â¬*[h] T2 â â¦G, L1⦠⢠T1 â¬*[h] T2. +lemma lprs_cpcs_trans (h) (G): âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â + âT1,T2. â¦G,L2⦠⢠T1 â¬*[h] T2 â â¦G,L1⦠⢠T1 â¬*[h] T2. #h #G #L1 #L2 #HL12 #T1 #T2 #H elim (cpcs_inv_cprs ⦠H) -H /4 width=5 by cprs_div, lprs_cpms_trans/ qed-. -lemma lprs_cprs_conf (h) (G): âL1,L2. â¦G, L1⦠⢠â¡*[h] L2 â - âT1,T2. â¦G, L1⦠⢠T1 â¡*[h] T2 â â¦G, L2⦠⢠T1 â¬*[h] T2. +lemma lprs_cprs_conf (h) (G): âL1,L2. â¦G,L1⦠⢠â¡*[h] L2 â + âT1,T2. â¦G,L1⦠⢠T1 â¡*[h] T2 â â¦G,L2⦠⢠T1 â¬*[h] T2. #h #G #L1 #L2 #HL12 #T1 #T2 #HT12 elim (lprs_cprs_conf_dx ⦠HT12 ⦠HL12) -L1 /2 width=3 by cprs_div/ qed-. @@ -40,23 +40,23 @@ qed-. (* Basic_1: was: pc3_wcpr0_t *) (* Basic_1: note: pc3_wcpr0_t should be renamed *) (* Note: alternative proof /3 width=5 by lprs_cprs_conf, lpr_lprs/ *) -lemma lpr_cprs_conf (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â - âT1,T2. â¦G, L1⦠⢠T1 â¡*[h] T2 â â¦G, L2⦠⢠T1 â¬*[h] T2. +lemma lpr_cprs_conf (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â + âT1,T2. â¦G,L1⦠⢠T1 â¡*[h] T2 â â¦G,L2⦠⢠T1 â¬*[h] T2. #h #G #L1 #L2 #HL12 #T1 #T2 #HT12 elim (cprs_lpr_conf_dx ⦠HT12 ⦠HL12) -L1 /2 width=3 by cprs_div/ qed-. (* Basic_1: was only: pc3_pr0_pr2_t *) (* Basic_1: note: pc3_pr0_pr2_t should be renamed *) -lemma lpr_cpr_conf (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â - âT1,T2. â¦G, L1⦠⢠T1 â¡[h] T2 â â¦G, L2⦠⢠T1 â¬*[h] T2. +lemma lpr_cpr_conf (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â + âT1,T2. â¦G,L1⦠⢠T1 â¡[h] T2 â â¦G,L2⦠⢠T1 â¬*[h] T2. /3 width=5 by lpr_cprs_conf, cpm_cpms/ qed-. (* Advanced inversion lemmas ************************************************) (* Note: there must be a proof suitable for lfpr *) -lemma cpcs_inv_abst_sn (h) (G) (L): âp1,p2,W1,W2,T1,T2. â¦G, L⦠⢠â{p1}W1.T1 â¬*[h] â{p2}W2.T2 â - â§â§ â¦G, L⦠⢠W1 â¬*[h] W2 & â¦G, L.âW1⦠⢠T1 â¬*[h] T2 & p1 = p2. +lemma cpcs_inv_abst_sn (h) (G) (L): âp1,p2,W1,W2,T1,T2. â¦G,L⦠⢠â{p1}W1.T1 â¬*[h] â{p2}W2.T2 â + â§â§ â¦G,L⦠⢠W1 â¬*[h] W2 & â¦G,L.âW1⦠⢠T1 â¬*[h] T2 & p1 = p2. #h #G #L #p1 #p2 #W1 #W2 #T1 #T2 #H elim (cpcs_inv_cprs ⦠H) -H #T #H1 #H2 elim (cpms_inv_abst_sn ⦠H1) -H1 #W0 #T0 #HW10 #HT10 #H destruct @@ -66,8 +66,8 @@ lapply (lprs_cpcs_trans ⦠(L.âW1) ⦠HT2) /2 width=1 by lprs_pair/ -HT2 #HT /4 width=3 by and3_intro, cprs_div, cpcs_cprs_div, cpcs_sym/ qed-. -lemma cpcs_inv_abst_dx (h) (G) (L): âp1,p2,W1,W2,T1,T2. â¦G, L⦠⢠â{p1}W1.T1 â¬*[h] â{p2}W2.T2 â - â§â§ â¦G, L⦠⢠W1 â¬*[h] W2 & â¦G, L.âW2⦠⢠T1 â¬*[h] T2 & p1 = p2. +lemma cpcs_inv_abst_dx (h) (G) (L): âp1,p2,W1,W2,T1,T2. â¦G,L⦠⢠â{p1}W1.T1 â¬*[h] â{p2}W2.T2 â + â§â§ â¦G,L⦠⢠W1 â¬*[h] W2 & â¦G,L.âW2⦠⢠T1 â¬*[h] T2 & p1 = p2. #h #G #L #p1 #p2 #W1 #W2 #T1 #T2 #HT12 lapply (cpcs_sym ⦠HT12) -HT12 #HT12 elim (cpcs_inv_abst_sn ⦠HT12) -HT12 /3 width=1 by cpcs_sym, and3_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes.ma index c864c81a9..de444a0d7 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes.ma @@ -20,7 +20,7 @@ include "basic_2/rt_computation/cpms.ma". (* Basic_2A1: uses: scpes *) definition cpes (h) (n1) (n2): relation4 genv lenv term term â λG,L,T1,T2. - ââT. â¦G, L⦠⢠T1 â¡*[n1,h] T & â¦G, L⦠⢠T2 â¡*[n2,h] T. + ââT. â¦G,L⦠⢠T1 â¡*[n1,h] T & â¦G,L⦠⢠T2 â¡*[n2,h] T. interpretation "t-bound context-sensitive parallel rt-equivalence (term)" 'PConvStar h n1 n2 G L T1 T2 = (cpes h n1 n2 G L T1 T2). @@ -29,8 +29,8 @@ interpretation "t-bound context-sensitive parallel rt-equivalence (term)" (* Basic_2A1: uses: scpds_div *) lemma cpms_div (h) (n1) (n2): - âG,L,T1,T. â¦G, L⦠⢠T1 â¡*[n1,h] T â - âT2. â¦G, L⦠⢠T2 â¡*[n2,h] T â â¦G, L⦠⢠T1 â¬*[h,n1,n2] T2. + âG,L,T1,T. â¦G,L⦠⢠T1 â¡*[n1,h] T â + âT2. â¦G,L⦠⢠T2 â¡*[n2,h] T â â¦G,L⦠⢠T1 â¬*[h,n1,n2] T2. /2 width=3 by ex2_intro/ qed. lemma cpes_refl (h): âG,L. reflexive ⦠(cpes h 0 0 G L). @@ -38,6 +38,6 @@ lemma cpes_refl (h): âG,L. reflexive ⦠(cpes h 0 0 G L). (* Basic_2A1: uses: scpes_sym *) lemma cpes_sym (h) (n1) (n2): - âG,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h,n1,n2] T2 â â¦G, L⦠⢠T2 â¬*[h,n2,n1] T1. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h,n1,n2] T2 â â¦G,L⦠⢠T2 â¬*[h,n2,n1] T1. #h #n1 #n2 #G #L #T1 #T2 * /2 width=3 by cpms_div/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes_aaa.ma index 2aa50131f..06eacc674 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes_aaa.ma @@ -21,7 +21,7 @@ include "basic_2/rt_equivalence/cpes.ma". (* Basic_2A1: uses: scpes_refl *) lemma cpes_refl_aaa (h) (n): - âG,L,T,A. â¦G, L⦠⢠T â A â â¦G, L⦠⢠T â¬*[h,n,n] T. + âG,L,T,A. â¦G,L⦠⢠T â A â â¦G,L⦠⢠T â¬*[h,n,n] T. #h #n #G #L #T #A #HA elim (cpms_total_aaa h ⦠n ⦠HA) #U #HTU /2 width=3 by cpms_div/ @@ -31,8 +31,8 @@ qed. (* Basic_2A1: uses: scpes_aaa_mono *) theorem cpes_aaa_mono (h) (n1) (n2): - âG,L,T1,T2. â¦G, L⦠⢠T1 â¬*[h,n1,n2] T2 â - âA1. â¦G, L⦠⢠T1 â A1 â âA2. â¦G, L⦠⢠T2 â A2 â A1 = A2. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¬*[h,n1,n2] T2 â + âA1. â¦G,L⦠⢠T1 â A1 â âA2. â¦G,L⦠⢠T2 â A2 â A1 = A2. #h #n1 #n2 #G #L #T1 #T2 * #T #HT1 #HT2 #A1 #HA1 #A2 #HA2 lapply (cpms_aaa_conf ⦠HA1 ⦠HT1) -T1 #HA1 lapply (cpms_aaa_conf ⦠HA2 ⦠HT2) -T2 #HA2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr.ma index aeb33e6dd..aa739d678 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr.ma @@ -26,7 +26,7 @@ interpretation (* Basic inversion lemmas ***************************************************) lemma cnr_inv_abst (h) (p) (G) (L): - âV,T. â¦G, L⦠⢠â¡[h] ðâ¦â{p}V.T⦠â â§â§ â¦G, L⦠⢠â¡[h] ðâ¦V⦠& â¦G, L.âV⦠⢠â¡[h] ðâ¦Tâ¦. + âV,T. â¦G,L⦠⢠â¡[h] ðâ¦â{p}V.T⦠â â§â§ â¦G,L⦠⢠â¡[h] ðâ¦V⦠& â¦G,L.âV⦠⢠â¡[h] ðâ¦Tâ¦. #h #p #G #L #V1 #T1 #HVT1 @conj [ #V2 #HV2 lapply (HVT1 (â{p}V2.T1) ?) -HVT1 /2 width=2 by cpr_pair_sn/ -HV2 #H destruct // | #T2 #HT2 lapply (HVT1 (â{p}V1.T2) ?) -HVT1 /2 width=2 by cpm_bind/ -HT2 #H destruct // @@ -35,7 +35,7 @@ qed-. (* Basic_2A1: was: cnr_inv_abbr *) lemma cnr_inv_abbr_neg (h) (G) (L): - âV,T. â¦G, L⦠⢠â¡[h] ðâ¦-âV.T⦠â â§â§ â¦G, L⦠⢠â¡[h] ðâ¦V⦠& â¦G, L.âV⦠⢠â¡[h] ðâ¦Tâ¦. + âV,T. â¦G,L⦠⢠â¡[h] ðâ¦-âV.T⦠â â§â§ â¦G,L⦠⢠â¡[h] ðâ¦V⦠& â¦G,L.âV⦠⢠â¡[h] ðâ¦Tâ¦. #h #G #L #V1 #T1 #HVT1 @conj [ #V2 #HV2 lapply (HVT1 (-âV2.T1) ?) -HVT1 /2 width=2 by cpr_pair_sn/ -HV2 #H destruct // | #T2 #HT2 lapply (HVT1 (-âV1.T2) ?) -HVT1 /2 width=2 by cpm_bind/ -HT2 #H destruct // @@ -43,7 +43,7 @@ lemma cnr_inv_abbr_neg (h) (G) (L): qed-. (* Basic_2A1: was: cnr_inv_eps *) -lemma cnr_inv_cast (h) (G) (L): âV,T. â¦G, L⦠⢠â¡[h] ðâ¦âV.T⦠â â¥. +lemma cnr_inv_cast (h) (G) (L): âV,T. â¦G,L⦠⢠â¡[h] ðâ¦âV.T⦠â â¥. #h #G #L #V #T #H lapply (H T ?) -H /2 width=4 by cpm_eps, discr_tpair_xy_y/ qed-. @@ -51,26 +51,26 @@ qed-. (* Basic properties *********************************************************) (* Basic_1: was: nf2_sort *) -lemma cnr_sort (h) (G) (L): âs. â¦G, L⦠⢠â¡[h] ðâ¦âsâ¦. +lemma cnr_sort (h) (G) (L): âs. â¦G,L⦠⢠â¡[h] ðâ¦âsâ¦. #h #G #L #s #X #H >(cpr_inv_sort1 ⦠H) // qed. -lemma cnr_gref (h) (G) (L): âl. â¦G, L⦠⢠â¡[h] ðâ¦Â§lâ¦. +lemma cnr_gref (h) (G) (L): âl. â¦G,L⦠⢠â¡[h] ðâ¦Â§lâ¦. #h #G #L #l #X #H >(cpr_inv_gref1 ⦠H) // qed. (* Basic_1: was: nf2_abst *) lemma cnr_abst (h) (p) (G) (L): - âW,T. â¦G, L⦠⢠â¡[h] ðâ¦W⦠â â¦G, L.âW⦠⢠â¡[h] ðâ¦T⦠â â¦G, L⦠⢠â¡[h] ðâ¦â{p}W.Tâ¦. + âW,T. â¦G,L⦠⢠â¡[h] ðâ¦W⦠â â¦G,L.âW⦠⢠â¡[h] ðâ¦T⦠â â¦G,L⦠⢠â¡[h] ðâ¦â{p}W.Tâ¦. #h #p #G #L #W #T #HW #HT #X #H elim (cpm_inv_abst1 ⦠H) -H #W0 #T0 #HW0 #HT0 #H destruct <(HW ⦠HW0) -W0 <(HT ⦠HT0) -T0 // qed. lemma cnr_abbr_neg (h) (G) (L): - âV,T. â¦G, L⦠⢠â¡[h] ðâ¦V⦠â â¦G, L.âV⦠⢠â¡[h] ðâ¦T⦠â â¦G, L⦠⢠â¡[h] ðâ¦-âV.Tâ¦. + âV,T. â¦G,L⦠⢠â¡[h] ðâ¦V⦠â â¦G,L.âV⦠⢠â¡[h] ðâ¦T⦠â â¦G,L⦠⢠â¡[h] ðâ¦-âV.Tâ¦. #h #G #L #V #T #HV #HT #X #H elim (cpm_inv_abbr1 ⦠H) -H * [ #V0 #T0 #HV0 #HT0 #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma index 6bc4661ca..8d9a8ce0e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma @@ -21,7 +21,7 @@ include "basic_2/rt_transition/cnr.ma". (* Basic_1: was only: nf2_csort_lref *) lemma cnr_lref_atom (h) (b) (G) (L): - âi. â¬*[b,ðâ´iâµ] L â â â â¦G, L⦠⢠â¡[h] ðâ¦#iâ¦. + âi. â¬*[b,ðâ´iâµ] L â â â â¦G,L⦠⢠â¡[h] ðâ¦#iâ¦. #h #b #G #L #i #Hi #X #H elim (cpr_inv_lref1_drops ⦠H) -H // * #K #V1 #V2 #HLK lapply (drops_gen b ⦠HLK) -HLK #HLK @@ -30,7 +30,7 @@ qed. (* Basic_1: was: nf2_lref_abst *) lemma cnr_lref_abst (h) (G) (L): - âK,V,i. â¬*[i] L â K.âV â â¦G, L⦠⢠â¡[h] ðâ¦#iâ¦. + âK,V,i. â¬*[i] L â K.âV â â¦G,L⦠⢠â¡[h] ðâ¦#iâ¦. #h #G #L #K #V #i #HLK #X #H elim (cpr_inv_lref1_drops ⦠H) -H // * #K0 #V1 #V2 #HLK0 #_ #_ @@ -38,7 +38,7 @@ lapply (drops_mono ⦠HLK ⦠HLK0) -L #H destruct qed. lemma cnr_lref_unit (h) (I) (G) (L): - âK,i. â¬*[i] L â K.â¤{I} â â¦G, L⦠⢠â¡[h] ðâ¦#iâ¦. + âK,i. â¬*[i] L â K.â¤{I} â â¦G,L⦠⢠â¡[h] ðâ¦#iâ¦. #h #I #G #L #K #i #HLK #X #H elim (cpr_inv_lref1_drops ⦠H) -H // * #K0 #V1 #V2 #HLK0 #_ #_ @@ -59,7 +59,7 @@ qed-. (* Basic_2A1: was: cnr_inv_delta *) lemma cnr_inv_lref_abbr (h) (G) (L): - âK,V,i. â¬*[i] L â K.âV â â¦G, L⦠⢠â¡[h] ðâ¦#i⦠â â¥. + âK,V,i. â¬*[i] L â K.âV â â¦G,L⦠⢠â¡[h] ðâ¦#i⦠â â¥. #h #G #L #K #V #i #HLK #H elim (lifts_total V ðâ´âiâµ) #W #HVW lapply (H W ?) -H [ /3 width=6 by cpm_delta_drops/ ] -HLK #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_simple.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_simple.ma index 5dcbada49..20039dafe 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_simple.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_simple.ma @@ -20,7 +20,7 @@ include "basic_2/rt_transition/cnr.ma". (* Inversion lemmas with simple terms ***************************************) lemma cnr_inv_appl (h) (G) (L): - âV,T. â¦G, L⦠⢠â¡[h] ðâ¦âV.T⦠â â§â§ â¦G, L⦠⢠â¡[h] ðâ¦V⦠& â¦G, L⦠⢠â¡[h] ðâ¦T⦠& ðâ¦Tâ¦. + âV,T. â¦G,L⦠⢠â¡[h] ðâ¦âV.T⦠â â§â§ â¦G,L⦠⢠â¡[h] ðâ¦V⦠& â¦G,L⦠⢠â¡[h] ðâ¦T⦠& ðâ¦Tâ¦. #h #G #L #V1 #T1 #HVT1 @and3_intro [ #V2 #HV2 lapply (HVT1 (âV2.T1) ?) -HVT1 /2 width=1 by cpr_pair_sn/ -HV2 #H destruct // | #T2 #HT2 lapply (HVT1 (âV1.T2) ?) -HVT1 /2 width=1 by cpr_flat/ -HT2 #H destruct // @@ -36,7 +36,7 @@ qed-. (* Basic_1: was only: nf2_appl_lref *) lemma cnr_appl_simple (h) (G) (L): - âV,T. â¦G, L⦠⢠â¡[h] ðâ¦V⦠â â¦G, L⦠⢠â¡[h] ðâ¦T⦠â ðâ¦T⦠â â¦G, L⦠⢠â¡[h] ðâ¦âV.Tâ¦. + âV,T. â¦G,L⦠⢠â¡[h] ðâ¦V⦠â â¦G,L⦠⢠â¡[h] ðâ¦T⦠â ðâ¦T⦠â â¦G,L⦠⢠â¡[h] ðâ¦âV.Tâ¦. #h #G #L #V #T #HV #HT #HS #X #H elim (cpm_inv_appl1_simple ⦠H) -H // #V0 #T0 #HV0 #HT0 #H destruct <(HV ⦠HV0) -V0 <(HT ⦠HT0) -T0 // diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma index 80e4d8ff0..00d42e11d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma @@ -24,8 +24,8 @@ include "basic_2/rt_transition/cnr_drops.ma". (* Basic_1: was: nf2_dec *) (* Basic_2A1: uses: cnr_dec *) lemma cnr_dec_tdeq (h) (G) (L): - âT1. â¨â¨ â¦G, L⦠⢠â¡[h] ðâ¦T1⦠- | ââT2. â¦G, L⦠⢠T1 â¡[h] T2 & (T1 â T2 â â¥). + âT1. â¨â¨ â¦G,L⦠⢠â¡[h] ðâ¦T1⦠+ | ââT2. â¦G,L⦠⢠T1 â¡[h] T2 & (T1 â T2 â â¥). #h #G #L #T1 @(fqup_wf_ind_eq (â) ⦠G L T1) -G -L -T1 #G0 #L0 #T0 #IH #G #L * * [ #s #HG #HL #HT destruct -IH diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_drops.ma index 6b6aa0962..97e13d22a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_drops.ma @@ -21,7 +21,7 @@ include "basic_2/rt_transition/cnu.ma". (* Advanced properties ******************************************************) lemma cnu_atom_drops (h) (b) (G) (L): - âi. â¬*[b,ðâ´iâµ] L â â â â¦G, L⦠⢠⥲[h] ðâ¦#iâ¦. + âi. â¬*[b,ðâ´iâµ] L â â â â¦G,L⦠⢠⥲[h] ðâ¦#iâ¦. #h #b #G #L #i #Hi #n #X #H elim (cpm_inv_lref1_drops ⦠H) -H * [ // || #m ] #K #V1 #V2 #HLK lapply (drops_gen b ⦠HLK) -HLK #HLK @@ -29,7 +29,7 @@ lapply (drops_mono ⦠Hi ⦠HLK) -L #H destruct qed. lemma cnu_unit_drops (h) (I) (G) (L): - âK,i. â¬*[i] L â K.â¤{I} â â¦G, L⦠⢠⥲[h] ðâ¦#iâ¦. + âK,i. â¬*[i] L â K.â¤{I} â â¦G,L⦠⢠⥲[h] ðâ¦#iâ¦. #h #I #G #L #K #i #HLK #n #X #H elim (cpm_inv_lref1_drops ⦠H) -H * [ // || #m ] #Y #V1 #V2 #HLY lapply (drops_mono ⦠HLK ⦠HLY) -L #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_tdeq.ma index 91676f500..f6eb1a805 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnu_tdeq.ma @@ -22,8 +22,8 @@ include "basic_2/rt_transition/cnu_cnr_simple.ma". (* Properties with context-free sort-irrelevant equivalence for terms *******) lemma cnu_dec_tdeq (h) (G) (L): - âT1. â¨â¨ â¦G, L⦠⢠⥲[h] ðâ¦T1⦠- | âân,T2. â¦G, L⦠⢠T1 â¡[n,h] T2 & (T1 â T2 â â¥). + âT1. â¨â¨ â¦G,L⦠⢠⥲[h] ðâ¦T1⦠+ | âân,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 & (T1 â T2 â â¥). #h #G #L #T1 @(fqup_wf_ind_eq (â) ⦠G L T1) -G -L -T1 #G0 #L0 #T0 #IH #G #L * * [ #s #HG #HL #HT destruct -IH diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx.ma index 6607013df..a79e8d74e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx.ma @@ -27,8 +27,8 @@ interpretation (* Basic inversion lemmas ***************************************************) -lemma cnx_inv_abst: âh,p,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦â{p}V.T⦠â - â¦G, L⦠⢠â¬[h] ðâ¦V⦠⧠â¦G, L.âV⦠⢠â¬[h] ðâ¦Tâ¦. +lemma cnx_inv_abst: âh,p,G,L,V,T. â¦G,L⦠⢠â¬[h] ðâ¦â{p}V.T⦠â + â¦G,L⦠⢠â¬[h] ðâ¦V⦠⧠â¦G,L.âV⦠⢠â¬[h] ðâ¦Tâ¦. #h #p #G #L #V1 #T1 #HVT1 @conj [ #V2 #HV2 lapply (HVT1 (â{p}V2.T1) ?) -HVT1 /2 width=2 by cpx_pair_sn/ -HV2 | #T2 #HT2 lapply (HVT1 (â{p}V1.T2) ?) -HVT1 /2 width=2 by cpx_bind/ -HT2 @@ -37,8 +37,8 @@ lemma cnx_inv_abst: âh,p,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦â{p}V.T⦠qed-. (* Basic_2A1: was: cnx_inv_abbr *) -lemma cnx_inv_abbr_neg: âh,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦-âV.T⦠â - â¦G, L⦠⢠â¬[h] ðâ¦V⦠⧠â¦G, L.âV⦠⢠â¬[h] ðâ¦Tâ¦. +lemma cnx_inv_abbr_neg: âh,G,L,V,T. â¦G,L⦠⢠â¬[h] ðâ¦-âV.T⦠â + â¦G,L⦠⢠â¬[h] ðâ¦V⦠⧠â¦G,L.âV⦠⢠â¬[h] ðâ¦Tâ¦. #h #G #L #V1 #T1 #HVT1 @conj [ #V2 #HV2 lapply (HVT1 (-âV2.T1) ?) -HVT1 /2 width=2 by cpx_pair_sn/ -HV2 | #T2 #HT2 lapply (HVT1 (-âV1.T2) ?) -HVT1 /2 width=2 by cpx_bind/ -HT2 @@ -47,20 +47,20 @@ lemma cnx_inv_abbr_neg: âh,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦-âV.T⦠qed-. (* Basic_2A1: was: cnx_inv_eps *) -lemma cnx_inv_cast: âh,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦âV.T⦠â â¥. +lemma cnx_inv_cast: âh,G,L,V,T. â¦G,L⦠⢠â¬[h] ðâ¦âV.T⦠â â¥. #h #G #L #V #T #H lapply (H T ?) -H /2 width=6 by cpx_eps, tdeq_inv_pair_xy_y/ qed-. (* Basic properties *********************************************************) -lemma cnx_sort: âh,G,L,s. â¦G, L⦠⢠â¬[h] ðâ¦âsâ¦. +lemma cnx_sort: âh,G,L,s. â¦G,L⦠⢠â¬[h] ðâ¦âsâ¦. #h #G #L #s #X #H elim (cpx_inv_sort1 ⦠H) -H /2 width=1 by tdeq_sort/ qed. -lemma cnx_abst: âh,p,G,L,W,T. â¦G, L⦠⢠â¬[h] ðâ¦W⦠â â¦G, L.âW⦠⢠â¬[h] ðâ¦T⦠â - â¦G, L⦠⢠â¬[h] ðâ¦â{p}W.Tâ¦. +lemma cnx_abst: âh,p,G,L,W,T. â¦G,L⦠⢠â¬[h] ðâ¦W⦠â â¦G,L.âW⦠⢠â¬[h] ðâ¦T⦠â + â¦G,L⦠⢠â¬[h] ðâ¦â{p}W.Tâ¦. #h #p #G #L #W #T #HW #HT #X #H elim (cpx_inv_abst1 ⦠H) -H #W0 #T0 #HW0 #HT0 #H destruct @tdeq_pair [ @HW | @HT ] // (**) (* auto fails because δ-expansion gets in the way *) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_cnx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_cnx.ma index 08cf65476..abbc125a0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_cnx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_cnx.ma @@ -19,8 +19,8 @@ include "basic_2/rt_transition/cnx.ma". (* Advanced properties ******************************************************) -lemma cnx_tdeq_trans: âh,G,L,T1. â¦G, L⦠⢠â¬[h] ðâ¦T1⦠â - âT2. T1 â T2 â â¦G, L⦠⢠â¬[h] ðâ¦T2â¦. +lemma cnx_tdeq_trans: âh,G,L,T1. â¦G,L⦠⢠â¬[h] ðâ¦T1⦠â + âT2. T1 â T2 â â¦G,L⦠⢠â¬[h] ðâ¦T2â¦. #h #G #L #T1 #HT1 #T2 #HT12 #T #HT2 elim (tdeq_cpx_trans ⦠HT12 ⦠HT2) -HT2 #T0 #HT10 #HT0 lapply (HT1 ⦠HT10) -HT1 -HT10 /2 width=5 by tdeq_repl/ (**) (* full auto fails *) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma index 3b396d94e..e532b364a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma @@ -20,12 +20,12 @@ include "basic_2/rt_transition/cnx.ma". (* Properties with generic slicing ******************************************) -lemma cnx_lref_atom: âh,G,L,i. â¬*[i] L â â â â¦G, L⦠⢠â¬[h] ðâ¦#iâ¦. +lemma cnx_lref_atom: âh,G,L,i. â¬*[i] L â â â â¦G,L⦠⢠â¬[h] ðâ¦#iâ¦. #h #G #L #i #Hi #X #H elim (cpx_inv_lref1_drops ⦠H) -H // * #I #K #V1 #V2 #HLK lapply (drops_mono ⦠Hi ⦠HLK) -L #H destruct qed. -lemma cnx_lref_unit: âh,I,G,L,K,i. â¬*[i] L â K.â¤{I} â â¦G, L⦠⢠â¬[h] ðâ¦#iâ¦. +lemma cnx_lref_unit: âh,I,G,L,K,i. â¬*[i] L â K.â¤{I} â â¦G,L⦠⢠â¬[h] ðâ¦#iâ¦. #h #I #G #L #K #i #HLK #X #H elim (cpx_inv_lref1_drops ⦠H) -H // * #Z #Y #V1 #V2 #HLY lapply (drops_mono ⦠HLK ⦠HLY) -L #H destruct qed. @@ -40,7 +40,7 @@ qed-. (* Inversion lemmas with generic slicing ************************************) (* Basic_2A1: was: cnx_inv_delta *) -lemma cnx_inv_lref_pair: âh,I,G,L,K,V,i. â¬*[i] L â K.â{I}V â â¦G, L⦠⢠â¬[h] ðâ¦#i⦠â â¥. +lemma cnx_inv_lref_pair: âh,I,G,L,K,V,i. â¬*[i] L â K.â{I}V â â¦G,L⦠⢠â¬[h] ðâ¦#i⦠â â¥. #h #I #G #L #K #V #i #HLK #H elim (lifts_total V (ðâ´âiâµ)) #W #HVW lapply (H W ?) -H /2 width=7 by cpx_delta_drops/ -HLK diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_simple.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_simple.ma index e08892002..322930c7f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_simple.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_simple.ma @@ -19,8 +19,8 @@ include "basic_2/rt_transition/cnx.ma". (* Inversion lemmas with simple terms ***************************************) -lemma cnx_inv_appl: âh,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦âV.T⦠â - â§â§ â¦G, L⦠⢠â¬[h] ðâ¦V⦠& â¦G, L⦠⢠â¬[h] ðâ¦T⦠& ðâ¦Tâ¦. +lemma cnx_inv_appl: âh,G,L,V,T. â¦G,L⦠⢠â¬[h] ðâ¦âV.T⦠â + â§â§ â¦G,L⦠⢠â¬[h] ðâ¦V⦠& â¦G,L⦠⢠â¬[h] ðâ¦T⦠& ðâ¦Tâ¦. #h #G #L #V1 #T1 #HVT1 @and3_intro [ #V2 #HV2 lapply (HVT1 (âV2.T1) ?) -HVT1 /2 width=1 by cpx_pair_sn/ -HV2 #H elim (tdeq_inv_pair ⦠H) -H // @@ -39,8 +39,8 @@ qed-. (* Properties with simple terms *********************************************) -lemma cnx_appl_simple: âh,G,L,V,T. â¦G, L⦠⢠â¬[h] ðâ¦V⦠â â¦G, L⦠⢠â¬[h] ðâ¦T⦠â ðâ¦T⦠â - â¦G, L⦠⢠â¬[h] ðâ¦âV.Tâ¦. +lemma cnx_appl_simple: âh,G,L,V,T. â¦G,L⦠⢠â¬[h] ðâ¦V⦠â â¦G,L⦠⢠â¬[h] ðâ¦T⦠â ðâ¦T⦠â + â¦G,L⦠⢠â¬[h] ðâ¦âV.Tâ¦. #h #G #L #V #T #HV #HT #HS #X #H elim (cpx_inv_appl1_simple ⦠H) -H // #V0 #T0 #HV0 #HT0 #H destruct @tdeq_pair [ @HV | @HT ] // (**) (* auto fails because δ-expansion gets in the way *) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma index 1ebd7f744..6d36b466c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma @@ -15,7 +15,7 @@ include "ground_2/steps/rtc_max.ma". include "ground_2/steps/rtc_plus.ma". include "basic_2/notation/relations/predty_7.ma". -include "static_2/syntax/item_sh.ma". +include "static_2/syntax/sort.ma". include "static_2/syntax/lenv.ma". include "static_2/syntax/genv.ma". include "static_2/relocation/lifts.ma". @@ -61,21 +61,21 @@ interpretation (* Basic properties *********************************************************) (* Note: this is "âRt. reflexive ⦠Rt â âh,g,L. reflexive ⦠(cpg Rt h (ðð) L)" *) -lemma cpg_refl: âRt. reflexive ⦠Rt â âh,G,T,L. â¦G, L⦠⢠T â¬[Rt, ðð, h] T. +lemma cpg_refl: âRt. reflexive ⦠Rt â âh,G,T,L. â¦G,L⦠⢠T â¬[Rt,ðð,h] T. #Rt #HRt #h #G #T elim T -T // * /2 width=1 by cpg_bind/ * /2 width=1 by cpg_appl, cpg_cast/ qed. (* Basic inversion lemmas ***************************************************) -fact cpg_inv_atom1_aux: âRt,c,h,G,L,T1,T2. â¦G, L⦠⢠T1 â¬[Rt, c, h] T2 â âJ. T1 = âª{J} â +fact cpg_inv_atom1_aux: âRt,c,h,G,L,T1,T2. â¦G,L⦠⢠T1 â¬[Rt,c,h] T2 â âJ. T1 = âª{J} â â¨â¨ T2 = âª{J} ⧠c = ðð | ââs. J = Sort s & T2 = â(next h s) & c = ðð - | ââcV,K,V1,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,K,V1,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 & c = cV - | ââcV,K,V1,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,K,V1,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 & c = cV+ðð - | ââI,K,T,i. â¦G, K⦠⢠#i â¬[Rt, c, h] T & â¬*[1] T â T2 & + | ââI,K,T,i. â¦G,K⦠⢠#i â¬[Rt,c,h] T & â¬*[1] T â T2 & L = K.â{I} & J = LRef (âi). #Rt #c #h #G #L #T1 #T2 * -c -G -L -T1 -T2 [ #I #G #L #J #H destruct /3 width=1 by or5_intro0, conj/ @@ -94,18 +94,18 @@ fact cpg_inv_atom1_aux: âRt,c,h,G,L,T1,T2. â¦G, L⦠⢠T1 â¬[Rt, c, h] T2 ] qed-. -lemma cpg_inv_atom1: âRt,c,h,J,G,L,T2. â¦G, L⦠⢠âª{J} â¬[Rt, c, h] T2 â +lemma cpg_inv_atom1: âRt,c,h,J,G,L,T2. â¦G,L⦠⢠âª{J} â¬[Rt,c,h] T2 â â¨â¨ T2 = âª{J} ⧠c = ðð | ââs. J = Sort s & T2 = â(next h s) & c = ðð - | ââcV,K,V1,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,K,V1,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 & c = cV - | ââcV,K,V1,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,K,V1,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 & c = cV+ðð - | ââI,K,T,i. â¦G, K⦠⢠#i â¬[Rt, c, h] T & â¬*[1] T â T2 & + | ââI,K,T,i. â¦G,K⦠⢠#i â¬[Rt,c,h] T & â¬*[1] T â T2 & L = K.â{I} & J = LRef (âi). /2 width=3 by cpg_inv_atom1_aux/ qed-. -lemma cpg_inv_sort1: âRt,c,h,G,L,T2,s. â¦G, L⦠⢠âs â¬[Rt, c, h] T2 â +lemma cpg_inv_sort1: âRt,c,h,G,L,T2,s. â¦G,L⦠⢠âs â¬[Rt,c,h] T2 â â¨â¨ T2 = âs ⧠c = ðð | T2 = â(next h s) ⧠c = ðð. #Rt #c #h #G #L #T2 #s #H elim (cpg_inv_atom1 ⦠H) -H * /3 width=1 by or_introl, conj/ @@ -115,11 +115,11 @@ elim (cpg_inv_atom1 ⦠H) -H * /3 width=1 by or_introl, conj/ ] qed-. -lemma cpg_inv_zero1: âRt,c,h,G,L,T2. â¦G, L⦠⢠#0 â¬[Rt, c, h] T2 â +lemma cpg_inv_zero1: âRt,c,h,G,L,T2. â¦G,L⦠⢠#0 â¬[Rt,c,h] T2 â â¨â¨ T2 = #0 ⧠c = ðð - | ââcV,K,V1,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,K,V1,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & c = cV - | ââcV,K,V1,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,K,V1,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & c = cV+ðð. #Rt #c #h #G #L #T2 #H elim (cpg_inv_atom1 ⦠H) -H * /3 width=1 by or3_intro0, conj/ @@ -129,9 +129,9 @@ elim (cpg_inv_atom1 ⦠H) -H * /3 width=1 by or3_intro0, conj/ ] qed-. -lemma cpg_inv_lref1: âRt,c,h,G,L,T2,i. â¦G, L⦠⢠#âi â¬[Rt, c, h] T2 â +lemma cpg_inv_lref1: âRt,c,h,G,L,T2,i. â¦G,L⦠⢠#âi â¬[Rt,c,h] T2 â â¨â¨ T2 = #(âi) ⧠c = ðð - | ââI,K,T. â¦G, K⦠⢠#i â¬[Rt, c, h] T & â¬*[1] T â T2 & L = K.â{I}. + | ââI,K,T. â¦G,K⦠⢠#i â¬[Rt,c,h] T & â¬*[1] T â T2 & L = K.â{I}. #Rt #c #h #G #L #T2 #i #H elim (cpg_inv_atom1 ⦠H) -H * /3 width=1 by or_introl, conj/ [ #s #H destruct @@ -140,7 +140,7 @@ elim (cpg_inv_atom1 ⦠H) -H * /3 width=1 by or_introl, conj/ ] qed-. -lemma cpg_inv_gref1: âRt,c,h,G,L,T2,l. â¦G, L⦠⢠§l â¬[Rt, c, h] T2 â T2 = §l ⧠c = ðð. +lemma cpg_inv_gref1: âRt,c,h,G,L,T2,l. â¦G,L⦠⢠§l â¬[Rt,c,h] T2 â T2 = §l ⧠c = ðð. #Rt #c #h #G #L #T2 #l #H elim (cpg_inv_atom1 ⦠H) -H * /2 width=1 by conj/ [ #s #H destruct @@ -149,11 +149,11 @@ elim (cpg_inv_atom1 ⦠H) -H * /2 width=1 by conj/ ] qed-. -fact cpg_inv_bind1_aux: âRt,c,h,G,L,U,U2. â¦G, L⦠⢠U â¬[Rt, c, h] U2 â +fact cpg_inv_bind1_aux: âRt,c,h,G,L,U,U2. â¦G,L⦠⢠U â¬[Rt,c,h] U2 â âp,J,V1,U1. U = â{p,J}V1.U1 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L.â{J}V1⦠⢠U1 â¬[Rt, cT, h] T2 & + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L.â{J}V1⦠⢠U1 â¬[Rt,cT,h] T2 & U2 = â{p,J}V2.T2 & c = ((â*cV)â¨cT) - | ââcT,T. â¬*[1] T â U1 & â¦G, L⦠⢠T â¬[Rt, cT, h] U2 & + | ââcT,T. â¬*[1] T â U1 & â¦G,L⦠⢠T â¬[Rt,cT,h] U2 & p = true & J = Abbr & c = cT+ðð. #Rt #c #h #G #L #U #U2 * -c -G -L -U -U2 [ #I #G #L #q #J #W #U1 #H destruct @@ -172,24 +172,24 @@ fact cpg_inv_bind1_aux: âRt,c,h,G,L,U,U2. â¦G, L⦠⢠U â¬[Rt, c, h] U2 ] qed-. -lemma cpg_inv_bind1: âRt,c,h,p,I,G,L,V1,T1,U2. â¦G, L⦠⢠â{p,I}V1.T1 â¬[Rt, c, h] U2 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L.â{I}V1⦠⢠T1 â¬[Rt, cT, h] T2 & +lemma cpg_inv_bind1: âRt,c,h,p,I,G,L,V1,T1,U2. â¦G,L⦠⢠â{p,I}V1.T1 â¬[Rt,c,h] U2 â + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L.â{I}V1⦠⢠T1 â¬[Rt,cT,h] T2 & U2 = â{p,I}V2.T2 & c = ((â*cV)â¨cT) - | ââcT,T. â¬*[1] T â T1 & â¦G, L⦠⢠T â¬[Rt, cT, h] U2 & + | ââcT,T. â¬*[1] T â T1 & â¦G,L⦠⢠T â¬[Rt,cT,h] U2 & p = true & I = Abbr & c = cT+ðð. /2 width=3 by cpg_inv_bind1_aux/ qed-. -lemma cpg_inv_abbr1: âRt,c,h,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬[Rt, c, h] U2 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L.âV1⦠⢠T1 â¬[Rt, cT, h] T2 & +lemma cpg_inv_abbr1: âRt,c,h,p,G,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¬[Rt,c,h] U2 â + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L.âV1⦠⢠T1 â¬[Rt,cT,h] T2 & U2 = â{p}V2.T2 & c = ((â*cV)â¨cT) - | ââcT,T. â¬*[1] T â T1 & â¦G, L⦠⢠T â¬[Rt, cT, h] U2 & + | ââcT,T. â¬*[1] T â T1 & â¦G,L⦠⢠T â¬[Rt,cT,h] U2 & p = true & c = cT+ðð. #Rt #c #h #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 ⦠H) -H * /3 width=8 by ex4_4_intro, ex4_2_intro, or_introl, or_intror/ qed-. -lemma cpg_inv_abst1: âRt,c,h,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬[Rt, c, h] U2 â - ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L.âV1⦠⢠T1 â¬[Rt, cT, h] T2 & +lemma cpg_inv_abst1: âRt,c,h,p,G,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¬[Rt,c,h] U2 â + ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L.âV1⦠⢠T1 â¬[Rt,cT,h] T2 & U2 = â{p}V2.T2 & c = ((â*cV)â¨cT). #Rt #c #h #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 ⦠H) -H * [ /3 width=8 by ex4_4_intro/ @@ -197,13 +197,13 @@ lemma cpg_inv_abst1: âRt,c,h,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬[Rt ] qed-. -fact cpg_inv_appl1_aux: âRt,c,h,G,L,U,U2. â¦G, L⦠⢠U â¬[Rt, c, h] U2 â +fact cpg_inv_appl1_aux: âRt,c,h,G,L,U,U2. â¦G,L⦠⢠U â¬[Rt,c,h] U2 â âV1,U1. U = âV1.U1 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠U1 â¬[Rt, cT, h] T2 & + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠U1 â¬[Rt,cT,h] T2 & U2 = âV2.T2 & c = ((â*cV)â¨cT) - | ââcV,cW,cT,p,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠W1 â¬[Rt, cW, h] W2 & â¦G, L.âW1⦠⢠T1 â¬[Rt, cT, h] T2 & + | ââcV,cW,cT,p,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠W1 â¬[Rt,cW,h] W2 & â¦G,L.âW1⦠⢠T1 â¬[Rt,cT,h] T2 & U1 = â{p}W1.T1 & U2 = â{p}âW2.V2.T2 & c = ((â*cV)â¨(â*cW)â¨cT)+ðð - | ââcV,cW,cT,p,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V & â¬*[1] V â V2 & â¦G, L⦠⢠W1 â¬[Rt, cW, h] W2 & â¦G, L.âW1⦠⢠T1 â¬[Rt, cT, h] T2 & + | ââcV,cW,cT,p,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V & â¬*[1] V â V2 & â¦G,L⦠⢠W1 â¬[Rt,cW,h] W2 & â¦G,L.âW1⦠⢠T1 â¬[Rt,cT,h] T2 & U1 = â{p}W1.T1 & U2 = â{p}W2.âV2.T2 & c = ((â*cV)â¨(â*cW)â¨cT)+ðð. #Rt #c #h #G #L #U #U2 * -c -G -L -U -U2 [ #I #G #L #W #U1 #H destruct @@ -222,21 +222,21 @@ fact cpg_inv_appl1_aux: âRt,c,h,G,L,U,U2. â¦G, L⦠⢠U â¬[Rt, c, h] U2 ] qed-. -lemma cpg_inv_appl1: âRt,c,h,G,L,V1,U1,U2. â¦G, L⦠⢠âV1.U1 â¬[Rt, c, h] U2 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠U1 â¬[Rt, cT, h] T2 & +lemma cpg_inv_appl1: âRt,c,h,G,L,V1,U1,U2. â¦G,L⦠⢠âV1.U1 â¬[Rt,c,h] U2 â + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠U1 â¬[Rt,cT,h] T2 & U2 = âV2.T2 & c = ((â*cV)â¨cT) - | ââcV,cW,cT,p,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠W1 â¬[Rt, cW, h] W2 & â¦G, L.âW1⦠⢠T1 â¬[Rt, cT, h] T2 & + | ââcV,cW,cT,p,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠W1 â¬[Rt,cW,h] W2 & â¦G,L.âW1⦠⢠T1 â¬[Rt,cT,h] T2 & U1 = â{p}W1.T1 & U2 = â{p}âW2.V2.T2 & c = ((â*cV)â¨(â*cW)â¨cT)+ðð - | ââcV,cW,cT,p,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V & â¬*[1] V â V2 & â¦G, L⦠⢠W1 â¬[Rt, cW, h] W2 & â¦G, L.âW1⦠⢠T1 â¬[Rt, cT, h] T2 & + | ââcV,cW,cT,p,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V & â¬*[1] V â V2 & â¦G,L⦠⢠W1 â¬[Rt,cW,h] W2 & â¦G,L.âW1⦠⢠T1 â¬[Rt,cT,h] T2 & U1 = â{p}W1.T1 & U2 = â{p}W2.âV2.T2 & c = ((â*cV)â¨(â*cW)â¨cT)+ðð. /2 width=3 by cpg_inv_appl1_aux/ qed-. -fact cpg_inv_cast1_aux: âRt,c,h,G,L,U,U2. â¦G, L⦠⢠U â¬[Rt, c, h] U2 â +fact cpg_inv_cast1_aux: âRt,c,h,G,L,U,U2. â¦G,L⦠⢠U â¬[Rt,c,h] U2 â âV1,U1. U = âV1.U1 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠U1 â¬[Rt, cT, h] T2 & + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠U1 â¬[Rt,cT,h] T2 & Rt cV cT & U2 = âV2.T2 & c = (cVâ¨cT) - | ââcT. â¦G, L⦠⢠U1 â¬[Rt, cT, h] U2 & c = cT+ðð - | ââcV. â¦G, L⦠⢠V1 â¬[Rt, cV, h] U2 & c = cV+ðð. + | ââcT. â¦G,L⦠⢠U1 â¬[Rt,cT,h] U2 & c = cT+ðð + | ââcV. â¦G,L⦠⢠V1 â¬[Rt,cV,h] U2 & c = cV+ðð. #Rt #c #h #G #L #U #U2 * -c -G -L -U -U2 [ #I #G #L #W #U1 #H destruct | #G #L #s #W #U1 #H destruct @@ -254,36 +254,36 @@ fact cpg_inv_cast1_aux: âRt,c,h,G,L,U,U2. â¦G, L⦠⢠U â¬[Rt, c, h] U2 ] qed-. -lemma cpg_inv_cast1: âRt,c,h,G,L,V1,U1,U2. â¦G, L⦠⢠âV1.U1 â¬[Rt, c, h] U2 â - â¨â¨ ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠U1 â¬[Rt, cT, h] T2 & +lemma cpg_inv_cast1: âRt,c,h,G,L,V1,U1,U2. â¦G,L⦠⢠âV1.U1 â¬[Rt,c,h] U2 â + â¨â¨ ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠U1 â¬[Rt,cT,h] T2 & Rt cV cT & U2 = âV2.T2 & c = (cVâ¨cT) - | ââcT. â¦G, L⦠⢠U1 â¬[Rt, cT, h] U2 & c = cT+ðð - | ââcV. â¦G, L⦠⢠V1 â¬[Rt, cV, h] U2 & c = cV+ðð. + | ââcT. â¦G,L⦠⢠U1 â¬[Rt,cT,h] U2 & c = cT+ðð + | ââcV. â¦G,L⦠⢠V1 â¬[Rt,cV,h] U2 & c = cV+ðð. /2 width=3 by cpg_inv_cast1_aux/ qed-. (* Advanced inversion lemmas ************************************************) -lemma cpg_inv_zero1_pair: âRt,c,h,I,G,K,V1,T2. â¦G, K.â{I}V1⦠⢠#0 â¬[Rt, c, h] T2 â +lemma cpg_inv_zero1_pair: âRt,c,h,I,G,K,V1,T2. â¦G,K.â{I}V1⦠⢠#0 â¬[Rt,c,h] T2 â â¨â¨ T2 = #0 ⧠c = ðð - | ââcV,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & I = Abbr & c = cV - | ââcV,V2. â¦G, K⦠⢠V1 â¬[Rt, cV, h] V2 & â¬*[1] V2 â T2 & + | ââcV,V2. â¦G,K⦠⢠V1 â¬[Rt,cV,h] V2 & â¬*[1] V2 â T2 & I = Abst & c = cV+ðð. #Rt #c #h #I #G #K #V1 #T2 #H elim (cpg_inv_zero1 ⦠H) -H /2 width=1 by or3_intro0/ * #z #Y #X1 #X2 #HX12 #HXT2 #H1 #H2 destruct /3 width=5 by or3_intro1, or3_intro2, ex4_2_intro/ qed-. -lemma cpg_inv_lref1_bind: âRt,c,h,I,G,K,T2,i. â¦G, K.â{I}⦠⢠#âi â¬[Rt, c, h] T2 â +lemma cpg_inv_lref1_bind: âRt,c,h,I,G,K,T2,i. â¦G,K.â{I}⦠⢠#âi â¬[Rt,c,h] T2 â â¨â¨ T2 = #(âi) ⧠c = ðð - | ââT. â¦G, K⦠⢠#i â¬[Rt, c, h] T & â¬*[1] T â T2. + | ââT. â¦G,K⦠⢠#i â¬[Rt,c,h] T & â¬*[1] T â T2. #Rt #c #h #I #G #L #T2 #i #H elim (cpg_inv_lref1 ⦠H) -H /2 width=1 by or_introl/ * #Z #Y #T #HT #HT2 #H destruct /3 width=3 by ex2_intro, or_intror/ qed-. (* Basic forward lemmas *****************************************************) -lemma cpg_fwd_bind1_minus: âRt,c,h,I,G,L,V1,T1,T. â¦G, L⦠⢠-â{I}V1.T1 â¬[Rt, c, h] T â âp. - ââV2,T2. â¦G, L⦠⢠â{p,I}V1.T1 â¬[Rt, c, h] â{p,I}V2.T2 & +lemma cpg_fwd_bind1_minus: âRt,c,h,I,G,L,V1,T1,T. â¦G,L⦠⢠-â{I}V1.T1 â¬[Rt,c,h] T â âp. + ââV2,T2. â¦G,L⦠⢠â{p,I}V1.T1 â¬[Rt,c,h] â{p,I}V2.T2 & T = -â{I}V2.T2. #Rt #c #h #I #G #L #V1 #T1 #T #H #p elim (cpg_inv_bind1 ⦠H) -H * [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct /3 width=4 by cpg_bind, ex2_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma index 37ac3fa83..71d38a1ba 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/cpg.ma". (* Advanced properties ******************************************************) -lemma cpg_delta_drops: âRt,c,h,G,K,V,V2,i,L,T2. â¬*[i] L â K.âV â â¦G, K⦠⢠V â¬[Rt, c, h] V2 â - â¬*[âi] V2 â T2 â â¦G, L⦠⢠#i â¬[Rt, c, h] T2. +lemma cpg_delta_drops: âRt,c,h,G,K,V,V2,i,L,T2. â¬*[i] L â K.âV â â¦G,K⦠⢠V â¬[Rt,c,h] V2 â + â¬*[âi] V2 â T2 â â¦G,L⦠⢠#i â¬[Rt,c,h] T2. #Rt #c #h #G #K #V #V2 #i elim i -i [ #L #T2 #HLK lapply (drops_fwd_isid ⦠HLK ?) // #H destruct /3 width=3 by cpg_delta/ | #i #IH #L0 #T0 #H0 #HV2 #HVT2 @@ -31,8 +31,8 @@ lemma cpg_delta_drops: âRt,c,h,G,K,V,V2,i,L,T2. â¬*[i] L â K.âV â â¦G, ] qed. -lemma cpg_ell_drops: âRt,c,h,G,K,V,V2,i,L,T2. â¬*[i] L â K.âV â â¦G, K⦠⢠V â¬[Rt,c, h] V2 â - â¬*[âi] V2 â T2 â â¦G, L⦠⢠#i â¬[Rt, c+ðð, h] T2. +lemma cpg_ell_drops: âRt,c,h,G,K,V,V2,i,L,T2. â¬*[i] L â K.âV â â¦G,K⦠⢠V â¬[Rt,c,h] V2 â + â¬*[âi] V2 â T2 â â¦G,L⦠⢠#i â¬[Rt,c+ðð,h] T2. #Rt #c #h #G #K #V #V2 #i elim i -i [ #L #T2 #HLK lapply (drops_fwd_isid ⦠HLK ?) // #H destruct /3 width=3 by cpg_ell/ | #i #IH #L0 #T0 #H0 #HV2 #HVT2 @@ -43,11 +43,11 @@ qed. (* Advanced inversion lemmas ************************************************) -lemma cpg_inv_lref1_drops: âRt,c,h,G,i,L,T2. â¦G, L⦠⢠#i â¬[Rt,c, h] T2 â +lemma cpg_inv_lref1_drops: âRt,c,h,G,i,L,T2. â¦G,L⦠⢠#i â¬[Rt,c,h] T2 â â¨â¨ T2 = #i ⧠c = ðð - | ââcV,K,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¬[Rt, cV, h] V2 & + | ââcV,K,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¬[Rt,cV,h] V2 & â¬*[âi] V2 â T2 & c = cV - | ââcV,K,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¬[Rt, cV, h] V2 & + | ââcV,K,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¬[Rt,cV,h] V2 & â¬*[âi] V2 â T2 & c = cV + ðð. #Rt #c #h #G #i elim i -i [ #L #T2 #H elim (cpg_inv_zero1 ⦠H) -H * /3 width=1 by or3_intro0, conj/ @@ -61,12 +61,12 @@ lemma cpg_inv_lref1_drops: âRt,c,h,G,i,L,T2. â¦G, L⦠⢠#i â¬[Rt,c, h] T2 ] qed-. -lemma cpg_inv_atom1_drops: âRt,c,h,I,G,L,T2. â¦G, L⦠⢠âª{I} â¬[Rt, c, h] T2 â +lemma cpg_inv_atom1_drops: âRt,c,h,I,G,L,T2. â¦G,L⦠⢠âª{I} â¬[Rt,c,h] T2 â â¨â¨ T2 = âª{I} ⧠c = ðð | ââs. T2 = â(next h s) & I = Sort s & c = ðð - | ââcV,i,K,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¬[Rt, cV, h] V2 & + | ââcV,i,K,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¬[Rt,cV,h] V2 & â¬*[âi] V2 â T2 & I = LRef i & c = cV - | ââcV,i,K,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¬[Rt, cV, h] V2 & + | ââcV,i,K,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¬[Rt,cV,h] V2 & â¬*[âi] V2 â T2 & I = LRef i & c = cV + ðð. #Rt #c #h * #n #G #L #T2 #H [ elim (cpg_inv_sort1 ⦠H) -H * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_simple.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_simple.ma index 39228c247..7d4b85f06 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_simple.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_simple.ma @@ -20,8 +20,8 @@ include "basic_2/rt_transition/cpg.ma". (* Properties with simple terms *********************************************) (* Note: the main property of simple terms *) -lemma cpg_inv_appl1_simple: âRt,c,h,G,L,V1,T1,U. â¦G, L⦠⢠âV1.T1 â¬[Rt, c, h] U â ðâ¦T1⦠â - ââcV,cT,V2,T2. â¦G, L⦠⢠V1 â¬[Rt, cV, h] V2 & â¦G, L⦠⢠T1 â¬[Rt, cT, h] T2 & +lemma cpg_inv_appl1_simple: âRt,c,h,G,L,V1,T1,U. â¦G,L⦠⢠âV1.T1 â¬[Rt,c,h] U â ðâ¦T1⦠â + ââcV,cT,V2,T2. â¦G,L⦠⢠V1 â¬[Rt,cV,h] V2 & â¦G,L⦠⢠T1 â¬[Rt,cT,h] T2 & U = âV2.T2 & c = ((â*cV)â¨cT). #Rt #c #h #G #L #V1 #T1 #U #H #HT1 elim (cpg_inv_appl1 ⦠H) -H * [ /2 width=8 by ex4_4_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma index 341ecee8c..c8f746351 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma @@ -20,7 +20,7 @@ include "basic_2/rt_transition/cpg.ma". (* Basic_2A1: includes: cpr *) definition cpm (h) (G) (L) (n): relation2 term term â - λT1,T2. ââc. ððâ¦n, c⦠& â¦G, L⦠⢠T1 â¬[eq_t, c, h] T2. + λT1,T2. ââc. ððâ¦n,c⦠& â¦G,L⦠⢠T1 â¬[eq_t,c,h] T2. interpretation "t-bound context-sensitive parallel rt-transition (term)" @@ -32,81 +32,81 @@ interpretation (* Basic properties *********************************************************) -lemma cpm_ess: âh,G,L,s. â¦G, L⦠⢠âs â¡[1, h] â(next h s). +lemma cpm_ess: âh,G,L,s. â¦G,L⦠⢠âs â¡[1,h] â(next h s). /2 width=3 by cpg_ess, ex2_intro/ qed. -lemma cpm_delta: ân,h,G,K,V1,V2,W2. â¦G, K⦠⢠V1 â¡[n, h] V2 â - â¬*[1] V2 â W2 â â¦G, K.âV1⦠⢠#0 â¡[n, h] W2. +lemma cpm_delta: ân,h,G,K,V1,V2,W2. â¦G,K⦠⢠V1 â¡[n,h] V2 â + â¬*[1] V2 â W2 â â¦G,K.âV1⦠⢠#0 â¡[n,h] W2. #n #h #G #K #V1 #V2 #W2 * /3 width=5 by cpg_delta, ex2_intro/ qed. -lemma cpm_ell: ân,h,G,K,V1,V2,W2. â¦G, K⦠⢠V1 â¡[n, h] V2 â - â¬*[1] V2 â W2 â â¦G, K.âV1⦠⢠#0 â¡[ân, h] W2. +lemma cpm_ell: ân,h,G,K,V1,V2,W2. â¦G,K⦠⢠V1 â¡[n,h] V2 â + â¬*[1] V2 â W2 â â¦G,K.âV1⦠⢠#0 â¡[ân,h] W2. #n #h #G #K #V1 #V2 #W2 * /3 width=5 by cpg_ell, ex2_intro, isrt_succ/ qed. -lemma cpm_lref: ân,h,I,G,K,T,U,i. â¦G, K⦠⢠#i â¡[n, h] T â - â¬*[1] T â U â â¦G, K.â{I}⦠⢠#âi â¡[n, h] U. +lemma cpm_lref: ân,h,I,G,K,T,U,i. â¦G,K⦠⢠#i â¡[n,h] T â + â¬*[1] T â U â â¦G,K.â{I}⦠⢠#âi â¡[n,h] U. #n #h #I #G #K #T #U #i * /3 width=5 by cpg_lref, ex2_intro/ qed. (* Basic_2A1: includes: cpr_bind *) lemma cpm_bind: ân,h,p,I,G,L,V1,V2,T1,T2. - â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L.â{I}V1⦠⢠T1 â¡[n, h] T2 â - â¦G, L⦠⢠â{p,I}V1.T1 â¡[n, h] â{p,I}V2.T2. + â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L.â{I}V1⦠⢠T1 â¡[n,h] T2 â + â¦G,L⦠⢠â{p,I}V1.T1 â¡[n,h] â{p,I}V2.T2. #n #h #p #I #G #L #V1 #V2 #T1 #T2 * #cV #HcV #HV12 * /5 width=5 by cpg_bind, isrt_max_O1, isr_shift, ex2_intro/ qed. lemma cpm_appl: ân,h,G,L,V1,V2,T1,T2. - â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠T1 â¡[n, h] T2 â - â¦G, L⦠⢠âV1.T1 â¡[n, h] âV2.T2. + â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠T1 â¡[n,h] T2 â + â¦G,L⦠⢠âV1.T1 â¡[n,h] âV2.T2. #n #h #G #L #V1 #V2 #T1 #T2 * #cV #HcV #HV12 * /5 width=5 by isrt_max_O1, isr_shift, cpg_appl, ex2_intro/ qed. lemma cpm_cast: ân,h,G,L,U1,U2,T1,T2. - â¦G, L⦠⢠U1 â¡[n, h] U2 â â¦G, L⦠⢠T1 â¡[n, h] T2 â - â¦G, L⦠⢠âU1.T1 â¡[n, h] âU2.T2. + â¦G,L⦠⢠U1 â¡[n,h] U2 â â¦G,L⦠⢠T1 â¡[n,h] T2 â + â¦G,L⦠⢠âU1.T1 â¡[n,h] âU2.T2. #n #h #G #L #U1 #U2 #T1 #T2 * #cU #HcU #HU12 * /4 width=6 by cpg_cast, isrt_max_idem1, isrt_mono, ex2_intro/ qed. (* Basic_2A1: includes: cpr_zeta *) lemma cpm_zeta (n) (h) (G) (L): - âT1,T. â¬*[1] T â T1 â âT2. â¦G, L⦠⢠T â¡[n,h] T2 â - âV. â¦G, L⦠⢠+âV.T1 â¡[n, h] T2. + âT1,T. â¬*[1] T â T1 â âT2. â¦G,L⦠⢠T â¡[n,h] T2 â + âV. â¦G,L⦠⢠+âV.T1 â¡[n,h] T2. #n #h #G #L #T1 #T #HT1 #T2 * /3 width=5 by cpg_zeta, isrt_plus_O2, ex2_intro/ qed. (* Basic_2A1: includes: cpr_eps *) -lemma cpm_eps: ân,h,G,L,V,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â â¦G, L⦠⢠âV.T1 â¡[n, h] T2. +lemma cpm_eps: ân,h,G,L,V,T1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â â¦G,L⦠⢠âV.T1 â¡[n,h] T2. #n #h #G #L #V #T1 #T2 * /3 width=3 by cpg_eps, isrt_plus_O2, ex2_intro/ qed. -lemma cpm_ee: ân,h,G,L,V1,V2,T. â¦G, L⦠⢠V1 â¡[n, h] V2 â â¦G, L⦠⢠âV1.T â¡[ân, h] V2. +lemma cpm_ee: ân,h,G,L,V1,V2,T. â¦G,L⦠⢠V1 â¡[n,h] V2 â â¦G,L⦠⢠âV1.T â¡[ân,h] V2. #n #h #G #L #V1 #V2 #T * /3 width=3 by cpg_ee, isrt_succ, ex2_intro/ qed. (* Basic_2A1: includes: cpr_beta *) lemma cpm_beta: ân,h,p,G,L,V1,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠W1 â¡[h] W2 â â¦G, L.âW1⦠⢠T1 â¡[n, h] T2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¡[n, h] â{p}âW2.V2.T2. + â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠W1 â¡[h] W2 â â¦G,L.âW1⦠⢠T1 â¡[n,h] T2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¡[n,h] â{p}âW2.V2.T2. #n #h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV12 * #riW #rhW #HW12 * /6 width=7 by cpg_beta, isrt_plus_O2, isrt_max, isr_shift, ex2_intro/ qed. (* Basic_2A1: includes: cpr_theta *) lemma cpm_theta: ân,h,p,G,L,V1,V,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¡[h] V â â¬*[1] V â V2 â â¦G, L⦠⢠W1 â¡[h] W2 â - â¦G, L.âW1⦠⢠T1 â¡[n, h] T2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¡[n, h] â{p}W2.âV2.T2. + â¦G,L⦠⢠V1 â¡[h] V â â¬*[1] V â V2 â â¦G,L⦠⢠W1 â¡[h] W2 â + â¦G,L.âW1⦠⢠T1 â¡[n,h] T2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¡[n,h] â{p}W2.âV2.T2. #n #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV1 #HV2 * #riW #rhW #HW12 * /6 width=9 by cpg_theta, isrt_plus_O2, isrt_max, isr_shift, ex2_intro/ qed. @@ -129,14 +129,14 @@ qed. (* Basic inversion lemmas ***************************************************) -lemma cpm_inv_atom1: ân,h,J,G,L,T2. â¦G, L⦠⢠âª{J} â¡[n, h] T2 â +lemma cpm_inv_atom1: ân,h,J,G,L,T2. â¦G,L⦠⢠âª{J} â¡[n,h] T2 â â¨â¨ T2 = âª{J} ⧠n = 0 | ââs. T2 = â(next h s) & J = Sort s & n = 1 - | ââK,V1,V2. â¦G, K⦠⢠V1 â¡[n, h] V2 & â¬*[1] V2 â T2 & + | ââK,V1,V2. â¦G,K⦠⢠V1 â¡[n,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 - | ââm,K,V1,V2. â¦G, K⦠⢠V1 â¡[m, h] V2 & â¬*[1] V2 â T2 & + | ââm,K,V1,V2. â¦G,K⦠⢠V1 â¡[m,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 & n = âm - | ââI,K,T,i. â¦G, K⦠⢠#i â¡[n, h] T & â¬*[1] T â T2 & + | ââI,K,T,i. â¦G,K⦠⢠#i â¡[n,h] T & â¬*[1] T â T2 & L = K.â{I} & J = LRef (âi). #n #h #J #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1 ⦠H) -H * [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or5_intro0, conj/ @@ -151,7 +151,7 @@ lemma cpm_inv_atom1: ân,h,J,G,L,T2. â¦G, L⦠⢠âª{J} â¡[n, h] T2 â ] qed-. -lemma cpm_inv_sort1: ân,h,G,L,T2,s. â¦G, L⦠⢠âs â¡[n,h] T2 â +lemma cpm_inv_sort1: ân,h,G,L,T2,s. â¦G,L⦠⢠âs â¡[n,h] T2 â â§â§ T2 = â(((next h)^n) s) & n ⤠1. #n #h #G #L #T2 #s * #c #Hc #H elim (cpg_inv_sort1 ⦠H) -H * #H1 #H2 destruct @@ -159,11 +159,11 @@ elim (cpg_inv_sort1 ⦠H) -H * #H1 #H2 destruct #H destruct /2 width=1 by conj/ qed-. -lemma cpm_inv_zero1: ân,h,G,L,T2. â¦G, L⦠⢠#0 â¡[n, h] T2 â +lemma cpm_inv_zero1: ân,h,G,L,T2. â¦G,L⦠⢠#0 â¡[n,h] T2 â â¨â¨ T2 = #0 ⧠n = 0 - | ââK,V1,V2. â¦G, K⦠⢠V1 â¡[n, h] V2 & â¬*[1] V2 â T2 & + | ââK,V1,V2. â¦G,K⦠⢠V1 â¡[n,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 - | ââm,K,V1,V2. â¦G, K⦠⢠V1 â¡[m, h] V2 & â¬*[1] V2 â T2 & + | ââm,K,V1,V2. â¦G,K⦠⢠V1 â¡[m,h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & n = âm. #n #h #G #L #T2 * #c #Hc #H elim (cpg_inv_zero1 ⦠H) -H * [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or3_intro0, conj/ @@ -175,9 +175,9 @@ lemma cpm_inv_zero1: ân,h,G,L,T2. â¦G, L⦠⢠#0 â¡[n, h] T2 â ] qed-. -lemma cpm_inv_lref1: ân,h,G,L,T2,i. â¦G, L⦠⢠#âi â¡[n, h] T2 â +lemma cpm_inv_lref1: ân,h,G,L,T2,i. â¦G,L⦠⢠#âi â¡[n,h] T2 â â¨â¨ T2 = #(âi) ⧠n = 0 - | ââI,K,T. â¦G, K⦠⢠#i â¡[n, h] T & â¬*[1] T â T2 & L = K.â{I}. + | ââI,K,T. â¦G,K⦠⢠#i â¡[n,h] T & â¬*[1] T â T2 & L = K.â{I}. #n #h #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1 ⦠H) -H * [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or_introl, conj/ | #I #K #V2 #HV2 #HVT2 #H destruct @@ -185,16 +185,16 @@ lemma cpm_inv_lref1: ân,h,G,L,T2,i. â¦G, L⦠⢠#âi â¡[n, h] T2 â ] qed-. -lemma cpm_inv_gref1: ân,h,G,L,T2,l. â¦G, L⦠⢠§l â¡[n, h] T2 â T2 = §l ⧠n = 0. +lemma cpm_inv_gref1: ân,h,G,L,T2,l. â¦G,L⦠⢠§l â¡[n,h] T2 â T2 = §l ⧠n = 0. #n #h #G #L #T2 #l * #c #Hc #H elim (cpg_inv_gref1 ⦠H) -H #H1 #H2 destruct /3 width=1 by isrt_inv_00, conj/ qed-. (* Basic_2A1: includes: cpr_inv_bind1 *) -lemma cpm_inv_bind1: ân,h,p,I,G,L,V1,T1,U2. â¦G, L⦠⢠â{p,I}V1.T1 â¡[n, h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L.â{I}V1⦠⢠T1 â¡[n, h] T2 & +lemma cpm_inv_bind1: ân,h,p,I,G,L,V1,T1,U2. â¦G,L⦠⢠â{p,I}V1.T1 â¡[n,h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L.â{I}V1⦠⢠T1 â¡[n,h] T2 & U2 = â{p,I}V2.T2 - | ââT. â¬*[1] T â T1 & â¦G, L⦠⢠T â¡[n, h] U2 & + | ââT. â¬*[1] T â T1 & â¦G,L⦠⢠T â¡[n,h] U2 & p = true & I = Abbr. #n #h #p #I #G #L #V1 #T1 #U2 * #c #Hc #H elim (cpg_inv_bind1 ⦠H) -H * [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct @@ -208,10 +208,10 @@ qed-. (* Basic_1: includes: pr0_gen_abbr pr2_gen_abbr *) (* Basic_2A1: includes: cpr_inv_abbr1 *) -lemma cpm_inv_abbr1: ân,h,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¡[n, h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L.âV1⦠⢠T1 â¡[n, h] T2 & +lemma cpm_inv_abbr1: ân,h,p,G,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¡[n,h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L.âV1⦠⢠T1 â¡[n,h] T2 & U2 = â{p}V2.T2 - | ââT. â¬*[1] T â T1 & â¦G, L⦠⢠T â¡[n, h] U2 & p = true. + | ââT. â¬*[1] T â T1 & â¦G,L⦠⢠T â¡[n,h] U2 & p = true. #n #h #p #G #L #V1 #T1 #U2 #H elim (cpm_inv_bind1 ⦠H) -H [ /3 width=1 by or_introl/ @@ -221,8 +221,8 @@ qed-. (* Basic_1: includes: pr0_gen_abst pr2_gen_abst *) (* Basic_2A1: includes: cpr_inv_abst1 *) -lemma cpm_inv_abst1: ân,h,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¡[n, h] U2 â - ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L.âV1⦠⢠T1 â¡[n, h] T2 & +lemma cpm_inv_abst1: ân,h,p,G,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¡[n,h] U2 â + ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L.âV1⦠⢠T1 â¡[n,h] T2 & U2 = â{p}V2.T2. #n #h #p #G #L #V1 #T1 #U2 #H elim (cpm_inv_bind1 ⦠H) -H @@ -240,14 +240,14 @@ qed-. (* Basic_1: includes: pr0_gen_appl pr2_gen_appl *) (* Basic_2A1: includes: cpr_inv_appl1 *) -lemma cpm_inv_appl1: ân,h,G,L,V1,U1,U2. â¦G, L⦠⢠â V1.U1 â¡[n, h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L⦠⢠U1 â¡[n, h] T2 & +lemma cpm_inv_appl1: ân,h,G,L,V1,U1,U2. â¦G,L⦠⢠â V1.U1 â¡[n,h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L⦠⢠U1 â¡[n,h] T2 & U2 = âV2.T2 - | ââp,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L⦠⢠W1 â¡[h] W2 & - â¦G, L.âW1⦠⢠T1 â¡[n, h] T2 & + | ââp,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L⦠⢠W1 â¡[h] W2 & + â¦G,L.âW1⦠⢠T1 â¡[n,h] T2 & U1 = â{p}W1.T1 & U2 = â{p}âW2.V2.T2 - | ââp,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V & â¬*[1] V â V2 & - â¦G, L⦠⢠W1 â¡[h] W2 & â¦G, L.âW1⦠⢠T1 â¡[n, h] T2 & + | ââp,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V & â¬*[1] V â V2 & + â¦G,L⦠⢠W1 â¡[h] W2 & â¦G,L.âW1⦠⢠T1 â¡[n,h] T2 & U1 = â{p}W1.T1 & U2 = â{p}W2.âV2.T2. #n #h #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_appl1 ⦠H) -H * [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct @@ -271,11 +271,11 @@ lemma cpm_inv_appl1: ân,h,G,L,V1,U1,U2. â¦G, L⦠⢠â V1.U1 â¡[n, h] U2 ] qed-. -lemma cpm_inv_cast1: ân,h,G,L,V1,U1,U2. â¦G, L⦠⢠âV1.U1 â¡[n, h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡[n, h] V2 & â¦G, L⦠⢠U1 â¡[n, h] T2 & +lemma cpm_inv_cast1: ân,h,G,L,V1,U1,U2. â¦G,L⦠⢠âV1.U1 â¡[n,h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡[n,h] V2 & â¦G,L⦠⢠U1 â¡[n,h] T2 & U2 = âV2.T2 - | â¦G, L⦠⢠U1 â¡[n, h] U2 - | ââm. â¦G, L⦠⢠V1 â¡[m, h] U2 & n = âm. + | â¦G,L⦠⢠U1 â¡[n,h] U2 + | ââm. â¦G,L⦠⢠V1 â¡[m,h] U2 & n = âm. #n #h #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_cast1 ⦠H) -H * [ #cV #cT #V2 #T2 #HV12 #HT12 #HcVT #H1 #H2 destruct elim (isrt_inv_max ⦠Hc) -Hc #nV #nT #HcV #HcT #H destruct @@ -293,8 +293,8 @@ qed-. (* Basic forward lemmas *****************************************************) (* Basic_2A1: includes: cpr_fwd_bind1_minus *) -lemma cpm_fwd_bind1_minus: ân,h,I,G,L,V1,T1,T. â¦G, L⦠⢠-â{I}V1.T1 â¡[n, h] T â âp. - ââV2,T2. â¦G, L⦠⢠â{p,I}V1.T1 â¡[n, h] â{p,I}V2.T2 & +lemma cpm_fwd_bind1_minus: ân,h,I,G,L,V1,T1,T. â¦G,L⦠⢠-â{I}V1.T1 â¡[n,h] T â âp. + ââV2,T2. â¦G,L⦠⢠â{p,I}V1.T1 â¡[n,h] â{p,I}V2.T2 & T = -â{I}V2.T2. #n #h #I #G #L #V1 #T1 #T * #c #Hc #H #p elim (cpg_fwd_bind1_minus ⦠H p) -H /3 width=4 by ex2_2_intro, ex2_intro/ @@ -305,32 +305,32 @@ qed-. lemma cpm_ind (h): âQ:relation5 nat genv lenv term term. (âI,G,L. Q 0 G L (âª{I}) (âª{I})) â (âG,L,s. Q 1 G L (âs) (â(next h s))) â - (ân,G,K,V1,V2,W2. â¦G, K⦠⢠V1 â¡[n, h] V2 â Q n G K V1 V2 â + (ân,G,K,V1,V2,W2. â¦G,K⦠⢠V1 â¡[n,h] V2 â Q n G K V1 V2 â â¬*[1] V2 â W2 â Q n G (K.âV1) (#0) W2 - ) â (ân,G,K,V1,V2,W2. â¦G, K⦠⢠V1 â¡[n, h] V2 â Q n G K V1 V2 â + ) â (ân,G,K,V1,V2,W2. â¦G,K⦠⢠V1 â¡[n,h] V2 â Q n G K V1 V2 â â¬*[1] V2 â W2 â Q (ân) G (K.âV1) (#0) W2 - ) â (ân,I,G,K,T,U,i. â¦G, K⦠⢠#i â¡[n, h] T â Q n G K (#i) T â + ) â (ân,I,G,K,T,U,i. â¦G,K⦠⢠#i â¡[n,h] T â Q n G K (#i) T â â¬*[1] T â U â Q n G (K.â{I}) (#âi) (U) - ) â (ân,p,I,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L.â{I}V1⦠⢠T1 â¡[n, h] T2 â + ) â (ân,p,I,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L.â{I}V1⦠⢠T1 â¡[n,h] T2 â Q 0 G L V1 V2 â Q n G (L.â{I}V1) T1 T2 â Q n G L (â{p,I}V1.T1) (â{p,I}V2.T2) - ) â (ân,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠T1 â¡[n, h] T2 â + ) â (ân,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠T1 â¡[n,h] T2 â Q 0 G L V1 V2 â Q n G L T1 T2 â Q n G L (âV1.T1) (âV2.T2) - ) â (ân,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¡[n, h] V2 â â¦G, L⦠⢠T1 â¡[n, h] T2 â + ) â (ân,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¡[n,h] V2 â â¦G,L⦠⢠T1 â¡[n,h] T2 â Q n G L V1 V2 â Q n G L T1 T2 â Q n G L (âV1.T1) (âV2.T2) - ) â (ân,G,L,V,T1,T,T2. â¬*[1] T â T1 â â¦G, L⦠⢠T â¡[n, h] T2 â + ) â (ân,G,L,V,T1,T,T2. â¬*[1] T â T1 â â¦G,L⦠⢠T â¡[n,h] T2 â Q n G L T T2 â Q n G L (+âV.T1) T2 - ) â (ân,G,L,V,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â + ) â (ân,G,L,V,T1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â Q n G L T1 T2 â Q n G L (âV.T1) T2 - ) â (ân,G,L,V1,V2,T. â¦G, L⦠⢠V1 â¡[n, h] V2 â + ) â (ân,G,L,V1,V2,T. â¦G,L⦠⢠V1 â¡[n,h] V2 â Q n G L V1 V2 â Q (ân) G L (âV1.T) V2 - ) â (ân,p,G,L,V1,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠W1 â¡[h] W2 â â¦G, L.âW1⦠⢠T1 â¡[n, h] T2 â + ) â (ân,p,G,L,V1,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠W1 â¡[h] W2 â â¦G,L.âW1⦠⢠T1 â¡[n,h] T2 â Q 0 G L V1 V2 â Q 0 G L W1 W2 â Q n G (L.âW1) T1 T2 â Q n G L (âV1.â{p}W1.T1) (â{p}âW2.V2.T2) - ) â (ân,p,G,L,V1,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V â â¦G, L⦠⢠W1 â¡[h] W2 â â¦G, L.âW1⦠⢠T1 â¡[n, h] T2 â + ) â (ân,p,G,L,V1,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V â â¦G,L⦠⢠W1 â¡[h] W2 â â¦G,L.âW1⦠⢠T1 â¡[n,h] T2 â Q 0 G L V1 V â Q 0 G L W1 W2 â Q n G (L.âW1) T1 T2 â â¬*[1] V â V2 â Q n G L (âV1.â{p}W1.T1) (â{p}W2.âV2.T2) ) â - ân,G,L,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â Q n G L T1 T2. + ân,G,L,T1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â Q n G L T1 T2. #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #IH12 #IH13 #n #G #L #T1 #T2 * #c #HC #H generalize in match HC; -HC generalize in match n; -n elim H -c -G -L -T1 -T2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_aaa.ma index 8fa425fc5..b5a67ac4e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_aaa.ma @@ -25,7 +25,7 @@ lemma cpm_aaa_conf (n) (h): âG,L. Conf3 ⦠(aaa G L) (cpm h G L n). (* Note: one of these U is the inferred type of T *) lemma aaa_cpm_SO (h) (G) (L) (A): - âT. â¦G, L⦠⢠T â A â âU. â¦G,L⦠⢠T â¡[1,h] U. + âT. â¦G,L⦠⢠T â A â âU. â¦G,L⦠⢠T â¡[1,h] U. #h #G #L #A #T #H elim H -G -L -T -A [ /3 width=2 by ex_intro/ | * #G #L #V #B #_ * #V0 #HV0 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_cpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_cpx.ma index 6f07b0647..8cbb8fc18 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_cpx.ma @@ -20,7 +20,7 @@ include "basic_2/rt_transition/cpm.ma". (* Forward lemmas with unbound context-sensitive rt-transition for terms ****) (* Basic_2A1: includes: cpr_cpx *) -lemma cpm_fwd_cpx: ân,h,G,L,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â â¦G, L⦠⢠T1 â¬[h] T2. +lemma cpm_fwd_cpx: ân,h,G,L,T1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â â¦G,L⦠⢠T1 â¬[h] T2. #n #h #G #L #T1 #T2 * #c #Hc #H elim H -L -T1 -T2 /2 width=3 by cpx_theta, cpx_beta, cpx_ee, cpx_eps, cpx_zeta, cpx_flat, cpx_bind, cpx_lref, cpx_delta/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma index beddc2697..b6298c766 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma @@ -50,27 +50,27 @@ qed-. (* Basic_1: includes: pr2_delta1 *) (* Basic_2A1: includes: cpr_delta *) lemma cpm_delta_drops: ân,h,G,L,K,V,V2,W2,i. - â¬*[i] L â K.âV â â¦G, K⦠⢠V â¡[n, h] V2 â - â¬*[âi] V2 â W2 â â¦G, L⦠⢠#i â¡[n, h] W2. + â¬*[i] L â K.âV â â¦G,K⦠⢠V â¡[n,h] V2 â + â¬*[âi] V2 â W2 â â¦G,L⦠⢠#i â¡[n,h] W2. #n #h #G #L #K #V #V2 #W2 #i #HLK * /3 width=8 by cpg_delta_drops, ex2_intro/ qed. lemma cpm_ell_drops: ân,h,G,L,K,V,V2,W2,i. - â¬*[i] L â K.âV â â¦G, K⦠⢠V â¡[n, h] V2 â - â¬*[âi] V2 â W2 â â¦G, L⦠⢠#i â¡[ân, h] W2. + â¬*[i] L â K.âV â â¦G,K⦠⢠V â¡[n,h] V2 â + â¬*[âi] V2 â W2 â â¦G,L⦠⢠#i â¡[ân,h] W2. #n #h #G #L #K #V #V2 #W2 #i #HLK * /3 width=8 by cpg_ell_drops, isrt_succ, ex2_intro/ qed. (* Advanced inversion lemmas ************************************************) -lemma cpm_inv_atom1_drops: ân,h,I,G,L,T2. â¦G, L⦠⢠âª{I} â¡[n, h] T2 â +lemma cpm_inv_atom1_drops: ân,h,I,G,L,T2. â¦G,L⦠⢠âª{I} â¡[n,h] T2 â â¨â¨ T2 = âª{I} ⧠n = 0 | ââs. T2 = â(next h s) & I = Sort s & n = 1 - | ââK,V,V2,i. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¡[n, h] V2 & + | ââK,V,V2,i. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¡[n,h] V2 & â¬*[âi] V2 â T2 & I = LRef i - | ââm,K,V,V2,i. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¡[m, h] V2 & + | ââm,K,V,V2,i. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¡[m,h] V2 & â¬*[âi] V2 â T2 & I = LRef i & n = âm. #n #h #I #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1_drops ⦠H) -H * [ #H1 #H2 destruct lapply (isrt_inv_00 ⦠Hc) -Hc @@ -85,11 +85,11 @@ lemma cpm_inv_atom1_drops: ân,h,I,G,L,T2. â¦G, L⦠⢠âª{I} â¡[n, h] T2 ] qed-. -lemma cpm_inv_lref1_drops: ân,h,G,L,T2,i. â¦G, L⦠⢠#i â¡[n, h] T2 â +lemma cpm_inv_lref1_drops: ân,h,G,L,T2,i. â¦G,L⦠⢠#i â¡[n,h] T2 â â¨â¨ T2 = #i ⧠n = 0 - | ââK,V,V2. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¡[n, h] V2 & + | ââK,V,V2. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¡[n,h] V2 & â¬*[âi] V2 â T2 - | ââm,K,V,V2. â¬*[i] L â K. âV & â¦G, K⦠⢠V â¡[m, h] V2 & + | ââm,K,V,V2. â¬*[i] L â K. âV & â¦G,K⦠⢠V â¡[m,h] V2 & â¬*[âi] V2 â T2 & n = âm. #n #h #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1_drops ⦠H) -H * [ #H1 #H2 destruct lapply (isrt_inv_00 ⦠Hc) -Hc @@ -104,9 +104,9 @@ qed-. (* Advanced forward lemmas **************************************************) -fact cpm_fwd_plus_aux (n) (h): âG,L,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â +fact cpm_fwd_plus_aux (n) (h): âG,L,T1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â ân1,n2. n1+n2 = n â - ââT. â¦G, L⦠⢠T1 â¡[n1, h] T & â¦G, L⦠⢠T â¡[n2, h] T2. + ââT. â¦G,L⦠⢠T1 â¡[n1,h] T & â¦G,L⦠⢠T â¡[n2,h] T2. #n #h #G #L #T1 #T2 #H @(cpm_ind ⦠H) -G -L -T1 -T2 -n [ #I #G #L #n1 #n2 #H elim (plus_inv_O3 ⦠H) -H #H1 #H2 destruct @@ -165,6 +165,6 @@ fact cpm_fwd_plus_aux (n) (h): âG,L,T1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â ] qed-. -lemma cpm_fwd_plus (h) (G) (L): ân1,n2,T1,T2. â¦G, L⦠⢠T1 â¡[n1+n2, h] T2 â - ââT. â¦G, L⦠⢠T1 â¡[n1, h] T & â¦G, L⦠⢠T â¡[n2, h] T2. +lemma cpm_fwd_plus (h) (G) (L): ân1,n2,T1,T2. â¦G,L⦠⢠T1 â¡[n1+n2,h] T2 â + ââT. â¦G,L⦠⢠T1 â¡[n1,h] T & â¦G,L⦠⢠T â¡[n2,h] T2. /2 width=3 by cpm_fwd_plus_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_lsubr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_lsubr.ma index 29f43808c..7b4cde75a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_lsubr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_lsubr.ma @@ -24,7 +24,7 @@ lemma lsubr_cpm_trans (n) (h) (G): lsub_trans ⦠(λL. cpm h G L n) lsubr. #n #h #G #L1 #T1 #T2 * /3 width=5 by lsubr_cpg_trans, ex2_intro/ qed-. -lemma cpm_bind_unit (n) (h) (G): âL,V1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âJ,T1,T2. â¦G, L.â¤{J}⦠⢠T1 â¡[n, h] T2 â - âp,I. â¦G, L⦠⢠â{p,I}V1.T1 â¡[n, h] â{p,I}V2.T2. +lemma cpm_bind_unit (n) (h) (G): âL,V1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âJ,T1,T2. â¦G,L.â¤{J}⦠⢠T1 â¡[n,h] T2 â + âp,I. â¦G,L⦠⢠â{p,I}V1.T1 â¡[n,h] â{p,I}V2.T2. /4 width=4 by lsubr_cpm_trans, cpm_bind, lsubr_unit/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_simple.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_simple.ma index 9a37802e6..b160f471c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_simple.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_simple.ma @@ -20,8 +20,8 @@ include "basic_2/rt_transition/cpm.ma". (* Properties with simple terms *********************************************) (* Basic_2A1: includes: cpr_inv_appl1_simple *) -lemma cpm_inv_appl1_simple: ân,h,G,L,V1,T1,U. â¦G, L⦠⢠âV1.T1 â¡[n, h] U â ðâ¦T1⦠â - ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L⦠⢠T1 â¡[n, h] T2 & +lemma cpm_inv_appl1_simple: ân,h,G,L,V1,T1,U. â¦G,L⦠⢠âV1.T1 â¡[n,h] U â ðâ¦T1⦠â + ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L⦠⢠T1 â¡[n,h] T2 & U = âV2.T2. #n #h #G #L #V1 #T1 #U * #c #Hc #H #HT1 elim (cpg_inv_appl1_simple ⦠H HT1) -H -HT1 #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct elim (isrt_inv_max ⦠Hc) -Hc diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma index fb1f479dd..9d984e384 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma @@ -22,24 +22,24 @@ include "basic_2/rt_transition/cpm.ma". (* Note: cpr_flat: does not hold in basic_1 *) (* Basic_1: includes: pr2_thin_dx *) lemma cpr_flat: âh,I,G,L,V1,V2,T1,T2. - â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠T1 â¡[h] T2 â - â¦G, L⦠⢠â{I}V1.T1 â¡[h] â{I}V2.T2. + â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠T1 â¡[h] T2 â + â¦G,L⦠⢠â{I}V1.T1 â¡[h] â{I}V2.T2. #h * /2 width=1 by cpm_cast, cpm_appl/ qed. (* Basic_1: was: pr2_head_1 *) -lemma cpr_pair_sn: âh,I,G,L,V1,V2. â¦G, L⦠⢠V1 â¡[h] V2 â - âT. â¦G, L⦠⢠â¡{I}V1.T â¡[h] â¡{I}V2.T. +lemma cpr_pair_sn: âh,I,G,L,V1,V2. â¦G,L⦠⢠V1 â¡[h] V2 â + âT. â¦G,L⦠⢠â¡{I}V1.T â¡[h] â¡{I}V2.T. #h * /2 width=1 by cpm_bind, cpr_flat/ qed. (* Basic inversion properties ***********************************************) -lemma cpr_inv_atom1: âh,J,G,L,T2. â¦G, L⦠⢠âª{J} â¡[h] T2 â +lemma cpr_inv_atom1: âh,J,G,L,T2. â¦G,L⦠⢠âª{J} â¡[h] T2 â â¨â¨ T2 = âª{J} - | ââK,V1,V2. â¦G, K⦠⢠V1 â¡[h] V2 & â¬*[1] V2 â T2 & + | ââK,V1,V2. â¦G,K⦠⢠V1 â¡[h] V2 & â¬*[1] V2 â T2 & L = K.âV1 & J = LRef 0 - | ââI,K,T,i. â¦G, K⦠⢠#i â¡[h] T & â¬*[1] T â T2 & + | ââI,K,T,i. â¦G,K⦠⢠#i â¡[h] T & â¬*[1] T â T2 & L = K.â{I} & J = LRef (âi). #h #J #G #L #T2 #H elim (cpm_inv_atom1 ⦠H) -H * [2,4:|*: /3 width=8 by or3_intro0, or3_intro1, or3_intro2, ex4_4_intro, ex4_3_intro/ ] @@ -49,48 +49,48 @@ lemma cpr_inv_atom1: âh,J,G,L,T2. â¦G, L⦠⢠âª{J} â¡[h] T2 â qed-. (* Basic_1: includes: pr0_gen_sort pr2_gen_sort *) -lemma cpr_inv_sort1: âh,G,L,T2,s. â¦G, L⦠⢠âs â¡[h] T2 â T2 = âs. +lemma cpr_inv_sort1: âh,G,L,T2,s. â¦G,L⦠⢠âs â¡[h] T2 â T2 = âs. #h #G #L #T2 #s #H elim (cpm_inv_sort1 ⦠H) -H // qed-. -lemma cpr_inv_zero1: âh,G,L,T2. â¦G, L⦠⢠#0 â¡[h] T2 â +lemma cpr_inv_zero1: âh,G,L,T2. â¦G,L⦠⢠#0 â¡[h] T2 â â¨â¨ T2 = #0 - | ââK,V1,V2. â¦G, K⦠⢠V1 â¡[h] V2 & â¬*[1] V2 â T2 & + | ââK,V1,V2. â¦G,K⦠⢠V1 â¡[h] V2 & â¬*[1] V2 â T2 & L = K.âV1. #h #G #L #T2 #H elim (cpm_inv_zero1 ⦠H) -H * /3 width=6 by ex3_3_intro, or_introl, or_intror/ #n #K #V1 #V2 #_ #_ #_ #H destruct qed-. -lemma cpr_inv_lref1: âh,G,L,T2,i. â¦G, L⦠⢠#âi â¡[h] T2 â +lemma cpr_inv_lref1: âh,G,L,T2,i. â¦G,L⦠⢠#âi â¡[h] T2 â â¨â¨ T2 = #(âi) - | ââI,K,T. â¦G, K⦠⢠#i â¡[h] T & â¬*[1] T â T2 & L = K.â{I}. + | ââI,K,T. â¦G,K⦠⢠#i â¡[h] T & â¬*[1] T â T2 & L = K.â{I}. #h #G #L #T2 #i #H elim (cpm_inv_lref1 ⦠H) -H * /3 width=6 by ex3_3_intro, or_introl, or_intror/ qed-. -lemma cpr_inv_gref1: âh,G,L,T2,l. â¦G, L⦠⢠§l â¡[h] T2 â T2 = §l. +lemma cpr_inv_gref1: âh,G,L,T2,l. â¦G,L⦠⢠§l â¡[h] T2 â T2 = §l. #h #G #L #T2 #l #H elim (cpm_inv_gref1 ⦠H) -H // qed-. (* Basic_1: includes: pr0_gen_cast pr2_gen_cast *) -lemma cpr_inv_cast1: âh,G,L,V1,U1,U2. â¦G, L⦠⢠â V1.U1 â¡[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L⦠⢠U1 â¡[h] T2 & +lemma cpr_inv_cast1: âh,G,L,V1,U1,U2. â¦G,L⦠⢠â V1.U1 â¡[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L⦠⢠U1 â¡[h] T2 & U2 = âV2.T2 - | â¦G, L⦠⢠U1 â¡[h] U2. + | â¦G,L⦠⢠U1 â¡[h] U2. #h #G #L #V1 #U1 #U2 #H elim (cpm_inv_cast1 ⦠H) -H /2 width=1 by or_introl, or_intror/ * #n #_ #H destruct qed-. -lemma cpr_inv_flat1: âh,I,G,L,V1,U1,U2. â¦G, L⦠⢠â{I}V1.U1 â¡[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L⦠⢠U1 â¡[h] T2 & +lemma cpr_inv_flat1: âh,I,G,L,V1,U1,U2. â¦G,L⦠⢠â{I}V1.U1 â¡[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L⦠⢠U1 â¡[h] T2 & U2 = â{I}V2.T2 - | (â¦G, L⦠⢠U1 â¡[h] U2 ⧠I = Cast) - | ââp,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 & â¦G, L⦠⢠W1 â¡[h] W2 & - â¦G, L.âW1⦠⢠T1 â¡[h] T2 & U1 = â{p}W1.T1 & + | (â¦G,L⦠⢠U1 â¡[h] U2 ⧠I = Cast) + | ââp,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 & â¦G,L⦠⢠W1 â¡[h] W2 & + â¦G,L.âW1⦠⢠T1 â¡[h] T2 & U1 = â{p}W1.T1 & U2 = â{p}âW2.V2.T2 & I = Appl - | ââp,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V & â¬*[1] V â V2 & - â¦G, L⦠⢠W1 â¡[h] W2 & â¦G, L.âW1⦠⢠T1 â¡[h] T2 & + | ââp,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V & â¬*[1] V â V2 & + â¦G,L⦠⢠W1 â¡[h] W2 & â¦G,L.âW1⦠⢠T1 â¡[h] T2 & U1 = â{p}W1.T1 & U2 = â{p}W2.âV2.T2 & I = Appl. #h * #G #L #V1 #U1 #U2 #H @@ -105,26 +105,26 @@ qed-. lemma cpr_ind (h): âQ:relation4 genv lenv term term. (âI,G,L. Q G L (âª{I}) (âª{I})) â - (âG,K,V1,V2,W2. â¦G, K⦠⢠V1 â¡[h] V2 â Q G K V1 V2 â + (âG,K,V1,V2,W2. â¦G,K⦠⢠V1 â¡[h] V2 â Q G K V1 V2 â â¬*[1] V2 â W2 â Q G (K.âV1) (#0) W2 - ) â (âI,G,K,T,U,i. â¦G, K⦠⢠#i â¡[h] T â Q G K (#i) T â + ) â (âI,G,K,T,U,i. â¦G,K⦠⢠#i â¡[h] T â Q G K (#i) T â â¬*[1] T â U â Q G (K.â{I}) (#âi) (U) - ) â (âp,I,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L.â{I}V1⦠⢠T1 â¡[h] T2 â + ) â (âp,I,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L.â{I}V1⦠⢠T1 â¡[h] T2 â Q G L V1 V2 â Q G (L.â{I}V1) T1 T2 â Q G L (â{p,I}V1.T1) (â{p,I}V2.T2) - ) â (âI,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠T1 â¡[h] T2 â + ) â (âI,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠T1 â¡[h] T2 â Q G L V1 V2 â Q G L T1 T2 â Q G L (â{I}V1.T1) (â{I}V2.T2) - ) â (âG,L,V,T1,T,T2. â¬*[1] T â T1 â â¦G, L⦠⢠T â¡[h] T2 â + ) â (âG,L,V,T1,T,T2. â¬*[1] T â T1 â â¦G,L⦠⢠T â¡[h] T2 â Q G L T T2 â Q G L (+âV.T1) T2 - ) â (âG,L,V,T1,T2. â¦G, L⦠⢠T1 â¡[h] T2 â Q G L T1 T2 â + ) â (âG,L,V,T1,T2. â¦G,L⦠⢠T1 â¡[h] T2 â Q G L T1 T2 â Q G L (âV.T1) T2 - ) â (âp,G,L,V1,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V2 â â¦G, L⦠⢠W1 â¡[h] W2 â â¦G, L.âW1⦠⢠T1 â¡[h] T2 â + ) â (âp,G,L,V1,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V2 â â¦G,L⦠⢠W1 â¡[h] W2 â â¦G,L.âW1⦠⢠T1 â¡[h] T2 â Q G L V1 V2 â Q G L W1 W2 â Q G (L.âW1) T1 T2 â Q G L (âV1.â{p}W1.T1) (â{p}âW2.V2.T2) - ) â (âp,G,L,V1,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¡[h] V â â¦G, L⦠⢠W1 â¡[h] W2 â â¦G, L.âW1⦠⢠T1 â¡[h] T2 â + ) â (âp,G,L,V1,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¡[h] V â â¦G,L⦠⢠W1 â¡[h] W2 â â¦G,L.âW1⦠⢠T1 â¡[h] T2 â Q G L V1 V â Q G L W1 W2 â Q G (L.âW1) T1 T2 â â¬*[1] V â V2 â Q G L (âV1.â{p}W1.T1) (â{p}W2.âV2.T2) ) â - âG,L,T1,T2. â¦G, L⦠⢠T1 â¡[h] T2 â Q G L T1 T2. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¡[h] T2 â Q G L T1 T2. #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #G #L #T1 #T2 @(insert_eq_0 ⦠0) #n #H @(cpm_ind ⦠H) -G -L -T1 -T2 -n [2,4,11:|*: /3 width=4 by/ ] diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma index ba96c07fb..afd2d3fda 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma @@ -19,9 +19,9 @@ include "basic_2/rt_transition/cpm_drops.ma". (* Advanced inversion lemmas ************************************************) (* Basic_2A1: includes: cpr_inv_atom1 *) -lemma cpr_inv_atom1_drops: âh,I,G,L,T2. â¦G, L⦠⢠âª{I} â¡[h] T2 â +lemma cpr_inv_atom1_drops: âh,I,G,L,T2. â¦G,L⦠⢠âª{I} â¡[h] T2 â â¨â¨ T2 = âª{I} - | ââK,V,V2,i. â¬*[i] L â K.âV & â¦G, K⦠⢠V â¡[h] V2 & + | ââK,V,V2,i. â¬*[i] L â K.âV & â¦G,K⦠⢠V â¡[h] V2 & â¬*[âi] V2 â T2 & I = LRef i. #h #I #G #L #T2 #H elim (cpm_inv_atom1_drops ⦠H) -H * [ /2 width=1 by or_introl/ @@ -33,9 +33,9 @@ qed-. (* Basic_1: includes: pr0_gen_lref pr2_gen_lref *) (* Basic_2A1: includes: cpr_inv_lref1 *) -lemma cpr_inv_lref1_drops: âh,G,L,T2,i. â¦G, L⦠⢠#i â¡[h] T2 â +lemma cpr_inv_lref1_drops: âh,G,L,T2,i. â¦G,L⦠⢠#i â¡[h] T2 â â¨â¨ T2 = #i - | ââK,V,V2. â¬*[i] L â K. âV & â¦G, K⦠⢠V â¡[h] V2 & + | ââK,V,V2. â¬*[i] L â K. âV & â¦G,K⦠⢠V â¡[h] V2 & â¬*[âi] V2 â T2. #h #G #L #T2 #i #H elim (cpm_inv_lref1_drops ⦠H) -H * [ /2 width=1 by or_introl/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma index 705031ffd..ab99dbfca 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma @@ -22,7 +22,7 @@ include "basic_2/rt_transition/cpr.ma". lemma cpr_subst (h) (G) (L) (U1) (i): âK,V. â¬*[i] L â K.âV â - ââU2,T2. â¦G, L⦠⢠U1 â¡[h] U2 & â¬[i,1] T2 â U2. + ââU2,T2. â¦G,L⦠⢠U1 â¡[h] U2 & â¬[i,1] T2 â U2. #h #G #L #U1 @(fqup_wf_ind_eq (â) ⦠G L U1) -G -L -U1 #G0 #L0 #U0 #IH #G #L * * [ #s #HG #HL #HT #i #K #V #_ destruct -IH diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma index 3da67484a..e92d469a4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma @@ -18,7 +18,7 @@ include "basic_2/rt_transition/cpg.ma". (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************) definition cpx (h): relation4 genv lenv term term â - λG,L,T1,T2. âc. â¦G, L⦠⢠T1 â¬[eq_f, c, h] T2. + λG,L,T1,T2. âc. â¦G,L⦠⢠T1 â¬[eq_f,c,h] T2. interpretation "unbound context-sensitive parallel rt-transition (term)" @@ -27,64 +27,64 @@ interpretation (* Basic properties *********************************************************) (* Basic_2A1: was: cpx_st *) -lemma cpx_ess: âh,G,L,s. â¦G, L⦠⢠âs â¬[h] â(next h s). +lemma cpx_ess: âh,G,L,s. â¦G,L⦠⢠âs â¬[h] â(next h s). /2 width=2 by cpg_ess, ex_intro/ qed. -lemma cpx_delta: âh,I,G,K,V1,V2,W2. â¦G, K⦠⢠V1 â¬[h] V2 â - â¬*[1] V2 â W2 â â¦G, K.â{I}V1⦠⢠#0 â¬[h] W2. +lemma cpx_delta: âh,I,G,K,V1,V2,W2. â¦G,K⦠⢠V1 â¬[h] V2 â + â¬*[1] V2 â W2 â â¦G,K.â{I}V1⦠⢠#0 â¬[h] W2. #h * #G #K #V1 #V2 #W2 * /3 width=4 by cpg_delta, cpg_ell, ex_intro/ qed. -lemma cpx_lref: âh,I,G,K,T,U,i. â¦G, K⦠⢠#i â¬[h] T â - â¬*[1] T â U â â¦G, K.â{I}⦠⢠#âi â¬[h] U. +lemma cpx_lref: âh,I,G,K,T,U,i. â¦G,K⦠⢠#i â¬[h] T â + â¬*[1] T â U â â¦G,K.â{I}⦠⢠#âi â¬[h] U. #h #I #G #K #T #U #i * /3 width=4 by cpg_lref, ex_intro/ qed. lemma cpx_bind: âh,p,I,G,L,V1,V2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L.â{I}V1⦠⢠T1 â¬[h] T2 â - â¦G, L⦠⢠â{p,I}V1.T1 â¬[h] â{p,I}V2.T2. + â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L.â{I}V1⦠⢠T1 â¬[h] T2 â + â¦G,L⦠⢠â{p,I}V1.T1 â¬[h] â{p,I}V2.T2. #h #p #I #G #L #V1 #V2 #T1 #T2 * #cV #HV12 * /3 width=2 by cpg_bind, ex_intro/ qed. lemma cpx_flat: âh,I,G,L,V1,V2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L⦠⢠T1 â¬[h] T2 â - â¦G, L⦠⢠â{I}V1.T1 â¬[h] â{I}V2.T2. + â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L⦠⢠T1 â¬[h] T2 â + â¦G,L⦠⢠â{I}V1.T1 â¬[h] â{I}V2.T2. #h * #G #L #V1 #V2 #T1 #T2 * #cV #HV12 * /3 width=5 by cpg_appl, cpg_cast, ex_intro/ qed. lemma cpx_zeta (h) (G) (L): - âT1,T. â¬*[1] T â T1 â âT2. â¦G, L⦠⢠T â¬[h] T2 â - âV. â¦G, L⦠⢠+âV.T1 â¬[h] T2. + âT1,T. â¬*[1] T â T1 â âT2. â¦G,L⦠⢠T â¬[h] T2 â + âV. â¦G,L⦠⢠+âV.T1 â¬[h] T2. #h #G #L #T1 #T #HT1 #T2 * /3 width=4 by cpg_zeta, ex_intro/ qed. -lemma cpx_eps: âh,G,L,V,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â â¦G, L⦠⢠âV.T1 â¬[h] T2. +lemma cpx_eps: âh,G,L,V,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â â¦G,L⦠⢠âV.T1 â¬[h] T2. #h #G #L #V #T1 #T2 * /3 width=2 by cpg_eps, ex_intro/ qed. (* Basic_2A1: was: cpx_ct *) -lemma cpx_ee: âh,G,L,V1,V2,T. â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L⦠⢠âV1.T â¬[h] V2. +lemma cpx_ee: âh,G,L,V1,V2,T. â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L⦠⢠âV1.T â¬[h] V2. #h #G #L #V1 #V2 #T * /3 width=2 by cpg_ee, ex_intro/ qed. lemma cpx_beta: âh,p,G,L,V1,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L⦠⢠W1 â¬[h] W2 â â¦G, L.âW1⦠⢠T1 â¬[h] T2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬[h] â{p}âW2.V2.T2. + â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L⦠⢠W1 â¬[h] W2 â â¦G,L.âW1⦠⢠T1 â¬[h] T2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬[h] â{p}âW2.V2.T2. #h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 * #cV #HV12 * #cW #HW12 * /3 width=2 by cpg_beta, ex_intro/ qed. lemma cpx_theta: âh,p,G,L,V1,V,V2,W1,W2,T1,T2. - â¦G, L⦠⢠V1 â¬[h] V â â¬*[1] V â V2 â â¦G, L⦠⢠W1 â¬[h] W2 â - â¦G, L.âW1⦠⢠T1 â¬[h] T2 â - â¦G, L⦠⢠âV1.â{p}W1.T1 â¬[h] â{p}W2.âV2.T2. + â¦G,L⦠⢠V1 â¬[h] V â â¬*[1] V â V2 â â¦G,L⦠⢠W1 â¬[h] W2 â + â¦G,L.âW1⦠⢠T1 â¬[h] T2 â + â¦G,L⦠⢠âV1.â{p}W1.T1 â¬[h] â{p}W2.âV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #cV #HV1 #HV2 * #cW #HW12 * /3 width=4 by cpg_theta, ex_intro/ qed. @@ -95,8 +95,8 @@ lemma cpx_refl: âh,G,L. reflexive ⦠(cpx h G L). (* Advanced properties ******************************************************) -lemma cpx_pair_sn: âh,I,G,L,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âT. â¦G, L⦠⢠â¡{I}V1.T â¬[h] â¡{I}V2.T. +lemma cpx_pair_sn: âh,I,G,L,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âT. â¦G,L⦠⢠â¡{I}V1.T â¬[h] â¡{I}V2.T. #h * /2 width=2 by cpx_flat, cpx_bind/ qed. @@ -108,115 +108,115 @@ qed. (* Basic inversion lemmas ***************************************************) -lemma cpx_inv_atom1: âh,J,G,L,T2. â¦G, L⦠⢠âª{J} â¬[h] T2 â +lemma cpx_inv_atom1: âh,J,G,L,T2. â¦G,L⦠⢠âª{J} â¬[h] T2 â â¨â¨ T2 = âª{J} | ââs. T2 = â(next h s) & J = Sort s - | ââI,K,V1,V2. â¦G, K⦠⢠V1 â¬[h] V2 & â¬*[1] V2 â T2 & + | ââI,K,V1,V2. â¦G,K⦠⢠V1 â¬[h] V2 & â¬*[1] V2 â T2 & L = K.â{I}V1 & J = LRef 0 - | ââI,K,T,i. â¦G, K⦠⢠#i â¬[h] T & â¬*[1] T â T2 & + | ââI,K,T,i. â¦G,K⦠⢠#i â¬[h] T & â¬*[1] T â T2 & L = K.â{I} & J = LRef (âi). #h #J #G #L #T2 * #c #H elim (cpg_inv_atom1 ⦠H) -H * /4 width=8 by or4_intro0, or4_intro1, or4_intro2, or4_intro3, ex4_4_intro, ex2_intro, ex_intro/ qed-. -lemma cpx_inv_sort1: âh,G,L,T2,s. â¦G, L⦠⢠âs â¬[h] T2 â +lemma cpx_inv_sort1: âh,G,L,T2,s. â¦G,L⦠⢠âs â¬[h] T2 â â¨â¨ T2 = âs | T2 = â(next h s). #h #G #L #T2 #s * #c #H elim (cpg_inv_sort1 ⦠H) -H * /2 width=1 by or_introl, or_intror/ qed-. -lemma cpx_inv_zero1: âh,G,L,T2. â¦G, L⦠⢠#0 â¬[h] T2 â +lemma cpx_inv_zero1: âh,G,L,T2. â¦G,L⦠⢠#0 â¬[h] T2 â â¨â¨ T2 = #0 - | ââI,K,V1,V2. â¦G, K⦠⢠V1 â¬[h] V2 & â¬*[1] V2 â T2 & + | ââI,K,V1,V2. â¦G,K⦠⢠V1 â¬[h] V2 & â¬*[1] V2 â T2 & L = K.â{I}V1. #h #G #L #T2 * #c #H elim (cpg_inv_zero1 ⦠H) -H * /4 width=7 by ex3_4_intro, ex_intro, or_introl, or_intror/ qed-. -lemma cpx_inv_lref1: âh,G,L,T2,i. â¦G, L⦠⢠#âi â¬[h] T2 â +lemma cpx_inv_lref1: âh,G,L,T2,i. â¦G,L⦠⢠#âi â¬[h] T2 â â¨â¨ T2 = #(âi) - | ââI,K,T. â¦G, K⦠⢠#i â¬[h] T & â¬*[1] T â T2 & L = K.â{I}. + | ââI,K,T. â¦G,K⦠⢠#i â¬[h] T & â¬*[1] T â T2 & L = K.â{I}. #h #G #L #T2 #i * #c #H elim (cpg_inv_lref1 ⦠H) -H * /4 width=6 by ex3_3_intro, ex_intro, or_introl, or_intror/ qed-. -lemma cpx_inv_gref1: âh,G,L,T2,l. â¦G, L⦠⢠§l â¬[h] T2 â T2 = §l. +lemma cpx_inv_gref1: âh,G,L,T2,l. â¦G,L⦠⢠§l â¬[h] T2 â T2 = §l. #h #G #L #T2 #l * #c #H elim (cpg_inv_gref1 ⦠H) -H // qed-. -lemma cpx_inv_bind1: âh,p,I,G,L,V1,T1,U2. â¦G, L⦠⢠â{p,I}V1.T1 â¬[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L.â{I}V1⦠⢠T1 â¬[h] T2 & +lemma cpx_inv_bind1: âh,p,I,G,L,V1,T1,U2. â¦G,L⦠⢠â{p,I}V1.T1 â¬[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L.â{I}V1⦠⢠T1 â¬[h] T2 & U2 = â{p,I}V2.T2 - | ââT. â¬*[1] T â T1 & â¦G, L⦠⢠T â¬[h] U2 & + | ââT. â¬*[1] T â T1 & â¦G,L⦠⢠T â¬[h] U2 & p = true & I = Abbr. #h #p #I #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_bind1 ⦠H) -H * /4 width=5 by ex4_intro, ex3_2_intro, ex_intro, or_introl, or_intror/ qed-. -lemma cpx_inv_abbr1: âh,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L.âV1⦠⢠T1 â¬[h] T2 & +lemma cpx_inv_abbr1: âh,p,G,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¬[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L.âV1⦠⢠T1 â¬[h] T2 & U2 = â{p}V2.T2 - | ââT. â¬*[1] T â T1 & â¦G, L⦠⢠T â¬[h] U2 & p = true. + | ââT. â¬*[1] T â T1 & â¦G,L⦠⢠T â¬[h] U2 & p = true. #h #p #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_abbr1 ⦠H) -H * /4 width=5 by ex3_2_intro, ex3_intro, ex_intro, or_introl, or_intror/ qed-. -lemma cpx_inv_abst1: âh,p,G,L,V1,T1,U2. â¦G, L⦠⢠â{p}V1.T1 â¬[h] U2 â - ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L.âV1⦠⢠T1 â¬[h] T2 & +lemma cpx_inv_abst1: âh,p,G,L,V1,T1,U2. â¦G,L⦠⢠â{p}V1.T1 â¬[h] U2 â + ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L.âV1⦠⢠T1 â¬[h] T2 & U2 = â{p}V2.T2. #h #p #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_abst1 ⦠H) -H /3 width=5 by ex3_2_intro, ex_intro/ qed-. -lemma cpx_inv_appl1: âh,G,L,V1,U1,U2. â¦G, L⦠⢠â V1.U1 â¬[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L⦠⢠U1 â¬[h] T2 & +lemma cpx_inv_appl1: âh,G,L,V1,U1,U2. â¦G,L⦠⢠â V1.U1 â¬[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L⦠⢠U1 â¬[h] T2 & U2 = âV2.T2 - | ââp,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L⦠⢠W1 â¬[h] W2 & - â¦G, L.âW1⦠⢠T1 â¬[h] T2 & + | ââp,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L⦠⢠W1 â¬[h] W2 & + â¦G,L.âW1⦠⢠T1 â¬[h] T2 & U1 = â{p}W1.T1 & U2 = â{p}âW2.V2.T2 - | ââp,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V & â¬*[1] V â V2 & - â¦G, L⦠⢠W1 â¬[h] W2 & â¦G, L.âW1⦠⢠T1 â¬[h] T2 & + | ââp,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V & â¬*[1] V â V2 & + â¦G,L⦠⢠W1 â¬[h] W2 & â¦G,L.âW1⦠⢠T1 â¬[h] T2 & U1 = â{p}W1.T1 & U2 = â{p}W2.âV2.T2. #h #G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_appl1 ⦠H) -H * /4 width=13 by or3_intro0, or3_intro1, or3_intro2, ex6_7_intro, ex5_6_intro, ex3_2_intro, ex_intro/ qed-. -lemma cpx_inv_cast1: âh,G,L,V1,U1,U2. â¦G, L⦠⢠âV1.U1 â¬[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L⦠⢠U1 â¬[h] T2 & +lemma cpx_inv_cast1: âh,G,L,V1,U1,U2. â¦G,L⦠⢠âV1.U1 â¬[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L⦠⢠U1 â¬[h] T2 & U2 = âV2.T2 - | â¦G, L⦠⢠U1 â¬[h] U2 - | â¦G, L⦠⢠V1 â¬[h] U2. + | â¦G,L⦠⢠U1 â¬[h] U2 + | â¦G,L⦠⢠V1 â¬[h] U2. #h #G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_cast1 ⦠H) -H * /4 width=5 by or3_intro0, or3_intro1, or3_intro2, ex3_2_intro, ex_intro/ qed-. (* Advanced inversion lemmas ************************************************) -lemma cpx_inv_zero1_pair: âh,I,G,K,V1,T2. â¦G, K.â{I}V1⦠⢠#0 â¬[h] T2 â +lemma cpx_inv_zero1_pair: âh,I,G,K,V1,T2. â¦G,K.â{I}V1⦠⢠#0 â¬[h] T2 â â¨â¨ T2 = #0 - | ââV2. â¦G, K⦠⢠V1 â¬[h] V2 & â¬*[1] V2 â T2. + | ââV2. â¦G,K⦠⢠V1 â¬[h] V2 & â¬*[1] V2 â T2. #h #I #G #L #V1 #T2 * #c #H elim (cpg_inv_zero1_pair ⦠H) -H * /4 width=3 by ex2_intro, ex_intro, or_intror, or_introl/ qed-. -lemma cpx_inv_lref1_bind: âh,I,G,K,T2,i. â¦G, K.â{I}⦠⢠#âi â¬[h] T2 â +lemma cpx_inv_lref1_bind: âh,I,G,K,T2,i. â¦G,K.â{I}⦠⢠#âi â¬[h] T2 â â¨â¨ T2 = #(âi) - | ââT. â¦G, K⦠⢠#i â¬[h] T & â¬*[1] T â T2. + | ââT. â¦G,K⦠⢠#i â¬[h] T & â¬*[1] T â T2. #h #I #G #L #T2 #i * #c #H elim (cpg_inv_lref1_bind ⦠H) -H * /4 width=3 by ex2_intro, ex_intro, or_introl, or_intror/ qed-. -lemma cpx_inv_flat1: âh,I,G,L,V1,U1,U2. â¦G, L⦠⢠â{I}V1.U1 â¬[h] U2 â - â¨â¨ ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L⦠⢠U1 â¬[h] T2 & +lemma cpx_inv_flat1: âh,I,G,L,V1,U1,U2. â¦G,L⦠⢠â{I}V1.U1 â¬[h] U2 â + â¨â¨ ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L⦠⢠U1 â¬[h] T2 & U2 = â{I}V2.T2 - | (â¦G, L⦠⢠U1 â¬[h] U2 ⧠I = Cast) - | (â¦G, L⦠⢠V1 â¬[h] U2 ⧠I = Cast) - | ââp,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L⦠⢠W1 â¬[h] W2 & - â¦G, L.âW1⦠⢠T1 â¬[h] T2 & + | (â¦G,L⦠⢠U1 â¬[h] U2 ⧠I = Cast) + | (â¦G,L⦠⢠V1 â¬[h] U2 ⧠I = Cast) + | ââp,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L⦠⢠W1 â¬[h] W2 & + â¦G,L.âW1⦠⢠T1 â¬[h] T2 & U1 = â{p}W1.T1 & U2 = â{p}âW2.V2.T2 & I = Appl - | ââp,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V & â¬*[1] V â V2 & - â¦G, L⦠⢠W1 â¬[h] W2 & â¦G, L.âW1⦠⢠T1 â¬[h] T2 & + | ââp,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V & â¬*[1] V â V2 & + â¦G,L⦠⢠W1 â¬[h] W2 & â¦G,L.âW1⦠⢠T1 â¬[h] T2 & U1 = â{p}W1.T1 & U2 = â{p}W2.âV2.T2 & I = Appl. #h * #G #L #V1 #U1 #U2 #H @@ -229,8 +229,8 @@ qed-. (* Basic forward lemmas *****************************************************) -lemma cpx_fwd_bind1_minus: âh,I,G,L,V1,T1,T. â¦G, L⦠⢠-â{I}V1.T1 â¬[h] T â âp. - ââV2,T2. â¦G, L⦠⢠â{p,I}V1.T1 â¬[h] â{p,I}V2.T2 & +lemma cpx_fwd_bind1_minus: âh,I,G,L,V1,T1,T. â¦G,L⦠⢠-â{I}V1.T1 â¬[h] T â âp. + ââV2,T2. â¦G,L⦠⢠â{p,I}V1.T1 â¬[h] â{p,I}V2.T2 & T = -â{I}V2.T2. #h #I #G #L #V1 #T1 #T * #c #H #p elim (cpg_fwd_bind1_minus ⦠H p) -H /3 width=4 by ex2_2_intro, ex_intro/ @@ -241,28 +241,28 @@ qed-. lemma cpx_ind: âh. âQ:relation4 genv lenv term term. (âI,G,L. Q G L (âª{I}) (âª{I})) â (âG,L,s. Q G L (âs) (â(next h s))) â - (âI,G,K,V1,V2,W2. â¦G, K⦠⢠V1 â¬[h] V2 â Q G K V1 V2 â + (âI,G,K,V1,V2,W2. â¦G,K⦠⢠V1 â¬[h] V2 â Q G K V1 V2 â â¬*[1] V2 â W2 â Q G (K.â{I}V1) (#0) W2 - ) â (âI,G,K,T,U,i. â¦G, K⦠⢠#i â¬[h] T â Q G K (#i) T â + ) â (âI,G,K,T,U,i. â¦G,K⦠⢠#i â¬[h] T â Q G K (#i) T â â¬*[1] T â U â Q G (K.â{I}) (#âi) (U) - ) â (âp,I,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L.â{I}V1⦠⢠T1 â¬[h] T2 â + ) â (âp,I,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L.â{I}V1⦠⢠T1 â¬[h] T2 â Q G L V1 V2 â Q G (L.â{I}V1) T1 T2 â Q G L (â{p,I}V1.T1) (â{p,I}V2.T2) - ) â (âI,G,L,V1,V2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L⦠⢠T1 â¬[h] T2 â + ) â (âI,G,L,V1,V2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L⦠⢠T1 â¬[h] T2 â Q G L V1 V2 â Q G L T1 T2 â Q G L (â{I}V1.T1) (â{I}V2.T2) - ) â (âG,L,V,T1,T,T2. â¬*[1] T â T1 â â¦G, L⦠⢠T â¬[h] T2 â Q G L T T2 â + ) â (âG,L,V,T1,T,T2. â¬*[1] T â T1 â â¦G,L⦠⢠T â¬[h] T2 â Q G L T T2 â Q G L (+âV.T1) T2 - ) â (âG,L,V,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â Q G L T1 T2 â + ) â (âG,L,V,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â Q G L T1 T2 â Q G L (âV.T1) T2 - ) â (âG,L,V1,V2,T. â¦G, L⦠⢠V1 â¬[h] V2 â Q G L V1 V2 â + ) â (âG,L,V1,V2,T. â¦G,L⦠⢠V1 â¬[h] V2 â Q G L V1 V2 â Q G L (âV1.T) V2 - ) â (âp,G,L,V1,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V2 â â¦G, L⦠⢠W1 â¬[h] W2 â â¦G, L.âW1⦠⢠T1 â¬[h] T2 â + ) â (âp,G,L,V1,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V2 â â¦G,L⦠⢠W1 â¬[h] W2 â â¦G,L.âW1⦠⢠T1 â¬[h] T2 â Q G L V1 V2 â Q G L W1 W2 â Q G (L.âW1) T1 T2 â Q G L (âV1.â{p}W1.T1) (â{p}âW2.V2.T2) - ) â (âp,G,L,V1,V,V2,W1,W2,T1,T2. â¦G, L⦠⢠V1 â¬[h] V â â¦G, L⦠⢠W1 â¬[h] W2 â â¦G, L.âW1⦠⢠T1 â¬[h] T2 â + ) â (âp,G,L,V1,V,V2,W1,W2,T1,T2. â¦G,L⦠⢠V1 â¬[h] V â â¦G,L⦠⢠W1 â¬[h] W2 â â¦G,L.âW1⦠⢠T1 â¬[h] T2 â Q G L V1 V â Q G L W1 W2 â Q G (L.âW1) T1 T2 â â¬*[1] V â V2 â Q G L (âV1.â{p}W1.T1) (â{p}W2.âV2.T2) ) â - âG,L,T1,T2. â¦G, L⦠⢠T1 â¬[h] T2 â Q G L T1 T2. + âG,L,T1,T2. â¦G,L⦠⢠T1 â¬[h] T2 â Q G L T1 T2. #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #G #L #T1 #T2 * #c #H elim H -c -G -L -T1 -T2 /3 width=4 by ex_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma index 4fcea0470..9f1350864 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/cpx.ma". (* Basic_2A1: was: cpx_delta *) lemma cpx_delta_drops: âh,I,G,L,K,V,V2,W2,i. - â¬*[i] L â K.â{I}V â â¦G, K⦠⢠V â¬[h] V2 â - â¬*[âi] V2 â W2 â â¦G, L⦠⢠#i â¬[h] W2. + â¬*[i] L â K.â{I}V â â¦G,K⦠⢠V â¬[h] V2 â + â¬*[âi] V2 â W2 â â¦G,L⦠⢠#i â¬[h] W2. #h * #G #L #K #V #V2 #W2 #i #HLK * /3 width=7 by cpg_ell_drops, cpg_delta_drops, ex_intro/ qed. @@ -30,19 +30,19 @@ qed. (* Advanced inversion lemmas ************************************************) (* Basic_2A1: was: cpx_inv_atom1 *) -lemma cpx_inv_atom1_drops: âh,I,G,L,T2. â¦G, L⦠⢠âª{I} â¬[h] T2 â +lemma cpx_inv_atom1_drops: âh,I,G,L,T2. â¦G,L⦠⢠âª{I} â¬[h] T2 â â¨â¨ T2 = âª{I} | ââs. T2 = â(next h s) & I = Sort s - | ââJ,K,V,V2,i. â¬*[i] L â K.â{J}V & â¦G, K⦠⢠V â¬[h] V2 & + | ââJ,K,V,V2,i. â¬*[i] L â K.â{J}V & â¦G,K⦠⢠V â¬[h] V2 & â¬*[âi] V2 â T2 & I = LRef i. #h #I #G #L #T2 * #c #H elim (cpg_inv_atom1_drops ⦠H) -H * /4 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex2_intro, ex_intro/ qed-. (* Basic_2A1: was: cpx_inv_lref1 *) -lemma cpx_inv_lref1_drops: âh,G,L,T2,i. â¦G, L⦠⢠#i â¬[h] T2 â +lemma cpx_inv_lref1_drops: âh,G,L,T2,i. â¦G,L⦠⢠#i â¬[h] T2 â T2 = #i ⨠- ââJ,K,V,V2. â¬*[i] L â K. â{J}V & â¦G, K⦠⢠V â¬[h] V2 & + ââJ,K,V,V2. â¬*[i] L â K. â{J}V & â¦G,K⦠⢠V â¬[h] V2 & â¬*[âi] V2 â T2. #h #G #L #T1 #i * #c #H elim (cpg_inv_lref1_drops ⦠H) -H * /4 width=7 by ex3_4_intro, ex_intro, or_introl, or_intror/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma index 09b998bae..12d23e217 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma @@ -21,7 +21,7 @@ include "basic_2/rt_transition/cpx_drops.ma". lemma cpx_subst (h) (G) (L) (U1) (i): âI,K,V. â¬*[i] L â K.â{I}V â - ââU2,T2. â¦G, L⦠⢠U1 â¬[h] U2 & â¬[i,1] T2 â U2. + ââU2,T2. â¦G,L⦠⢠U1 â¬[h] U2 & â¬[i,1] T2 â U2. #h #G #L #U1 @(fqup_wf_ind_eq (â) ⦠G L U1) -G -L -U1 #G0 #L0 #U0 #IH #G #L * * [ #s #HG #HL #HT #i #I #K #V #_ destruct -IH diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma index 5a00dc678..f8224c247 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma @@ -20,9 +20,9 @@ include "basic_2/rt_transition/rpx_rdeq.ma". (* Properties with sort-irrelevant equivalence for closures *****************) -lemma fdeq_cpx_trans: âh,G1,G2,L1,L2,T1,T. â¦G1, L1, T1⦠â â¦G2, L2, T⦠â - âT2. â¦G2, L2⦠⢠T â¬[h] T2 â - ââT0. â¦G1, L1⦠⢠T1 â¬[h] T0 & â¦G1, L1, T0⦠â â¦G2, L2, T2â¦. +lemma fdeq_cpx_trans: âh,G1,G2,L1,L2,T1,T. â¦G1,L1,T1⦠â â¦G2,L2,T⦠â + âT2. â¦G2,L2⦠⢠T â¬[h] T2 â + ââT0. â¦G1,L1⦠⢠T1 â¬[h] T0 & â¦G1,L1,T0⦠â â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2 elim (fdeq_inv_gen_dx ⦠H) -H #H #HL12 #HT1 destruct elim (rdeq_cpx_trans ⦠HL12 ⦠HT2) #T0 #HT0 #HT02 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma index 0afb76e7f..ca625dd1b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma @@ -21,9 +21,9 @@ include "basic_2/rt_transition/cpx_lsubr.ma". (* Properties on supclosure *************************************************) -lemma fqu_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & â¦G1, L1, U1⦠â[b] â¦G2, L2, U2â¦. +lemma fqu_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & â¦G1,L1,U1⦠â[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 /3 width=3 by cpx_pair_sn, cpx_bind, cpx_flat, fqu_pair_sn, fqu_bind_dx, fqu_flat_dx, ex2_intro/ [ #I #G #L2 #V2 #X2 #HVX2 @@ -36,18 +36,18 @@ lemma fqu_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2 ] qed-. -lemma fquq_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & â¦G1, L1, U1⦠â⸮[b] â¦G2, L2, U2â¦. +lemma fquq_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & â¦G1,L1,U1⦠â⸮[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H [ #HT12 #U2 #HTU2 elim (fqu_cpx_trans ⦠HT12 ⦠HTU2) /3 width=3 by fqu_fquq, ex2_intro/ | * #H1 #H2 #H3 destruct /2 width=3 by ex2_intro/ ] qed-. -lemma fqup_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & â¦G1, L1, U1⦠â+[b] â¦G2, L2, U2â¦. +lemma fqup_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & â¦G1,L1,U1⦠â+[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 [ #G2 #L2 #T2 #H12 #U2 #HTU2 elim (fqu_cpx_trans ⦠H12 ⦠HTU2) -T2 /3 width=3 by fqu_fqup, ex2_intro/ @@ -57,18 +57,18 @@ lemma fqup_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, ] qed-. -lemma fqus_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & â¦G1, L1, U1⦠â*[b] â¦G2, L2, U2â¦. +lemma fqus_cpx_trans: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & â¦G1,L1,U1⦠â*[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqus_inv_fqup ⦠H) -H [ #HT12 #U2 #HTU2 elim (fqup_cpx_trans ⦠HT12 ⦠HTU2) /3 width=3 by fqup_fqus, ex2_intro/ | * #H1 #H2 #H3 destruct /2 width=3 by ex2_intro/ ] qed-. -lemma fqu_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â[b] â¦G2, L2, U2â¦. +lemma fqu_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ #I #G #L #V1 #V2 #HV12 #_ elim (lifts_total V2 ðâ´1âµ) #U2 #HVU2 @(ex3_intro ⦠U2) @@ -98,9 +98,9 @@ lemma fqu_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] ⦠] qed-. -lemma fquq_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â⸮[b] â¦G2, L2, U2â¦. +lemma fquq_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â⸮[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12 [ #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tdneq ⦠H12 ⦠HTU2 H) -T2 /3 width=4 by fqu_fquq, ex3_intro/ @@ -108,9 +108,9 @@ lemma fquq_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] ] qed-. -lemma fqup_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â+[b] â¦G2, L2, U2â¦. +lemma fqup_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â+[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx ⦠H) -G1 -L1 -T1 [ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tdneq ⦠H12 ⦠HTU2 H) -T2 /3 width=4 by fqu_fqup, ex3_intro/ @@ -120,9 +120,9 @@ lemma fqup_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] ] qed-. -lemma fqus_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â - ââU1. â¦G1, L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1, L1, U1⦠â*[b] â¦G2, L2, U2â¦. +lemma fqus_cpx_trans_tdneq: âh,b,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¬[h] U2 â (T2 â U2 â â¥) â + ââU1. â¦G1,L1⦠⢠T1 â¬[h] U1 & T1 â U1 â ⥠& â¦G1,L1,U1⦠â*[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup ⦠H12) -H12 [ #H12 elim (fqup_cpx_trans_tdneq ⦠H12 ⦠HTU2 H) -T2 /3 width=4 by fqup_fqus, ex3_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lsubr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lsubr.ma index b11694680..7eb730a80 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lsubr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lsubr.ma @@ -23,8 +23,8 @@ lemma lsubr_cpx_trans (h) (G): lsub_trans ⦠(cpx h G) lsubr. #h #G #L1 #T1 #T2 * /3 width=4 by lsubr_cpg_trans, ex_intro/ qed-. -lemma cpx_bind_unit (h) (G): âL,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âJ,T1,T2. â¦G, L.â¤{J}⦠⢠T1 â¬[h] T2 â - âp,I. â¦G, L⦠⢠â{p,I}V1.T1 â¬[h] â{p,I}V2.T2. +lemma cpx_bind_unit (h) (G): âL,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âJ,T1,T2. â¦G,L.â¤{J}⦠⢠T1 â¬[h] T2 â + âp,I. â¦G,L⦠⢠â{p,I}V1.T1 â¬[h] â{p,I}V2.T2. /4 width=4 by lsubr_cpx_trans, cpx_bind, lsubr_unit/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma index b90635d72..8e84ffab9 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma @@ -24,6 +24,6 @@ lemma cpx_rdeq_conf_sn: âh,G. s_r_confluent1 ⦠(cpx h G) rdeq. /3 width=6 by cpx_rex_conf/ qed-. (* Basic_2A1: was just: cpx_lleq_conf_dx *) -lemma cpx_rdeq_conf_dx: âh,G,L2,T1,T2. â¦G, L2⦠⢠T1 â¬[h] T2 â +lemma cpx_rdeq_conf_dx: âh,G,L2,T1,T2. â¦G,L2⦠⢠T1 â¬[h] T2 â âL1. L1 â[T1] L2 â L1 â[T2] L2. /4 width=5 by cpx_rdeq_conf_sn, rdeq_sym/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_req.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_req.ma index b0d2b9922..5f0c34f6c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_req.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_req.ma @@ -50,8 +50,8 @@ lemma req_cpx_trans: âh,G. req_transitive (cpx h G). qed-. (* (* Basic_2A1: was: cpx_lleq_conf *) -lemma cpx_req_conf: âh,G,L2,T1,T2. â¦G, L2⦠⢠T1 â¬[h] T2 â - âL1. L2 â[T1] L1 â â¦G, L1⦠⢠T1 â¬[h] T2. +lemma cpx_req_conf: âh,G,L2,T1,T2. â¦G,L2⦠⢠T1 â¬[h] T2 â + âL1. L2 â[T1] L1 â â¦G,L1⦠⢠T1 â¬[h] T2. /3 width=3 by req_cpx_trans, req_sym/ qed-. *) (* Basic_2A1: was: cpx_lleq_conf_sn *) @@ -59,7 +59,7 @@ lemma cpx_req_conf_sn: âh,G. s_r_confluent1 ⦠(cpx h G) req. /2 width=5 by cpx_rex_conf/ qed-. (* (* Basic_2A1: was: cpx_lleq_conf_dx *) -lemma cpx_req_conf_dx: âh,G,L2,T1,T2. â¦G, L2⦠⢠T1 â¬[h] T2 â +lemma cpx_req_conf_dx: âh,G,L2,T1,T2. â¦G,L2⦠⢠T1 â¬[h] T2 â âL1. L1 â[T1] L2 â L1 â[T2] L2. /4 width=6 by cpx_req_conf_sn, req_sym/ qed-. *) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_simple.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_simple.ma index a18e14b6c..1ce5b538d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_simple.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_simple.ma @@ -19,8 +19,8 @@ include "basic_2/rt_transition/cpx.ma". (* Inversion lemmas with simple terms ***************************************) -lemma cpx_inv_appl1_simple: âh,G,L,V1,T1,U. â¦G, L⦠⢠âV1.T1 â¬[h] U â ðâ¦T1⦠â - ââV2,T2. â¦G, L⦠⢠V1 â¬[h] V2 & â¦G, L⦠⢠T1 â¬[h] T2 & +lemma cpx_inv_appl1_simple: âh,G,L,V1,T1,U. â¦G,L⦠⢠âV1.T1 â¬[h] U â ðâ¦T1⦠â + ââV2,T2. â¦G,L⦠⢠V1 â¬[h] V2 & â¦G,L⦠⢠T1 â¬[h] T2 & U = âV2.T2. #h #G #L #V1 #T1 #U * #c #H #HT1 elim (cpg_inv_appl1_simple ⦠H) -H /3 width=5 by ex3_2_intro, ex_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma index 4c262718f..5cfee0413 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma @@ -20,9 +20,9 @@ include "basic_2/rt_transition/lpr_lpx.ma". (* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************) inductive fpb (h) (G1) (L1) (T1): relation3 genv lenv term â -| fpb_fqu: âG2,L2,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â fpb h G1 L1 T1 G2 L2 T2 -| fpb_cpx: âT2. â¦G1, L1⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â fpb h G1 L1 T1 G1 L1 T2 -| fpb_lpx: âL2. â¦G1, L1⦠⢠â¬[h] L2 â (L1 â[T1] L2 â â¥) â fpb h G1 L1 T1 G1 L2 T1 +| fpb_fqu: âG2,L2,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â fpb h G1 L1 T1 G2 L2 T2 +| fpb_cpx: âT2. â¦G1,L1⦠⢠T1 â¬[h] T2 â (T1 â T2 â â¥) â fpb h G1 L1 T1 G1 L1 T2 +| fpb_lpx: âL2. â¦G1,L1⦠⢠â¬[h] L2 â (L1 â[T1] L2 â â¥) â fpb h G1 L1 T1 G1 L2 T1 . interpretation @@ -32,10 +32,10 @@ interpretation (* Basic properties *********************************************************) (* Basic_2A1: includes: cpr_fpb *) -lemma cpm_fpb (n) (h) (G) (L): âT1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â (T1 â T2 â â¥) â - â¦G, L, T1⦠â»[h] â¦G, L, T2â¦. +lemma cpm_fpb (n) (h) (G) (L): âT1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â (T1 â T2 â â¥) â + â¦G,L,T1⦠â»[h] â¦G,L,T2â¦. /3 width=2 by fpb_cpx, cpm_fwd_cpx/ qed. -lemma lpr_fpb (h) (G) (T): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â (L1 â[T] L2 â â¥) â - â¦G, L1, T⦠â»[h] â¦G, L2, Tâ¦. +lemma lpr_fpb (h) (G) (T): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â (L1 â[T] L2 â â¥) â + â¦G,L1,T⦠â»[h] â¦G,L2,Tâ¦. /3 width=1 by fpb_lpx, lpr_fwd_lpx/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma index afa9995d0..a08244671 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma @@ -21,9 +21,9 @@ include "basic_2/rt_transition/fpb_rdeq.ma". (* Properties with degree-based equivalence for closures ********************) (* Basic_2A1: uses: fleq_fpb_trans *) -lemma fdeq_fpb_trans: âh,F1,F2,K1,K2,T1,T2. â¦F1, K1, T1⦠â â¦F2, K2, T2⦠â - âG2,L2,U2. â¦F2, K2, T2⦠â»[h] â¦G2, L2, U2⦠â - ââG1,L1,U1. â¦F1, K1, T1⦠â»[h] â¦G1, L1, U1⦠& â¦G1, L1, U1⦠â â¦G2, L2, U2â¦. +lemma fdeq_fpb_trans: âh,F1,F2,K1,K2,T1,T2. â¦F1,K1,T1⦠â â¦F2,K2,T2⦠â + âG2,L2,U2. â¦F2,K2,T2⦠â»[h] â¦G2,L2,U2⦠â + ââG1,L1,U1. â¦F1,K1,T1⦠â»[h] â¦G1,L1,U1⦠& â¦G1,L1,U1⦠â â¦G2,L2,U2â¦. #h #F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2 #K2 #T2 #HK12 #HT12 #G2 #L2 #U2 #H12 elim (tdeq_fpb_trans ⦠HT12 ⦠H12) -T2 #K0 #T0 #H #HT0 #HK0 @@ -35,8 +35,8 @@ qed-. (* Inversion lemmas with degree-based equivalence for closures **************) (* Basic_2A1: uses: fpb_inv_fleq *) -lemma fpb_inv_fdeq: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â â¥. +lemma fpb_inv_fdeq: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â¥. #h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 [ #G2 #L2 #T2 #H12 #H elim (fdeq_inv_gen_sn ⦠H) -H /3 width=11 by rdeq_fwd_length, fqu_inv_tdeq/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma index 2546dd37e..b09005faf 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma @@ -22,8 +22,8 @@ include "basic_2/rt_transition/fpb.ma". (* Properties with sort-irrelevant equivalence for local environments *******) lemma tdeq_fpb_trans: âh,U2,U1. U2 â U1 â - âG1,G2,L1,L2,T1. â¦G1, L1, U1⦠â»[h] â¦G2, L2, T1⦠â - ââL,T2. â¦G1, L1, U2⦠â»[h] â¦G2, L, T2⦠& T2 â T1 & L â[T1] L2. + âG1,G2,L1,L2,T1. â¦G1,L1,U1⦠â»[h] â¦G2,L2,T1⦠â + ââL,T2. â¦G1,L1,U2⦠â»[h] â¦G2,L,T2⦠& T2 â T1 & L â[T1] L2. #h #U2 #U1 #HU21 #G1 #G2 #L1 #L2 #T1 * -G2 -L2 -T1 [ #G2 #L2 #T1 #H elim (tdeq_fqu_trans ⦠H ⦠HU21) -H @@ -37,8 +37,8 @@ qed-. (* Basic_2A1: was just: lleq_fpb_trans *) lemma rdeq_fpb_trans: âh,F,K1,K2,T. K1 â[T] K2 â - âG,L2,U. â¦F, K2, T⦠â»[h] â¦G, L2, U⦠â - ââL1,U0. â¦F, K1, T⦠â»[h] â¦G, L1, U0⦠& U0 â U & L1 â[U] L2. + âG,L2,U. â¦F,K2,T⦠â»[h] â¦G,L2,U⦠â + ââL1,U0. â¦F,K1,T⦠â»[h] â¦G,L1,U0⦠& U0 â U & L1 â[U] L2. #h #F #K1 #K2 #T #HT #G #L2 #U * -G -L2 -U [ #G #L2 #U #H2 elim (rdeq_fqu_trans ⦠H2 ⦠HT) -K2 /3 width=5 by fpb_fqu, ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma index 9c29aca68..c50a6b2b4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma @@ -21,10 +21,10 @@ include "basic_2/rt_transition/lpr_lpx.ma". (* Basic_2A1: includes: fleq_fpbq fpbq_lleq *) inductive fpbq (h) (G1) (L1) (T1): relation3 genv lenv term â -| fpbq_fquq: âG2,L2,T2. â¦G1, L1, T1⦠â⸮ â¦G2, L2, T2⦠â fpbq h G1 L1 T1 G2 L2 T2 -| fpbq_cpx : âT2. â¦G1, L1⦠⢠T1 â¬[h] T2 â fpbq h G1 L1 T1 G1 L1 T2 -| fpbq_lpx : âL2. â¦G1, L1⦠⢠â¬[h] L2 â fpbq h G1 L1 T1 G1 L2 T1 -| fpbq_fdeq: âG2,L2,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â fpbq h G1 L1 T1 G2 L2 T2 +| fpbq_fquq: âG2,L2,T2. â¦G1,L1,T1⦠â⸮ â¦G2,L2,T2⦠â fpbq h G1 L1 T1 G2 L2 T2 +| fpbq_cpx : âT2. â¦G1,L1⦠⢠T1 â¬[h] T2 â fpbq h G1 L1 T1 G1 L1 T2 +| fpbq_lpx : âL2. â¦G1,L1⦠⢠â¬[h] L2 â fpbq h G1 L1 T1 G1 L2 T1 +| fpbq_fdeq: âG2,L2,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â fpbq h G1 L1 T1 G2 L2 T2 . interpretation @@ -37,10 +37,10 @@ lemma fpbq_refl (h): tri_reflexive ⦠(fpbq h). /2 width=1 by fpbq_cpx/ qed. (* Basic_2A1: includes: cpr_fpbq *) -lemma cpm_fpbq (n) (h) (G) (L): âT1,T2. â¦G, L⦠⢠T1 â¡[n, h] T2 â â¦G, L, T1⦠â½[h] â¦G, L, T2â¦. +lemma cpm_fpbq (n) (h) (G) (L): âT1,T2. â¦G,L⦠⢠T1 â¡[n,h] T2 â â¦G,L,T1⦠â½[h] â¦G,L,T2â¦. /3 width=2 by fpbq_cpx, cpm_fwd_cpx/ qed. -lemma lpr_fpbq (h) (G) (T): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â â¦G, L1, T⦠â½[h] â¦G, L2, Tâ¦. +lemma lpr_fpbq (h) (G) (T): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â â¦G,L1,T⦠â½[h] â¦G,L2,Tâ¦. /3 width=1 by fpbq_lpx, lpr_fwd_lpx/ qed. (* Basic_2A1: removed theorems 2: diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_aaa.ma index b12379dca..a29292aae 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_aaa.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/fpbq.ma". (* Properties with atomic arity assignment for terms ************************) -lemma fpbq_aaa_conf: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2⦠â - âA1. â¦G1, L1⦠⢠T1 â A1 â âA2. â¦G2, L2⦠⢠T2 â A2. +lemma fpbq_aaa_conf: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2⦠â + âA1. â¦G1,L1⦠⢠T1 â A1 â âA2. â¦G2,L2⦠⢠T2 â A2. #h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /3 width=8 by lpx_aaa_conf, cpx_aaa_conf, aaa_fdeq_conf, aaa_fquq_conf, ex_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_fpb.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_fpb.ma index 0f83111ac..21143003b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_fpb.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_fpb.ma @@ -19,23 +19,23 @@ include "basic_2/rt_transition/fpbq.ma". (* Properties with proper parallel rst-transition for closures **************) -lemma fpb_fpbq: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2â¦. +lemma fpb_fpbq: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /3 width=1 by fpbq_fquq, fpbq_cpx, fpbq_lpx, fqu_fquq/ qed. (* Basic_2A1: fpb_fpbq_alt *) -lemma fpb_fpbq_ffdneq: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2⦠â - â§â§ â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2⦠& (â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â â¥). +lemma fpb_fpbq_ffdneq: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2⦠â + â§â§ â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2⦠& (â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â¥). /3 width=10 by fpb_fpbq, fpb_inv_fdeq, conj/ qed-. (* Inversrion lemmas with proper parallel rst-transition for closures *******) (* Basic_2A1: uses: fpbq_ind_alt *) -lemma fpbq_inv_fpb: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2⦠â - â¨â¨ â¦G1, L1, T1⦠â â¦G2, L2, T2⦠- | â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2â¦. +lemma fpbq_inv_fpb: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2⦠â + â¨â¨ â¦G1,L1,T1⦠â â¦G2,L2,T2⦠+ | â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 [ #G2 #L2 #T2 * [2: * #H1 #H2 #H3 destruct ] /3 width=1 by fpb_fqu, fdeq_intro_sn, or_intror, or_introl/ @@ -48,8 +48,8 @@ lemma fpbq_inv_fpb: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â½[h] â¦G2, L2, T qed-. (* Basic_2A1: fpbq_inv_fpb_alt *) -lemma fpbq_ffdneq_inv_fpb: âh,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â½[h] â¦G2, L2, T2⦠â - (â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â â¥) â â¦G1, L1, T1⦠â»[h] â¦G2, L2, T2â¦. +lemma fpbq_ffdneq_inv_fpb: âh,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â½[h] â¦G2,L2,T2⦠â + (â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â¥) â â¦G1,L1,T1⦠â»[h] â¦G2,L2,T2â¦. #h #G1 #G2 #L1 #L2 #T1 #T2 #H #H0 elim (fpbq_inv_fpb ⦠H) -H // #H elim H0 -H0 // qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr.ma index f69cb5e67..f47d6640e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr.ma @@ -27,8 +27,8 @@ interpretation (* Basic properties *********************************************************) -lemma lpr_bind (h) (G): âK1,K2. â¦G, K1⦠⢠â¡[h] K2 â - âI1,I2. â¦G, K1⦠⢠I1 â¡[h] I2 â â¦G, K1.â{I1}⦠⢠â¡[h] K2.â{I2}. +lemma lpr_bind (h) (G): âK1,K2. â¦G,K1⦠⢠â¡[h] K2 â + âI1,I2. â¦G,K1⦠⢠I1 â¡[h] I2 â â¦G,K1.â{I1}⦠⢠â¡[h] K2.â{I2}. /2 width=1 by lex_bind/ qed. (* Note: lemma 250 *) @@ -37,60 +37,60 @@ lemma lpr_refl (h) (G): reflexive ⦠(lpr h G). (* Advanced properties ******************************************************) -lemma lpr_bind_refl_dx (h) (G): âK1,K2. â¦G, K1⦠⢠â¡[h] K2 â - âI. â¦G, K1.â{I}⦠⢠â¡[h] K2.â{I}. +lemma lpr_bind_refl_dx (h) (G): âK1,K2. â¦G,K1⦠⢠â¡[h] K2 â + âI. â¦G,K1.â{I}⦠⢠â¡[h] K2.â{I}. /2 width=1 by lex_bind_refl_dx/ qed. -lemma lpr_pair (h) (G): âK1,K2,V1,V2. â¦G, K1⦠⢠â¡[h] K2 â â¦G, K1⦠⢠V1 â¡[h] V2 â - âI. â¦G, K1.â{I}V1⦠⢠â¡[h] K2.â{I}V2. +lemma lpr_pair (h) (G): âK1,K2,V1,V2. â¦G,K1⦠⢠â¡[h] K2 â â¦G,K1⦠⢠V1 â¡[h] V2 â + âI. â¦G,K1.â{I}V1⦠⢠â¡[h] K2.â{I}V2. /2 width=1 by lex_pair/ qed. (* Basic inversion lemmas ***************************************************) (* Basic_2A1: was: lpr_inv_atom1 *) (* Basic_1: includes: wcpr0_gen_sort *) -lemma lpr_inv_atom_sn (h) (G): âL2. â¦G, â⦠⢠â¡[h] L2 â L2 = â. +lemma lpr_inv_atom_sn (h) (G): âL2. â¦G,â⦠⢠â¡[h] L2 â L2 = â. /2 width=2 by lex_inv_atom_sn/ qed-. -lemma lpr_inv_bind_sn (h) (G): âI1,L2,K1. â¦G, K1.â{I1}⦠⢠â¡[h] L2 â - ââI2,K2. â¦G, K1⦠⢠â¡[h] K2 & â¦G, K1⦠⢠I1 â¡[h] I2 & +lemma lpr_inv_bind_sn (h) (G): âI1,L2,K1. â¦G,K1.â{I1}⦠⢠â¡[h] L2 â + ââI2,K2. â¦G,K1⦠⢠â¡[h] K2 & â¦G,K1⦠⢠I1 â¡[h] I2 & L2 = K2.â{I2}. /2 width=1 by lex_inv_bind_sn/ qed-. (* Basic_2A1: was: lpr_inv_atom2 *) -lemma lpr_inv_atom_dx (h) (G): âL1. â¦G, L1⦠⢠â¡[h] â â L1 = â. +lemma lpr_inv_atom_dx (h) (G): âL1. â¦G,L1⦠⢠â¡[h] â â L1 = â. /2 width=2 by lex_inv_atom_dx/ qed-. -lemma lpr_inv_bind_dx (h) (G): âI2,L1,K2. â¦G, L1⦠⢠â¡[h] K2.â{I2} â - ââI1,K1. â¦G, K1⦠⢠â¡[h] K2 & â¦G, K1⦠⢠I1 â¡[h] I2 & +lemma lpr_inv_bind_dx (h) (G): âI2,L1,K2. â¦G,L1⦠⢠â¡[h] K2.â{I2} â + ââI1,K1. â¦G,K1⦠⢠â¡[h] K2 & â¦G,K1⦠⢠I1 â¡[h] I2 & L1 = K1.â{I1}. /2 width=1 by lex_inv_bind_dx/ qed-. (* Advanced inversion lemmas ************************************************) -lemma lpr_inv_unit_sn (h) (G): âI,L2,K1. â¦G, K1.â¤{I}⦠⢠â¡[h] L2 â - ââK2. â¦G, K1⦠⢠â¡[h] K2 & L2 = K2.â¤{I}. +lemma lpr_inv_unit_sn (h) (G): âI,L2,K1. â¦G,K1.â¤{I}⦠⢠â¡[h] L2 â + ââK2. â¦G,K1⦠⢠â¡[h] K2 & L2 = K2.â¤{I}. /2 width=1 by lex_inv_unit_sn/ qed-. (* Basic_2A1: was: lpr_inv_pair1 *) (* Basic_1: includes: wcpr0_gen_head *) -lemma lpr_inv_pair_sn (h) (G): âI,L2,K1,V1. â¦G, K1.â{I}V1⦠⢠â¡[h] L2 â - ââK2,V2. â¦G, K1⦠⢠â¡[h] K2 & â¦G, K1⦠⢠V1 â¡[h] V2 & +lemma lpr_inv_pair_sn (h) (G): âI,L2,K1,V1. â¦G,K1.â{I}V1⦠⢠â¡[h] L2 â + ââK2,V2. â¦G,K1⦠⢠â¡[h] K2 & â¦G,K1⦠⢠V1 â¡[h] V2 & L2 = K2.â{I}V2. /2 width=1 by lex_inv_pair_sn/ qed-. -lemma lpr_inv_unit_dx (h) (G): âI,L1,K2. â¦G, L1⦠⢠â¡[h] K2.â¤{I} â - ââK1. â¦G, K1⦠⢠â¡[h] K2 & L1 = K1.â¤{I}. +lemma lpr_inv_unit_dx (h) (G): âI,L1,K2. â¦G,L1⦠⢠â¡[h] K2.â¤{I} â + ââK1. â¦G,K1⦠⢠â¡[h] K2 & L1 = K1.â¤{I}. /2 width=1 by lex_inv_unit_dx/ qed-. (* Basic_2A1: was: lpr_inv_pair2 *) -lemma lpr_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G, L1⦠⢠â¡[h] K2.â{I}V2 â - ââK1,V1. â¦G, K1⦠⢠â¡[h] K2 & â¦G, K1⦠⢠V1 â¡[h] V2 & +lemma lpr_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G,L1⦠⢠â¡[h] K2.â{I}V2 â + ââK1,V1. â¦G,K1⦠⢠â¡[h] K2 & â¦G,K1⦠⢠V1 â¡[h] V2 & L1 = K1.â{I}V1. /2 width=1 by lex_inv_pair_dx/ qed-. -lemma lpr_inv_pair (h) (G): âI1,I2,L1,L2,V1,V2. â¦G, L1.â{I1}V1⦠⢠â¡[h] L2.â{I2}V2 â - â§â§ â¦G, L1⦠⢠â¡[h] L2 & â¦G, L1⦠⢠V1 â¡[h] V2 & I1 = I2. +lemma lpr_inv_pair (h) (G): âI1,I2,L1,L2,V1,V2. â¦G,L1.â{I1}V1⦠⢠â¡[h] L2.â{I2}V2 â + â§â§ â¦G,L1⦠⢠â¡[h] L2 & â¦G,L1⦠⢠V1 â¡[h] V2 & I1 = I2. /2 width=1 by lex_inv_pair/ qed-. (* Basic_1: removed theorems 3: wcpr0_getl wcpr0_getl_back diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_fquq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_fquq.ma index e1256efc5..031de39f8 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_fquq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_fquq.ma @@ -22,9 +22,9 @@ include "basic_2/rt_transition/lpr.ma". (* Properties with extended structural successor for closures ***************) -lemma fqu_cpr_trans_sn (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¡[h] U2 â - ââL,U1. â¦G1, L1⦠⢠â¡[h] L & â¦G1, L1⦠⢠T1 â¡[h] U1 & â¦G1, L, U1⦠â[b] â¦G2, L2, U2â¦. +lemma fqu_cpr_trans_sn (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¡[h] U2 â + ââL,U1. â¦G1,L1⦠⢠â¡[h] L & â¦G1,L1⦠⢠T1 â¡[h] U1 & â¦G1,L,U1⦠â[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ /3 width=5 by lpr_pair, fqu_lref_O, ex3_2_intro/ | /3 width=5 by cpr_pair_sn, fqu_pair_sn, ex3_2_intro/ @@ -37,9 +37,9 @@ lemma fqu_cpr_trans_sn (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] ] qed-. -lemma fqu_cpr_trans_dx (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¡[h] U2 â - ââL,U1. â¦G1, L1⦠⢠â¡[h] L & â¦G1, L⦠⢠T1 â¡[h] U1 & â¦G1, L, U1⦠â[b] â¦G2, L2, U2â¦. +lemma fqu_cpr_trans_dx (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¡[h] U2 â + ââL,U1. â¦G1,L1⦠⢠â¡[h] L & â¦G1,L⦠⢠T1 â¡[h] U1 & â¦G1,L,U1⦠â[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ /3 width=5 by lpr_pair, fqu_lref_O, ex3_2_intro/ | /3 width=5 by cpr_pair_sn, fqu_pair_sn, ex3_2_intro/ @@ -52,9 +52,9 @@ lemma fqu_cpr_trans_dx (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] ] qed-. -lemma fqu_lpr_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âK2. â¦G2, L2⦠⢠â¡[h] K2 â - ââK1,T. â¦G1, L1⦠⢠â¡[h] K1 & â¦G1, L1⦠⢠T1 â¡[h] T & â¦G1, K1, T⦠â[b] â¦G2, K2, T2â¦. +lemma fqu_lpr_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âK2. â¦G2,L2⦠⢠â¡[h] K2 â + ââK1,T. â¦G1,L1⦠⢠â¡[h] K1 & â¦G1,L1⦠⢠T1 â¡[h] T & â¦G1,K1,T⦠â[b] â¦G2,K2,T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ /3 width=5 by lpr_bind_refl_dx, fqu_lref_O, ex3_2_intro/ | /3 width=5 by cpr_pair_sn, fqu_pair_sn, ex3_2_intro/ @@ -71,9 +71,9 @@ qed-. (* Note: does not hold in Basic_2A1 because it requires cpm *) (* Note: L1 = K0.âV0 and T1 = #0 require n = 1 *) -lemma lpr_fqu_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âK1. â¦G1, K1⦠⢠â¡[h] L1 â - âân,K2,T. â¦G1, K1⦠⢠T1 â¡[n, h] T & â¦G1, K1, T⦠â[b] â¦G2, K2, T2⦠& â¦G2, K2⦠⢠â¡[h] L2 & n ⤠1. +lemma lpr_fqu_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âK1. â¦G1,K1⦠⢠â¡[h] L1 â + âân,K2,T. â¦G1,K1⦠⢠T1 â¡[n,h] T & â¦G1,K1,T⦠â[b] â¦G2,K2,T2⦠& â¦G2,K2⦠⢠â¡[h] L2 & n ⤠1. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ * #G #K #V #K1 #H elim (lpr_inv_pair_dx ⦠H) -H #K0 #V0 #HK0 #HV0 #H destruct @@ -91,36 +91,36 @@ qed-. (* Properties with extended optional structural successor for closures ******) -lemma fquq_cpr_trans_sn (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¡[h] U2 â - ââL,U1. â¦G1, L1⦠⢠â¡[h] L & â¦G1, L1⦠⢠T1 â¡[h] U1 & â¦G1, L, U1⦠â⸮[b] â¦G2, L2, U2â¦. +lemma fquq_cpr_trans_sn (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¡[h] U2 â + ââL,U1. â¦G1,L1⦠⢠â¡[h] L & â¦G1,L1⦠⢠T1 â¡[h] U1 & â¦G1,L,U1⦠â⸮[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 cases H -H [ #HT12 elim (fqu_cpr_trans_sn ⦠HT12 ⦠HTU2) /3 width=5 by fqu_fquq, ex3_2_intro/ | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/ ] qed-. -lemma fquq_cpr_trans_dx (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âU2. â¦G2, L2⦠⢠T2 â¡[h] U2 â - ââL,U1. â¦G1, L1⦠⢠â¡[h] L & â¦G1, L⦠⢠T1 â¡[h] U1 & â¦G1, L, U1⦠â⸮[b] â¦G2, L2, U2â¦. +lemma fquq_cpr_trans_dx (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âU2. â¦G2,L2⦠⢠T2 â¡[h] U2 â + ââL,U1. â¦G1,L1⦠⢠â¡[h] L & â¦G1,L⦠⢠T1 â¡[h] U1 & â¦G1,L,U1⦠â⸮[b] â¦G2,L2,U2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 cases H -H [ #HT12 elim (fqu_cpr_trans_dx ⦠HT12 ⦠HTU2) /3 width=5 by fqu_fquq, ex3_2_intro/ | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/ ] qed-. -lemma fquq_lpr_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âK2. â¦G2, L2⦠⢠â¡[h] K2 â - ââK1,T. â¦G1, L1⦠⢠â¡[h] K1 & â¦G1, L1⦠⢠T1 â¡[h] T & â¦G1, K1, T⦠â⸮[b] â¦G2, K2, T2â¦. +lemma fquq_lpr_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âK2. â¦G2,L2⦠⢠â¡[h] K2 â + ââK1,T. â¦G1,L1⦠⢠â¡[h] K1 & â¦G1,L1⦠⢠T1 â¡[h] T & â¦G1,K1,T⦠â⸮[b] â¦G2,K2,T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K2 #HLK2 cases H -H [ #H12 elim (fqu_lpr_trans ⦠H12 ⦠HLK2) /3 width=5 by fqu_fquq, ex3_2_intro/ | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/ ] qed-. -lemma lpr_fquq_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âK1. â¦G1, K1⦠⢠â¡[h] L1 â - âân,K2,T. â¦G1, K1⦠⢠T1 â¡[n, h] T & â¦G1, K1, T⦠â⸮[b] â¦G2, K2, T2⦠& â¦G2, K2⦠⢠â¡[h] L2 & n ⤠1. +lemma lpr_fquq_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âK1. â¦G1,K1⦠⢠â¡[h] L1 â + âân,K2,T. â¦G1,K1⦠⢠T1 â¡[n,h] T & â¦G1,K1,T⦠â⸮[b] â¦G2,K2,T2⦠& â¦G2,K2⦠⢠â¡[h] L2 & n ⤠1. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 cases H -H [ #H12 elim (lpr_fqu_trans ⦠H12 ⦠HKL1) -L1 /3 width=7 by fqu_fquq, ex4_3_intro/ | * #H1 #H2 #H3 destruct /2 width=7 by ex4_3_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_length.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_length.ma index 51f2da5f2..db3c8e334 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_length.ma @@ -17,5 +17,5 @@ include "basic_2/rt_transition/lpr.ma". (* PARALLEL R-TRANSITION FOR FULL LOCAL ENVIRONMENTS ************************) -lemma lpr_fwd_length (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â |L1| = |L2|. +lemma lpr_fwd_length (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â |L1| = |L2|. /2 width=2 by lex_fwd_length/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma index 7dedda628..312265d54 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma @@ -21,24 +21,24 @@ include "basic_2/rt_transition/lpr_drops.ma". (* PARALLEL R-TRANSITION FOR FULL LOCAL ENVIRONMENTS ************************) definition IH_cpr_conf_lpr (h): relation3 genv lenv term â λG,L,T. - âT1. â¦G, L⦠⢠T â¡[h] T1 â âT2. â¦G, L⦠⢠T â¡[h] T2 â - âL1. â¦G, L⦠⢠â¡[h] L1 â âL2. â¦G, L⦠⢠â¡[h] L2 â - ââT0. â¦G, L1⦠⢠T1 â¡[h] T0 & â¦G, L2⦠⢠T2 â¡[h] T0. + âT1. â¦G,L⦠⢠T â¡[h] T1 â âT2. â¦G,L⦠⢠T â¡[h] T2 â + âL1. â¦G,L⦠⢠â¡[h] L1 â âL2. â¦G,L⦠⢠â¡[h] L2 â + ââT0. â¦G,L1⦠⢠T1 â¡[h] T0 & â¦G,L2⦠⢠T2 â¡[h] T0. (* Main properties with context-sensitive parallel reduction for terms ******) fact cpr_conf_lpr_atom_atom (h): - âI,G,L1,L2. ââT. â¦G, L1⦠⢠âª{I} â¡[h] T & â¦G, L2⦠⢠âª{I} â¡[h] T. + âI,G,L1,L2. ââT. â¦G,L1⦠⢠âª{I} â¡[h] T & â¦G,L2⦠⢠âª{I} â¡[h] T. /2 width=3 by cpr_refl, ex2_intro/ qed-. fact cpr_conf_lpr_atom_delta (h): âG0,L0,i. ( - âG,L,T. â¦G0, L0, #i⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,#i⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â âK0,V0. â¬*[i] L0 â K0.âV0 â - âV2. â¦G0, K0⦠⢠V0 â¡[h] V2 â âT2. â¬*[âi] V2 â T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠#i â¡[h] T & â¦G0, L2⦠⢠T2 â¡[h] T. + âV2. â¦G0,K0⦠⢠V0 â¡[h] V2 â âT2. â¬*[âi] V2 â T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠#i â¡[h] T & â¦G0,L2⦠⢠T2 â¡[h] T. #h #G0 #L0 #i #IH #K0 #V0 #HLK0 #V2 #HV02 #T2 #HVT2 #L1 #HL01 #L2 #HL02 elim (lpr_drops_conf ⦠HLK0 ⦠HL01) -HL01 // #X1 #H1 #HLK1 elim (lpr_inv_pair_sn ⦠H1) -H1 #K1 #V1 #HK01 #HV01 #H destruct @@ -54,14 +54,14 @@ qed-. (* Basic_1: includes: pr0_delta_delta pr2_delta_delta *) fact cpr_conf_lpr_delta_delta (h): âG0,L0,i. ( - âG,L,T. â¦G0, L0, #i⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,#i⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â âK0,V0. â¬*[i] L0 â K0.âV0 â - âV1. â¦G0, K0⦠⢠V0 â¡[h] V1 â âT1. â¬*[âi] V1 â T1 â + âV1. â¦G0,K0⦠⢠V0 â¡[h] V1 â âT1. â¬*[âi] V1 â T1 â âKX,VX. â¬*[i] L0 â KX.âVX â - âV2. â¦G0, KX⦠⢠VX â¡[h] V2 â âT2. â¬*[âi] V2 â T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠T1 â¡[h] T & â¦G0, L2⦠⢠T2 â¡[h] T. + âV2. â¦G0,KX⦠⢠VX â¡[h] V2 â âT2. â¬*[âi] V2 â T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠T1 â¡[h] T & â¦G0,L2⦠⢠T2 â¡[h] T. #h #G0 #L0 #i #IH #K0 #V0 #HLK0 #V1 #HV01 #T1 #HVT1 #KX #VX #H #V2 #HV02 #T2 #HVT2 #L1 #HL01 #L2 #HL02 lapply (drops_mono ⦠H ⦠HLK0) -H #H destruct @@ -79,12 +79,12 @@ qed-. fact cpr_conf_lpr_bind_bind (h): âp,I,G0,L0,V0,T0. ( - âG,L,T. â¦G0, L0, â{p,I}V0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,â{p,I}V0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0, L0.â{I}V0⦠⢠T0 â¡[h] T1 â - âV2. â¦G0, L0⦠⢠V0 â¡[h] V2 â âT2. â¦G0, L0.â{I}V0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠â{p,I}V1.T1 â¡[h] T & â¦G0, L2⦠⢠â{p,I}V2.T2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0,L0.â{I}V0⦠⢠T0 â¡[h] T1 â + âV2. â¦G0,L0⦠⢠V0 â¡[h] V2 â âT2. â¦G0,L0.â{I}V0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠â{p,I}V1.T1 â¡[h] T & â¦G0,L2⦠⢠â{p,I}V2.T2 â¡[h] T. #h #p #I #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01 #V2 #HV02 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HV01 ⦠HV02 ⦠HL01 ⦠HL02) // @@ -94,12 +94,12 @@ qed-. fact cpr_conf_lpr_bind_zeta (h): âG0,L0,V0,T0. ( - âG,L,T. â¦G0, L0, +âV0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,+âV0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0, L0.âV0⦠⢠T0 â¡[h] T1 â - âT2. â¬*[1]T2 â T0 â âX2. â¦G0, L0⦠⢠T2 â¡[h] X2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠+âV1.T1 â¡[h] T & â¦G0, L2⦠⢠X2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0,L0.âV0⦠⢠T0 â¡[h] T1 â + âT2. â¬*[1]T2 â T0 â âX2. â¦G0,L0⦠⢠T2 â¡[h] X2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠+âV1.T1 â¡[h] T & â¦G0,L2⦠⢠X2 â¡[h] T. #h #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01 #T2 #HT20 #X2 #HTX2 #L1 #HL01 #L2 #HL02 elim (cpm_inv_lifts_sn ⦠HT01 (â) ⦠L0 ⦠HT20) -HT01 [| /3 width=1 by drops_refl, drops_drop/ ] #T #HT1 #HT2 @@ -109,12 +109,12 @@ qed-. fact cpr_conf_lpr_zeta_zeta (h): âG0,L0,V0,T0. ( - âG,L,T. â¦G0, L0, +âV0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,+âV0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âT1. â¬*[1] T1 â T0 â âX1. â¦G0, L0⦠⢠T1 â¡[h] X1 â - âT2. â¬*[1] T2 â T0 â âX2. â¦G0, L0⦠⢠T2 â¡[h] X2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠X1 â¡[h] T & â¦G0, L2⦠⢠X2 â¡[h] T. + âT1. â¬*[1] T1 â T0 â âX1. â¦G0,L0⦠⢠T1 â¡[h] X1 â + âT2. â¬*[1] T2 â T0 â âX2. â¦G0,L0⦠⢠T2 â¡[h] X2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠X1 â¡[h] T & â¦G0,L2⦠⢠X2 â¡[h] T. #h #G0 #L0 #V0 #T0 #IH #T1 #HT10 #X1 #HTX1 #T2 #HT20 #X2 #HTX2 #L1 #HL01 #L2 #HL02 lapply (lifts_inj ⦠HT20 ⦠HT10) -HT20 #H destruct @@ -124,12 +124,12 @@ qed-. fact cpr_conf_lpr_flat_flat (h): âI,G0,L0,V0,T0. ( - âG,L,T. â¦G0, L0, â{I}V0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,â{I}V0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0, L0⦠⢠T0 â¡[h] T1 â - âV2. â¦G0, L0⦠⢠V0 â¡[h] V2 â âT2. â¦G0, L0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠â{I}V1.T1 â¡[h] T & â¦G0, L2⦠⢠â{I}V2.T2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0,L0⦠⢠T0 â¡[h] T1 â + âV2. â¦G0,L0⦠⢠V0 â¡[h] V2 â âT2. â¦G0,L0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠â{I}V1.T1 â¡[h] T & â¦G0,L2⦠⢠â{I}V2.T2 â¡[h] T. #h #I #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01 #V2 #HV02 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HV01 ⦠HV02 ⦠HL01 ⦠HL02) // @@ -139,11 +139,11 @@ qed-. fact cpr_conf_lpr_flat_eps (h): âG0,L0,V0,T0. ( - âG,L,T. â¦G0, L0, âV0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,âV0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1,T1. â¦G0, L0⦠⢠T0 â¡[h] T1 â âT2. â¦G0, L0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠âV1.T1 â¡[h] T & â¦G0, L2⦠⢠T2 â¡[h] T. + âV1,T1. â¦G0,L0⦠⢠T0 â¡[h] T1 â âT2. â¦G0,L0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠âV1.T1 â¡[h] T & â¦G0,L2⦠⢠T2 â¡[h] T. #h #G0 #L0 #V0 #T0 #IH #V1 #T1 #HT01 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HT01 ⦠HT02 ⦠HL01 ⦠HL02) // -L0 -V0 -T0 @@ -152,11 +152,11 @@ qed-. fact cpr_conf_lpr_eps_eps (h): âG0,L0,V0,T0. ( - âG,L,T. â¦G0, L0, âV0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,âV0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âT1. â¦G0, L0⦠⢠T0 â¡[h] T1 â âT2. â¦G0, L0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠T1 â¡[h] T & â¦G0, L2⦠⢠T2 â¡[h] T. + âT1. â¦G0,L0⦠⢠T0 â¡[h] T1 â âT2. â¦G0,L0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠T1 â¡[h] T & â¦G0,L2⦠⢠T2 â¡[h] T. #h #G0 #L0 #V0 #T0 #IH #T1 #HT01 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HT01 ⦠HT02 ⦠HL01 ⦠HL02) // -L0 -V0 -T0 @@ -165,12 +165,12 @@ qed-. fact cpr_conf_lpr_flat_beta (h): âp,G0,L0,V0,W0,T0. ( - âG,L,T. â¦G0, L0, âV0.â{p}W0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,âV0.â{p}W0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0, L0⦠⢠â{p}W0.T0 â¡[h] T1 â - âV2. â¦G0, L0⦠⢠V0 â¡[h] V2 â âW2. â¦G0, L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0, L0.âW0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠âV1.T1 â¡[h] T & â¦G0, L2⦠⢠â{p}âW2.V2.T2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0,L0⦠⢠â{p}W0.T0 â¡[h] T1 â + âV2. â¦G0,L0⦠⢠V0 â¡[h] V2 â âW2. â¦G0,L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0,L0.âW0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠âV1.T1 â¡[h] T & â¦G0,L2⦠⢠â{p}âW2.V2.T2 â¡[h] T. #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #X #H #V2 #HV02 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (cpm_inv_abst1 ⦠H) -H #W1 #T1 #HW01 #HT01 #H destruct @@ -187,13 +187,13 @@ qed-. *) fact cpr_conf_lpr_flat_theta (h): âp,G0,L0,V0,W0,T0. ( - âG,L,T. â¦G0, L0, âV0.â{p}W0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,âV0.â{p}W0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0, L0⦠⢠â{p}W0.T0 â¡[h] T1 â - âV2. â¦G0, L0⦠⢠V0 â¡[h] V2 â âU2. â¬*[1] V2 â U2 â - âW2. â¦G0, L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0, L0.âW0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠âV1.T1 â¡[h] T & â¦G0, L2⦠⢠â{p}W2.âU2.T2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âT1. â¦G0,L0⦠⢠â{p}W0.T0 â¡[h] T1 â + âV2. â¦G0,L0⦠⢠V0 â¡[h] V2 â âU2. â¬*[1] V2 â U2 â + âW2. â¦G0,L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0,L0.âW0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠âV1.T1 â¡[h] T & â¦G0,L2⦠⢠â{p}W2.âU2.T2 â¡[h] T. #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #X #H #V2 #HV02 #U2 #HVU2 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HV01 ⦠HV02 ⦠HL01 ⦠HL02) -HV01 -HV02 /2 width=1 by/ #V #HV1 #HV2 @@ -212,12 +212,12 @@ qed-. fact cpr_conf_lpr_beta_beta (h): âp,G0,L0,V0,W0,T0. ( - âG,L,T. â¦G0, L0, âV0.â{p}W0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,âV0.â{p}W0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âW1. â¦G0, L0⦠⢠W0 â¡[h] W1 â âT1. â¦G0, L0.âW0⦠⢠T0 â¡[h] T1 â - âV2. â¦G0, L0⦠⢠V0 â¡[h] V2 â âW2. â¦G0, L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0, L0.âW0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠â{p}âW1.V1.T1 â¡[h] T & â¦G0, L2⦠⢠â{p}âW2.V2.T2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âW1. â¦G0,L0⦠⢠W0 â¡[h] W1 â âT1. â¦G0,L0.âW0⦠⢠T0 â¡[h] T1 â + âV2. â¦G0,L0⦠⢠V0 â¡[h] V2 â âW2. â¦G0,L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0,L0.âW0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠â{p}âW1.V1.T1 â¡[h] T & â¦G0,L2⦠⢠â{p}âW2.V2.T2 â¡[h] T. #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #W1 #HW01 #T1 #HT01 #V2 #HV02 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HV01 ⦠HV02 ⦠HL01 ⦠HL02) -HV01 -HV02 /2 width=1 by/ #V #HV1 #HV2 @@ -231,14 +231,14 @@ qed-. (* Basic_1: was: pr0_upsilon_upsilon *) fact cpr_conf_lpr_theta_theta (h): âp,G0,L0,V0,W0,T0. ( - âG,L,T. â¦G0, L0, âV0.â{p}W0.T0⦠â+ â¦G, L, T⦠â IH_cpr_conf_lpr h G L T + âG,L,T. â¦G0,L0,âV0.â{p}W0.T0⦠â+ â¦G,L,T⦠â IH_cpr_conf_lpr h G L T ) â - âV1. â¦G0, L0⦠⢠V0 â¡[h] V1 â âU1. â¬*[1] V1 â U1 â - âW1. â¦G0, L0⦠⢠W0 â¡[h] W1 â âT1. â¦G0, L0.âW0⦠⢠T0 â¡[h] T1 â - âV2. â¦G0, L0⦠⢠V0 â¡[h] V2 â âU2. â¬*[1] V2 â U2 â - âW2. â¦G0, L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0, L0.âW0⦠⢠T0 â¡[h] T2 â - âL1. â¦G0, L0⦠⢠â¡[h] L1 â âL2. â¦G0, L0⦠⢠â¡[h] L2 â - ââT. â¦G0, L1⦠⢠â{p}W1.âU1.T1 â¡[h] T & â¦G0, L2⦠⢠â{p}W2.âU2.T2 â¡[h] T. + âV1. â¦G0,L0⦠⢠V0 â¡[h] V1 â âU1. â¬*[1] V1 â U1 â + âW1. â¦G0,L0⦠⢠W0 â¡[h] W1 â âT1. â¦G0,L0.âW0⦠⢠T0 â¡[h] T1 â + âV2. â¦G0,L0⦠⢠V0 â¡[h] V2 â âU2. â¬*[1] V2 â U2 â + âW2. â¦G0,L0⦠⢠W0 â¡[h] W2 â âT2. â¦G0,L0.âW0⦠⢠T0 â¡[h] T2 â + âL1. â¦G0,L0⦠⢠â¡[h] L1 â âL2. â¦G0,L0⦠⢠â¡[h] L2 â + ââT. â¦G0,L1⦠⢠â{p}W1.âU1.T1 â¡[h] T & â¦G0,L2⦠⢠â{p}W2.âU2.T2 â¡[h] T. #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #U1 #HVU1 #W1 #HW01 #T1 #HT01 #V2 #HV02 #U2 #HVU2 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02 elim (IH ⦠HV01 ⦠HV02 ⦠HL01 ⦠HL02) -HV01 -HV02 /2 width=1 by/ #V #HV1 #HV2 @@ -308,15 +308,15 @@ qed-. (* Properties with context-sensitive parallel reduction for terms ***********) -lemma lpr_cpr_conf_dx (h) (G): âL0. âT0,T1:term. â¦G, L0⦠⢠T0 â¡[h] T1 â âL1. â¦G, L0⦠⢠â¡[h] L1 â - ââT. â¦G, L1⦠⢠T0 â¡[h] T & â¦G, L1⦠⢠T1 â¡[h] T. +lemma lpr_cpr_conf_dx (h) (G): âL0. âT0,T1:term. â¦G,L0⦠⢠T0 â¡[h] T1 â âL1. â¦G,L0⦠⢠â¡[h] L1 â + ââT. â¦G,L1⦠⢠T0 â¡[h] T & â¦G,L1⦠⢠T1 â¡[h] T. #h #G #L0 #T0 #T1 #HT01 #L1 #HL01 elim (cpr_conf_lpr ⦠HT01 T0 ⦠HL01 ⦠HL01) -HT01 -HL01 /2 width=3 by ex2_intro/ qed-. -lemma lpr_cpr_conf_sn (h) (G): âL0. âT0,T1:term. â¦G, L0⦠⢠T0 â¡[h] T1 â âL1. â¦G, L0⦠⢠â¡[h] L1 â - ââT. â¦G, L1⦠⢠T0 â¡[h] T & â¦G, L0⦠⢠T1 â¡[h] T. +lemma lpr_cpr_conf_sn (h) (G): âL0. âT0,T1:term. â¦G,L0⦠⢠T0 â¡[h] T1 â âL1. â¦G,L0⦠⢠â¡[h] L1 â + ââT. â¦G,L1⦠⢠T0 â¡[h] T & â¦G,L0⦠⢠T1 â¡[h] T. #h #G #L0 #T0 #T1 #HT01 #L1 #HL01 elim (cpr_conf_lpr ⦠HT01 T0 ⦠L0 ⦠HL01) -HT01 -HL01 /2 width=3 by ex2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpx.ma index 484ae046f..6cc94e31f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpx.ma @@ -21,5 +21,5 @@ include "basic_2/rt_transition/lpr.ma". (* Forward lemmas with unbound parallel rt-transition for ref local envs ****) (* Basic_2A1: was: lpr_lpx *) -lemma lpr_fwd_lpx (h) (G): âL1,L2. â¦G, L1⦠⢠â¡[h] L2 â â¦G, L1⦠⢠â¬[h] L2. +lemma lpr_fwd_lpx (h) (G): âL1,L2. â¦G,L1⦠⢠â¡[h] L2 â â¦G,L1⦠⢠â¬[h] L2. /3 width=3 by cpm_fwd_cpx, lex_co/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx.ma index ae782872c..14d34b21a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx.ma @@ -27,8 +27,8 @@ interpretation (* Basic properties *********************************************************) -lemma lpx_bind (h) (G): âK1,K2. â¦G, K1⦠⢠â¬[h] K2 â - âI1,I2. â¦G, K1⦠⢠I1 â¬[h] I2 â â¦G, K1.â{I1}⦠⢠â¬[h] K2.â{I2}. +lemma lpx_bind (h) (G): âK1,K2. â¦G,K1⦠⢠â¬[h] K2 â + âI1,I2. â¦G,K1⦠⢠I1 â¬[h] I2 â â¦G,K1.â{I1}⦠⢠â¬[h] K2.â{I2}. /2 width=1 by lex_bind/ qed. lemma lpx_refl (h) (G): reflexive ⦠(lpx h G). @@ -36,56 +36,56 @@ lemma lpx_refl (h) (G): reflexive ⦠(lpx h G). (* Advanced properties ******************************************************) -lemma lpx_bind_refl_dx (h) (G): âK1,K2. â¦G, K1⦠⢠â¬[h] K2 â - âI. â¦G, K1.â{I}⦠⢠â¬[h] K2.â{I}. +lemma lpx_bind_refl_dx (h) (G): âK1,K2. â¦G,K1⦠⢠â¬[h] K2 â + âI. â¦G,K1.â{I}⦠⢠â¬[h] K2.â{I}. /2 width=1 by lex_bind_refl_dx/ qed. -lemma lpx_pair (h) (G): âK1,K2. â¦G, K1⦠⢠â¬[h] K2 â âV1,V2. â¦G, K1⦠⢠V1 â¬[h] V2 â - âI.â¦G, K1.â{I}V1⦠⢠â¬[h] K2.â{I}V2. +lemma lpx_pair (h) (G): âK1,K2. â¦G,K1⦠⢠â¬[h] K2 â âV1,V2. â¦G,K1⦠⢠V1 â¬[h] V2 â + âI.â¦G,K1.â{I}V1⦠⢠â¬[h] K2.â{I}V2. /2 width=1 by lex_pair/ qed. (* Basic inversion lemmas ***************************************************) (* Basic_2A1: was: lpx_inv_atom1 *) -lemma lpx_inv_atom_sn (h) (G): âL2. â¦G, â⦠⢠â¬[h] L2 â L2 = â. +lemma lpx_inv_atom_sn (h) (G): âL2. â¦G,â⦠⢠â¬[h] L2 â L2 = â. /2 width=2 by lex_inv_atom_sn/ qed-. -lemma lpx_inv_bind_sn (h) (G): âI1,L2,K1. â¦G, K1.â{I1}⦠⢠â¬[h] L2 â - ââI2,K2. â¦G, K1⦠⢠â¬[h] K2 & â¦G, K1⦠⢠I1 â¬[h] I2 & +lemma lpx_inv_bind_sn (h) (G): âI1,L2,K1. â¦G,K1.â{I1}⦠⢠â¬[h] L2 â + ââI2,K2. â¦G,K1⦠⢠â¬[h] K2 & â¦G,K1⦠⢠I1 â¬[h] I2 & L2 = K2.â{I2}. /2 width=1 by lex_inv_bind_sn/ qed-. (* Basic_2A1: was: lpx_inv_atom2 *) -lemma lpx_inv_atom_dx: âh,G,L1. â¦G, L1⦠⢠â¬[h] â â L1 = â. +lemma lpx_inv_atom_dx: âh,G,L1. â¦G,L1⦠⢠â¬[h] â â L1 = â. /2 width=2 by lex_inv_atom_dx/ qed-. -lemma lpx_inv_bind_dx (h) (G): âI2,L1,K2. â¦G, L1⦠⢠â¬[h] K2.â{I2} â - ââI1,K1. â¦G, K1⦠⢠â¬[h] K2 & â¦G, K1⦠⢠I1 â¬[h] I2 & +lemma lpx_inv_bind_dx (h) (G): âI2,L1,K2. â¦G,L1⦠⢠â¬[h] K2.â{I2} â + ââI1,K1. â¦G,K1⦠⢠â¬[h] K2 & â¦G,K1⦠⢠I1 â¬[h] I2 & L1 = K1.â{I1}. /2 width=1 by lex_inv_bind_dx/ qed-. (* Advanced inversion lemmas ************************************************) -lemma lpx_inv_unit_sn (h) (G): âI,L2,K1. â¦G, K1.â¤{I}⦠⢠â¬[h] L2 â - ââK2. â¦G, K1⦠⢠â¬[h] K2 & L2 = K2.â¤{I}. +lemma lpx_inv_unit_sn (h) (G): âI,L2,K1. â¦G,K1.â¤{I}⦠⢠â¬[h] L2 â + ââK2. â¦G,K1⦠⢠â¬[h] K2 & L2 = K2.â¤{I}. /2 width=1 by lex_inv_unit_sn/ qed-. (* Basic_2A1: was: lpx_inv_pair1 *) -lemma lpx_inv_pair_sn (h) (G): âI,L2,K1,V1. â¦G, K1.â{I}V1⦠⢠â¬[h] L2 â - ââK2,V2. â¦G, K1⦠⢠â¬[h] K2 & â¦G, K1⦠⢠V1 â¬[h] V2 & +lemma lpx_inv_pair_sn (h) (G): âI,L2,K1,V1. â¦G,K1.â{I}V1⦠⢠â¬[h] L2 â + ââK2,V2. â¦G,K1⦠⢠â¬[h] K2 & â¦G,K1⦠⢠V1 â¬[h] V2 & L2 = K2.â{I}V2. /2 width=1 by lex_inv_pair_sn/ qed-. -lemma lpx_inv_unit_dx (h) (G): âI,L1,K2. â¦G, L1⦠⢠â¬[h] K2.â¤{I} â - ââK1. â¦G, K1⦠⢠â¬[h] K2 & L1 = K1.â¤{I}. +lemma lpx_inv_unit_dx (h) (G): âI,L1,K2. â¦G,L1⦠⢠â¬[h] K2.â¤{I} â + ââK1. â¦G,K1⦠⢠â¬[h] K2 & L1 = K1.â¤{I}. /2 width=1 by lex_inv_unit_dx/ qed-. (* Basic_2A1: was: lpx_inv_pair2 *) -lemma lpx_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G, L1⦠⢠â¬[h] K2.â{I}V2 â - ââK1,V1. â¦G, K1⦠⢠â¬[h] K2 & â¦G, K1⦠⢠V1 â¬[h] V2 & +lemma lpx_inv_pair_dx (h) (G): âI,L1,K2,V2. â¦G,L1⦠⢠â¬[h] K2.â{I}V2 â + ââK1,V1. â¦G,K1⦠⢠â¬[h] K2 & â¦G,K1⦠⢠V1 â¬[h] V2 & L1 = K1.â{I}V1. /2 width=1 by lex_inv_pair_dx/ qed-. -lemma lpx_inv_pair (h) (G): âI1,I2,L1,L2,V1,V2. â¦G, L1.â{I1}V1⦠⢠â¬[h] L2.â{I2}V2 â - â§â§ â¦G, L1⦠⢠â¬[h] L2 & â¦G, L1⦠⢠V1 â¬[h] V2 & I1 = I2. +lemma lpx_inv_pair (h) (G): âI1,I2,L1,L2,V1,V2. â¦G,L1.â{I1}V1⦠⢠â¬[h] L2.â{I2}V2 â + â§â§ â¦G,L1⦠⢠â¬[h] L2 & â¦G,L1⦠⢠V1 â¬[h] V2 & I1 = I2. /2 width=1 by lex_inv_pair/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_aaa.ma index 85ff65ecc..6e2319f19 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_aaa.ma @@ -22,9 +22,9 @@ include "basic_2/rt_transition/lpx_drops.ma". (* Note: lemma 500 *) (* Basic_2A1: was: cpx_lpx_aaa_conf *) -lemma cpx_aaa_conf_lpx (h): âG,L1,T1,A. â¦G, L1⦠⢠T1 â A â - âT2. â¦G, L1⦠⢠T1 â¬[h] T2 â - âL2. â¦G, L1⦠⢠â¬[h] L2 â â¦G, L2⦠⢠T2 â A. +lemma cpx_aaa_conf_lpx (h): âG,L1,T1,A. â¦G,L1⦠⢠T1 â A â + âT2. â¦G,L1⦠⢠T1 â¬[h] T2 â + âL2. â¦G,L1⦠⢠â¬[h] L2 â â¦G,L2⦠⢠T2 â A. #h #G #L1 #T1 #A #H elim H -G -L1 -T1 -A [ #G #L1 #s #X #H elim (cpx_inv_sort1 ⦠H) -H #H destruct // diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fquq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fquq.ma index 11ae99e7d..e6393d4ae 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fquq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fquq.ma @@ -19,9 +19,9 @@ include "basic_2/rt_transition/lpx.ma". (* Properties with extended structural successor for closures ***************) -lemma lpx_fqu_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âK1. â¦G1, K1⦠⢠â¬[h] L1 â - ââK2,T. â¦G1, K1⦠⢠T1 â¬[h] T & â¦G1, K1, T⦠â[b] â¦G2, K2, T2⦠& â¦G2, K2⦠⢠â¬[h] L2. +lemma lpx_fqu_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âK1. â¦G1,K1⦠⢠â¬[h] L1 â + ââK2,T. â¦G1,K1⦠⢠T1 â¬[h] T & â¦G1,K1,T⦠â[b] â¦G2,K2,T2⦠& â¦G2,K2⦠⢠â¬[h] L2. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ #I #G #K #V #K1 #H elim (lpx_inv_pair_dx ⦠H) -H #K0 #V0 #HK0 #HV0 #H destruct @@ -37,9 +37,9 @@ lemma lpx_fqu_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2 ] qed-. -lemma fqu_lpx_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - âK2. â¦G2, L2⦠⢠â¬[h] K2 â - ââK1,T. â¦G1, L1⦠⢠â¬[h] K1 & â¦G1, L1⦠⢠T1 â¬[h] T & â¦G1, K1, T⦠â[b] â¦G2, K2, T2â¦. +lemma fqu_lpx_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + âK2. â¦G2,L2⦠⢠â¬[h] K2 â + ââK1,T. â¦G1,L1⦠⢠â¬[h] K1 & â¦G1,L1⦠⢠T1 â¬[h] T & â¦G1,K1,T⦠â[b] â¦G2,K2,T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ /3 width=5 by lpx_bind_refl_dx, fqu_lref_O, ex3_2_intro/ | /3 width=5 by cpx_pair_sn, fqu_pair_sn, ex3_2_intro/ @@ -56,18 +56,18 @@ qed-. (* Properties with extended optional structural successor for closures ******) -lemma lpx_fquq_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âK1. â¦G1, K1⦠⢠â¬[h] L1 â - ââK2,T. â¦G1, K1⦠⢠T1 â¬[h] T & â¦G1, K1, T⦠â⸮[b] â¦G2, K2, T2⦠& â¦G2, K2⦠⢠â¬[h] L2. +lemma lpx_fquq_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âK1. â¦G1,K1⦠⢠â¬[h] L1 â + ââK2,T. â¦G1,K1⦠⢠T1 â¬[h] T & â¦G1,K1,T⦠â⸮[b] â¦G2,K2,T2⦠& â¦G2,K2⦠⢠â¬[h] L2. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 cases H -H [ #H12 elim (lpx_fqu_trans ⦠H12 ⦠HKL1) -L1 /3 width=5 by fqu_fquq, ex3_2_intro/ | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/ ] qed-. -lemma fquq_lpx_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - âK2. â¦G2, L2⦠⢠â¬[h] K2 â - ââK1,T. â¦G1, L1⦠⢠â¬[h] K1 & â¦G1, L1⦠⢠T1 â¬[h] T & â¦G1, K1, T⦠â⸮[b] â¦G2, K2, T2â¦. +lemma fquq_lpx_trans (h) (b): âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + âK2. â¦G2,L2⦠⢠â¬[h] K2 â + ââK1,T. â¦G1,L1⦠⢠â¬[h] K1 & â¦G1,L1⦠⢠T1 â¬[h] T & â¦G1,K1,T⦠â⸮[b] â¦G2,K2,T2â¦. #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K2 #HLK2 cases H -H [ #H12 elim (fqu_lpx_trans ⦠H12 ⦠HLK2) /3 width=5 by fqu_fquq, ex3_2_intro/ | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fsle.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fsle.ma index f40b6b627..ed3144625 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fsle.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fsle.ma @@ -19,10 +19,10 @@ include "basic_2/rt_transition/rpx_lpx.ma". (* Forward lemmas with free variables inclusion for restricted closures *****) (* Basic_2A1: uses: lpx_cpx_frees_trans *) -lemma lpx_cpx_conf_fsge (h) (G): âL0,T0,T1. â¦G, L0⦠⢠T0 â¬[h] T1 â - âL2. â¦G, L0⦠⢠â¬[h] L2 â â¦L2, T1⦠â â¦L0, T0â¦. +lemma lpx_cpx_conf_fsge (h) (G): âL0,T0,T1. â¦G,L0⦠⢠T0 â¬[h] T1 â + âL2. â¦G,L0⦠⢠â¬[h] L2 â â¦L2,T1⦠â â¦L0,T0â¦. /3 width=4 by rpx_cpx_conf_fsge, lpx_rpx/ qed-. (* Basic_2A1: uses: lpx_frees_trans *) -lemma lpx_fsge_comp (h) (G): âL0,L2,T0. â¦G, L0⦠⢠â¬[h] L2 â â¦L2, T0⦠â â¦L0, T0â¦. +lemma lpx_fsge_comp (h) (G): âL0,L2,T0. â¦G,L0⦠⢠â¬[h] L2 â â¦L2,T0⦠â â¦L0,T0â¦. /2 width=4 by lpx_cpx_conf_fsge/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_length.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_length.ma index 29b3e5e46..1c416b934 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_length.ma @@ -19,5 +19,5 @@ include "basic_2/rt_transition/lpx.ma". (* Forward lemmas with length for local environments ************************) -lemma lpx_fwd_length (h) (G): âL1,L2. â¦G, L1⦠⢠â¬[h] L2 â |L1| = |L2|. +lemma lpx_fwd_length (h) (G): âL1,L2. â¦G,L1⦠⢠â¬[h] L2 â |L1| = |L2|. /2 width=2 by lex_fwd_length/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma index 26fd8c129..8055506a6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma @@ -21,9 +21,9 @@ include "basic_2/rt_transition/rpx_lpx.ma". (* Properties with sort-irrelevant equivalence for local environments *******) (* Basic_2A1: uses: lleq_lpx_trans *) -lemma rdeq_lpx_trans (h) (G): âL2,K2. â¦G, L2⦠⢠â¬[h] K2 â +lemma rdeq_lpx_trans (h) (G): âL2,K2. â¦G,L2⦠⢠â¬[h] K2 â âL1. âT:term. L1 â[T] L2 â - ââK1. â¦G, L1⦠⢠â¬[h] K1 & K1 â[T] K2. + ââK1. â¦G,L1⦠⢠â¬[h] K1 & K1 â[T] K2. #h #G #L2 #K2 #HLK2 #L1 #T #HL12 lapply (lpx_rpx ⦠T HLK2) -HLK2 #HLK2 elim (rdeq_rpx_trans ⦠HLK2 ⦠HL12) -L2 #K #H #HK2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx.ma index f45abc6d7..70351ad4f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx.ma @@ -27,111 +27,111 @@ interpretation (* Basic properties ***********************************************************) -lemma rpx_atom: âh,I,G. â¦G, â⦠⢠â¬[h, âª{I}] â. +lemma rpx_atom: âh,I,G. â¦G,â⦠⢠â¬[h,âª{I}] â. /2 width=1 by rex_atom/ qed. lemma rpx_sort: âh,I1,I2,G,L1,L2,s. - â¦G, L1⦠⢠â¬[h, âs] L2 â â¦G, L1.â{I1}⦠⢠â¬[h, âs] L2.â{I2}. + â¦G,L1⦠⢠â¬[h,âs] L2 â â¦G,L1.â{I1}⦠⢠â¬[h,âs] L2.â{I2}. /2 width=1 by rex_sort/ qed. lemma rpx_pair: âh,I,G,L1,L2,V1,V2. - â¦G, L1⦠⢠â¬[h, V1] L2 â â¦G, L1⦠⢠V1 â¬[h] V2 â â¦G, L1.â{I}V1⦠⢠â¬[h, #0] L2.â{I}V2. + â¦G,L1⦠⢠â¬[h,V1] L2 â â¦G,L1⦠⢠V1 â¬[h] V2 â â¦G,L1.â{I}V1⦠⢠â¬[h,#0] L2.â{I}V2. /2 width=1 by rex_pair/ qed. lemma rpx_lref: âh,I1,I2,G,L1,L2,i. - â¦G, L1⦠⢠â¬[h, #i] L2 â â¦G, L1.â{I1}⦠⢠â¬[h, #âi] L2.â{I2}. + â¦G,L1⦠⢠â¬[h,#i] L2 â â¦G,L1.â{I1}⦠⢠â¬[h,#âi] L2.â{I2}. /2 width=1 by rex_lref/ qed. lemma rpx_gref: âh,I1,I2,G,L1,L2,l. - â¦G, L1⦠⢠â¬[h, §l] L2 â â¦G, L1.â{I1}⦠⢠â¬[h, §l] L2.â{I2}. + â¦G,L1⦠⢠â¬[h,§l] L2 â â¦G,L1.â{I1}⦠⢠â¬[h,§l] L2.â{I2}. /2 width=1 by rex_gref/ qed. lemma rpx_bind_repl_dx: âh,I,I1,G,L1,L2,T. - â¦G, L1.â{I}⦠⢠â¬[h, T] L2.â{I1} â - âI2. â¦G, L1⦠⢠I â¬[h] I2 â - â¦G, L1.â{I}⦠⢠â¬[h, T] L2.â{I2}. + â¦G,L1.â{I}⦠⢠â¬[h,T] L2.â{I1} â + âI2. â¦G,L1⦠⢠I â¬[h] I2 â + â¦G,L1.â{I}⦠⢠â¬[h,T] L2.â{I2}. /2 width=2 by rex_bind_repl_dx/ qed-. (* Basic inversion lemmas ***************************************************) -lemma rpx_inv_atom_sn: âh,G,Y2,T. â¦G, â⦠⢠â¬[h, T] Y2 â Y2 = â. +lemma rpx_inv_atom_sn: âh,G,Y2,T. â¦G,â⦠⢠â¬[h,T] Y2 â Y2 = â. /2 width=3 by rex_inv_atom_sn/ qed-. -lemma rpx_inv_atom_dx: âh,G,Y1,T. â¦G, Y1⦠⢠â¬[h, T] â â Y1 = â. +lemma rpx_inv_atom_dx: âh,G,Y1,T. â¦G,Y1⦠⢠â¬[h,T] â â Y1 = â. /2 width=3 by rex_inv_atom_dx/ qed-. -lemma rpx_inv_sort: âh,G,Y1,Y2,s. â¦G, Y1⦠⢠â¬[h, âs] Y2 â +lemma rpx_inv_sort: âh,G,Y1,Y2,s. â¦G,Y1⦠⢠â¬[h,âs] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI1,I2,L1,L2. â¦G, L1⦠⢠â¬[h, âs] L2 & + | ââI1,I2,L1,L2. â¦G,L1⦠⢠â¬[h,âs] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. /2 width=1 by rex_inv_sort/ qed-. -lemma rpx_inv_lref: âh,G,Y1,Y2,i. â¦G, Y1⦠⢠â¬[h, #âi] Y2 â +lemma rpx_inv_lref: âh,G,Y1,Y2,i. â¦G,Y1⦠⢠â¬[h,#âi] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI1,I2,L1,L2. â¦G, L1⦠⢠â¬[h, #i] L2 & + | ââI1,I2,L1,L2. â¦G,L1⦠⢠â¬[h,#i] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. /2 width=1 by rex_inv_lref/ qed-. -lemma rpx_inv_gref: âh,G,Y1,Y2,l. â¦G, Y1⦠⢠â¬[h, §l] Y2 â +lemma rpx_inv_gref: âh,G,Y1,Y2,l. â¦G,Y1⦠⢠â¬[h,§l] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI1,I2,L1,L2. â¦G, L1⦠⢠â¬[h, §l] L2 & + | ââI1,I2,L1,L2. â¦G,L1⦠⢠â¬[h,§l] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. /2 width=1 by rex_inv_gref/ qed-. -lemma rpx_inv_bind: âh,p,I,G,L1,L2,V,T. â¦G, L1⦠⢠â¬[h, â{p,I}V.T] L2 â - â§â§ â¦G, L1⦠⢠â¬[h, V] L2 & â¦G, L1.â{I}V⦠⢠â¬[h, T] L2.â{I}V. +lemma rpx_inv_bind: âh,p,I,G,L1,L2,V,T. â¦G,L1⦠⢠â¬[h,â{p,I}V.T] L2 â + â§â§ â¦G,L1⦠⢠â¬[h,V] L2 & â¦G,L1.â{I}V⦠⢠â¬[h,T] L2.â{I}V. /2 width=2 by rex_inv_bind/ qed-. -lemma rpx_inv_flat: âh,I,G,L1,L2,V,T. â¦G, L1⦠⢠â¬[h, â{I}V.T] L2 â - â§â§ â¦G, L1⦠⢠â¬[h, V] L2 & â¦G, L1⦠⢠â¬[h, T] L2. +lemma rpx_inv_flat: âh,I,G,L1,L2,V,T. â¦G,L1⦠⢠â¬[h,â{I}V.T] L2 â + â§â§ â¦G,L1⦠⢠â¬[h,V] L2 & â¦G,L1⦠⢠â¬[h,T] L2. /2 width=2 by rex_inv_flat/ qed-. (* Advanced inversion lemmas ************************************************) -lemma rpx_inv_sort_bind_sn: âh,I1,G,Y2,L1,s. â¦G, L1.â{I1}⦠⢠â¬[h, âs] Y2 â - ââI2,L2. â¦G, L1⦠⢠â¬[h, âs] L2 & Y2 = L2.â{I2}. +lemma rpx_inv_sort_bind_sn: âh,I1,G,Y2,L1,s. â¦G,L1.â{I1}⦠⢠â¬[h,âs] Y2 â + ââI2,L2. â¦G,L1⦠⢠â¬[h,âs] L2 & Y2 = L2.â{I2}. /2 width=2 by rex_inv_sort_bind_sn/ qed-. -lemma rpx_inv_sort_bind_dx: âh,I2,G,Y1,L2,s. â¦G, Y1⦠⢠â¬[h, âs] L2.â{I2} â - ââI1,L1. â¦G, L1⦠⢠â¬[h, âs] L2 & Y1 = L1.â{I1}. +lemma rpx_inv_sort_bind_dx: âh,I2,G,Y1,L2,s. â¦G,Y1⦠⢠â¬[h,âs] L2.â{I2} â + ââI1,L1. â¦G,L1⦠⢠â¬[h,âs] L2 & Y1 = L1.â{I1}. /2 width=2 by rex_inv_sort_bind_dx/ qed-. -lemma rpx_inv_zero_pair_sn: âh,I,G,Y2,L1,V1. â¦G, L1.â{I}V1⦠⢠â¬[h, #0] Y2 â - ââL2,V2. â¦G, L1⦠⢠â¬[h, V1] L2 & â¦G, L1⦠⢠V1 â¬[h] V2 & +lemma rpx_inv_zero_pair_sn: âh,I,G,Y2,L1,V1. â¦G,L1.â{I}V1⦠⢠â¬[h,#0] Y2 â + ââL2,V2. â¦G,L1⦠⢠â¬[h,V1] L2 & â¦G,L1⦠⢠V1 â¬[h] V2 & Y2 = L2.â{I}V2. /2 width=1 by rex_inv_zero_pair_sn/ qed-. -lemma rpx_inv_zero_pair_dx: âh,I,G,Y1,L2,V2. â¦G, Y1⦠⢠â¬[h, #0] L2.â{I}V2 â - ââL1,V1. â¦G, L1⦠⢠â¬[h, V1] L2 & â¦G, L1⦠⢠V1 â¬[h] V2 & +lemma rpx_inv_zero_pair_dx: âh,I,G,Y1,L2,V2. â¦G,Y1⦠⢠â¬[h,#0] L2.â{I}V2 â + ââL1,V1. â¦G,L1⦠⢠â¬[h,V1] L2 & â¦G,L1⦠⢠V1 â¬[h] V2 & Y1 = L1.â{I}V1. /2 width=1 by rex_inv_zero_pair_dx/ qed-. -lemma rpx_inv_lref_bind_sn: âh,I1,G,Y2,L1,i. â¦G, L1.â{I1}⦠⢠â¬[h, #âi] Y2 â - ââI2,L2. â¦G, L1⦠⢠â¬[h, #i] L2 & Y2 = L2.â{I2}. +lemma rpx_inv_lref_bind_sn: âh,I1,G,Y2,L1,i. â¦G,L1.â{I1}⦠⢠â¬[h,#âi] Y2 â + ââI2,L2. â¦G,L1⦠⢠â¬[h,#i] L2 & Y2 = L2.â{I2}. /2 width=2 by rex_inv_lref_bind_sn/ qed-. -lemma rpx_inv_lref_bind_dx: âh,I2,G,Y1,L2,i. â¦G, Y1⦠⢠â¬[h, #âi] L2.â{I2} â - ââI1,L1. â¦G, L1⦠⢠â¬[h, #i] L2 & Y1 = L1.â{I1}. +lemma rpx_inv_lref_bind_dx: âh,I2,G,Y1,L2,i. â¦G,Y1⦠⢠â¬[h,#âi] L2.â{I2} â + ââI1,L1. â¦G,L1⦠⢠â¬[h,#i] L2 & Y1 = L1.â{I1}. /2 width=2 by rex_inv_lref_bind_dx/ qed-. -lemma rpx_inv_gref_bind_sn: âh,I1,G,Y2,L1,l. â¦G, L1.â{I1}⦠⢠â¬[h, §l] Y2 â - ââI2,L2. â¦G, L1⦠⢠â¬[h, §l] L2 & Y2 = L2.â{I2}. +lemma rpx_inv_gref_bind_sn: âh,I1,G,Y2,L1,l. â¦G,L1.â{I1}⦠⢠â¬[h,§l] Y2 â + ââI2,L2. â¦G,L1⦠⢠â¬[h,§l] L2 & Y2 = L2.â{I2}. /2 width=2 by rex_inv_gref_bind_sn/ qed-. -lemma rpx_inv_gref_bind_dx: âh,I2,G,Y1,L2,l. â¦G, Y1⦠⢠â¬[h, §l] L2.â{I2} â - ââI1,L1. â¦G, L1⦠⢠â¬[h, §l] L2 & Y1 = L1.â{I1}. +lemma rpx_inv_gref_bind_dx: âh,I2,G,Y1,L2,l. â¦G,Y1⦠⢠â¬[h,§l] L2.â{I2} â + ââI1,L1. â¦G,L1⦠⢠â¬[h,§l] L2 & Y1 = L1.â{I1}. /2 width=2 by rex_inv_gref_bind_dx/ qed-. (* Basic forward lemmas *****************************************************) lemma rpx_fwd_pair_sn: âh,I,G,L1,L2,V,T. - â¦G, L1⦠⢠â¬[h, â¡{I}V.T] L2 â â¦G, L1⦠⢠â¬[h, V] L2. + â¦G,L1⦠⢠â¬[h,â¡{I}V.T] L2 â â¦G,L1⦠⢠â¬[h,V] L2. /2 width=3 by rex_fwd_pair_sn/ qed-. lemma rpx_fwd_bind_dx: âh,p,I,G,L1,L2,V,T. - â¦G, L1⦠⢠â¬[h, â{p,I}V.T] L2 â â¦G, L1.â{I}V⦠⢠â¬[h, T] L2.â{I}V. + â¦G,L1⦠⢠â¬[h,â{p,I}V.T] L2 â â¦G,L1.â{I}V⦠⢠â¬[h,T] L2.â{I}V. /2 width=2 by rex_fwd_bind_dx/ qed-. lemma rpx_fwd_flat_dx: âh,I,G,L1,L2,V,T. - â¦G, L1⦠⢠â¬[h, â{I}V.T] L2 â â¦G, L1⦠⢠â¬[h, T] L2. + â¦G,L1⦠⢠â¬[h,â{I}V.T] L2 â â¦G,L1⦠⢠â¬[h,T] L2. /2 width=3 by rex_fwd_flat_dx/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fqup.ma index 8a71e9b6a..43f6f81b2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fqup.ma @@ -22,18 +22,18 @@ include "basic_2/rt_transition/rpx.ma". lemma rpx_refl: âh,G,T. reflexive ⦠(rpx h G T). /2 width=1 by rex_refl/ qed. -lemma rpx_pair_refl: âh,G,L,V1,V2. â¦G, L⦠⢠V1 â¬[h] V2 â - âI,T. â¦G, L.â{I}V1⦠⢠â¬[h, T] L.â{I}V2. +lemma rpx_pair_refl: âh,G,L,V1,V2. â¦G,L⦠⢠V1 â¬[h] V2 â + âI,T. â¦G,L.â{I}V1⦠⢠â¬[h,T] L.â{I}V2. /2 width=1 by rex_pair_refl/ qed. (* Advanced inversion lemmas ************************************************) -lemma rpx_inv_bind_void: âh,p,I,G,L1,L2,V,T. â¦G, L1⦠⢠â¬[h, â{p,I}V.T] L2 â - â§â§ â¦G, L1⦠⢠â¬[h, V] L2 & â¦G, L1.â§â¦ ⢠â¬[h, T] L2.â§. +lemma rpx_inv_bind_void: âh,p,I,G,L1,L2,V,T. â¦G,L1⦠⢠â¬[h,â{p,I}V.T] L2 â + â§â§ â¦G,L1⦠⢠â¬[h,V] L2 & â¦G,L1.â§â¦ ⢠â¬[h,T] L2.â§. /2 width=3 by rex_inv_bind_void/ qed-. (* Advanced forward lemmas **************************************************) lemma rpx_fwd_bind_dx_void: âh,p,I,G,L1,L2,V,T. - â¦G, L1⦠⢠â¬[h, â{p,I}V.T] L2 â â¦G, L1.â§â¦ ⢠â¬[h, T] L2.â§. + â¦G,L1⦠⢠â¬[h,â{p,I}V.T] L2 â â¦G,L1.â§â¦ ⢠â¬[h,T] L2.â§. /2 width=4 by rex_fwd_bind_dx_void/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma index fd4ddc459..6d9db8b65 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma @@ -24,9 +24,9 @@ include "basic_2/rt_transition/rpx_fqup.ma". (* Note: "â¦L2, T1⦠â â¦L2, T0â¦" does not hold *) (* Note: Take L0 = K0.â(âW.V), L2 = K0.âW, T0 = #0, T1 = â¬*[1]V *) -(* Note: This invalidates rpxs_cpx_conf: "âh,G. s_r_confluent1 ⦠(cpx h G) (rpxs h G)" *) -lemma rpx_cpx_conf_fsge (h) (G): âL0,T0,T1. â¦G, L0⦠⢠T0 â¬[h] T1 â - âL2. â¦G, L0⦠â¢â¬[h, T0] L2 â â¦L2, T1⦠â â¦L0, T0â¦. +(* Note: This invalidates rpxs_cpx_conf: "âh, G. s_r_confluent1 ⦠(cpx h G) (rpxs h G)" *) +lemma rpx_cpx_conf_fsge (h) (G): âL0,T0,T1. â¦G,L0⦠⢠T0 â¬[h] T1 â + âL2. â¦G,L0⦠â¢â¬[h,T0] L2 â â¦L2,T1⦠â â¦L0,T0â¦. #h #G0 #L0 #T0 @(fqup_wf_ind_eq (â») ⦠G0 L0 T0) -G0 -L0 -T0 #G #L #T #IH #G0 #L0 * * [ #s #HG #HL #HT #X #HX #Y #HY destruct -IH @@ -133,6 +133,6 @@ lemma cpx_rex_conf (R) (h) (G): s_r_confluent1 ⦠(cpx h G) (rex R). lemma rpx_cpx_conf (h) (G): s_r_confluent1 ⦠(cpx h G) (rpx h G). /2 width=5 by cpx_rex_conf/ qed-. -lemma rpx_cpx_conf_fsge_dx (h) (G): âL0,T0,T1. â¦G, L0⦠⢠T0 â¬[h] T1 â - âL2. â¦G, L0⦠â¢â¬[h, T0] L2 â â¦L2, T1⦠â â¦L0, T1â¦. +lemma rpx_cpx_conf_fsge_dx (h) (G): âL0,T0,T1. â¦G,L0⦠⢠T0 â¬[h] T1 â + âL2. â¦G,L0⦠â¢â¬[h,T0] L2 â â¦L2,T1⦠â â¦L0,T1â¦. /3 width=5 by rpx_cpx_conf, rpx_fsge_comp/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_length.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_length.ma index 209b010ed..45a052c67 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_length.ma @@ -19,15 +19,15 @@ include "basic_2/rt_transition/rpx.ma". (* Forward lemmas with length for local environments ************************) -lemma rpx_fwd_length: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬[h, T] L2 â |L1| = |L2|. +lemma rpx_fwd_length: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬[h,T] L2 â |L1| = |L2|. /2 width=3 by rex_fwd_length/ qed-. (* Inversion lemmas with length for local environments **********************) -lemma rpx_inv_zero_length: âh,G,Y1,Y2. â¦G, Y1⦠⢠â¬[h, #0] Y2 â +lemma rpx_inv_zero_length: âh,G,Y1,Y2. â¦G,Y1⦠⢠â¬[h,#0] Y2 â â¨â¨ â§â§ Y1 = â & Y2 = â - | ââI,L1,L2,V1,V2. â¦G, L1⦠⢠â¬[h, V1] L2 & - â¦G, L1⦠⢠V1 â¬[h] V2 & + | ââI,L1,L2,V1,V2. â¦G,L1⦠⢠â¬[h,V1] L2 & + â¦G,L1⦠⢠V1 â¬[h] V2 & Y1 = L1.â{I}V1 & Y2 = L2.â{I}V2 | ââI,L1,L2. |L1| = |L2| & Y1 = L1.â¤{I} & Y2 = L2.â¤{I}. /2 width=1 by rex_inv_zero_length/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_lpx.ma index 24e840b1f..ba4a29ec5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_lpx.ma @@ -20,16 +20,16 @@ include "basic_2/rt_transition/lpx.ma". (* Properties with syntactic equivalence for referred local environments ****) -lemma fleq_rpx (h) (G): âL1,L2,T. L1 â¡[T] L2 â â¦G, L1⦠⢠â¬[h, T] L2. +lemma fleq_rpx (h) (G): âL1,L2,T. L1 â¡[T] L2 â â¦G,L1⦠⢠â¬[h,T] L2. /2 width=1 by req_fwd_rex/ qed. (* Properties with unbound parallel rt-transition for full local envs *******) -lemma lpx_rpx: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬[h] L2 â â¦G, L1⦠⢠â¬[h, T] L2. +lemma lpx_rpx: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬[h] L2 â â¦G,L1⦠⢠â¬[h,T] L2. /2 width=1 by rex_lex/ qed. (* Inversion lemmas with unbound parallel rt-transition for full local envs *) -lemma rpx_inv_lpx_req: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬[h, T] L2 â - ââL. â¦G, L1⦠⢠â¬[h] L & L â¡[T] L2. +lemma rpx_inv_lpx_req: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬[h,T] L2 â + ââL. â¦G,L1⦠⢠â¬[h] L & L â¡[T] L2. /3 width=3 by rpx_fsge_comp, rex_inv_lex_req/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma index cb3c4b7a5..602285337 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma @@ -21,27 +21,27 @@ include "basic_2/rt_transition/rpx_fsle.ma". (* Properties with sort-irrelevant equivalence for local environments *******) -lemma rpx_pair_sn_split: âh,G,L1,L2,V. â¦G, L1⦠⢠â¬[h, V] L2 â âI,T. - ââL. â¦G, L1⦠⢠â¬[h, â¡{I}V.T] L & L â[V] L2. +lemma rpx_pair_sn_split: âh,G,L1,L2,V. â¦G,L1⦠⢠â¬[h,V] L2 â âI,T. + ââL. â¦G,L1⦠⢠â¬[h,â¡{I}V.T] L & L â[V] L2. /3 width=5 by rpx_fsge_comp, rex_pair_sn_split/ qed-. -lemma rpx_flat_dx_split: âh,G,L1,L2,T. â¦G, L1⦠⢠â¬[h, T] L2 â âI,V. - ââL. â¦G, L1⦠⢠â¬[h, â{I}V.T] L & L â[T] L2. +lemma rpx_flat_dx_split: âh,G,L1,L2,T. â¦G,L1⦠⢠â¬[h,T] L2 â âI,V. + ââL. â¦G,L1⦠⢠â¬[h,â{I}V.T] L & L â[T] L2. /3 width=5 by rpx_fsge_comp, rex_flat_dx_split/ qed-. -lemma rpx_bind_dx_split: âh,I,G,L1,L2,V1,T. â¦G, L1.â{I}V1⦠⢠â¬[h, T] L2 â âp. - ââL,V. â¦G, L1⦠⢠â¬[h, â{p,I}V1.T] L & L.â{I}V â[T] L2 & â¦G, L1⦠⢠V1 â¬[h] V. +lemma rpx_bind_dx_split: âh,I,G,L1,L2,V1,T. â¦G,L1.â{I}V1⦠⢠â¬[h,T] L2 â âp. + ââL,V. â¦G,L1⦠⢠â¬[h,â{p,I}V1.T] L & L.â{I}V â[T] L2 & â¦G,L1⦠⢠V1 â¬[h] V. /3 width=5 by rpx_fsge_comp, rex_bind_dx_split/ qed-. -lemma rpx_bind_dx_split_void: âh,G,K1,L2,T. â¦G, K1.â§â¦ ⢠â¬[h, T] L2 â âp,I,V. - ââK2. â¦G, K1⦠⢠â¬[h, â{p,I}V.T] K2 & K2.⧠â[T] L2. +lemma rpx_bind_dx_split_void: âh,G,K1,L2,T. â¦G,K1.â§â¦ ⢠â¬[h,T] L2 â âp,I,V. + ââK2. â¦G,K1⦠⢠â¬[h,â{p,I}V.T] K2 & K2.⧠â[T] L2. /3 width=5 by rpx_fsge_comp, rex_bind_dx_split_void/ qed-. lemma rpx_tdeq_conf: âh,G. s_r_confluent1 ⦠cdeq (rpx h G). /2 width=5 by tdeq_rex_conf/ qed-. lemma rpx_tdeq_div: âh,T1,T2. T1 â T2 â - âG,L1,L2. â¦G, L1⦠⢠â¬[h, T2] L2 â â¦G, L1⦠⢠â¬[h, T1] L2. + âG,L1,L2. â¦G,L1⦠⢠â¬[h,T2] L2 â â¦G,L1⦠⢠â¬[h,T1] L2. /2 width=5 by tdeq_rex_div/ qed-. lemma cpx_tdeq_conf_sex: âh,G. R_confluent2_rex ⦠(cpx h G) cdeq (cpx h G) cdeq. @@ -125,25 +125,25 @@ lemma cpx_tdeq_conf_sex: âh,G. R_confluent2_rex ⦠(cpx h G) cdeq (cpx h G) c ] qed-. -lemma cpx_tdeq_conf: âh,G,L. âT0:term. âT1. â¦G, L⦠⢠T0 â¬[h] T1 â +lemma cpx_tdeq_conf: âh,G,L. âT0:term. âT1. â¦G,L⦠⢠T0 â¬[h] T1 â âT2. T0 â T2 â - ââT. T1 â T & â¦G, L⦠⢠T2 â¬[h] T. + ââT. T1 â T & â¦G,L⦠⢠T2 â¬[h] T. #h #G #L #T0 #T1 #HT01 #T2 #HT02 elim (cpx_tdeq_conf_sex ⦠HT01 ⦠HT02 L ⦠L) -HT01 -HT02 /2 width=3 by rex_refl, ex2_intro/ qed-. lemma tdeq_cpx_trans: âh,G,L,T2. âT0:term. T2 â T0 â - âT1. â¦G, L⦠⢠T0 â¬[h] T1 â - ââT. â¦G, L⦠⢠T2 â¬[h] T & T â T1. + âT1. â¦G,L⦠⢠T0 â¬[h] T1 â + ââT. â¦G,L⦠⢠T2 â¬[h] T & T â T1. #h #G #L #T2 #T0 #HT20 #T1 #HT01 elim (cpx_tdeq_conf ⦠HT01 T2) -HT01 /3 width=3 by tdeq_sym, ex2_intro/ qed-. (* Basic_2A1: uses: cpx_lleq_conf *) -lemma cpx_rdeq_conf: âh,G,L0,T0,T1. â¦G, L0⦠⢠T0 â¬[h] T1 â +lemma cpx_rdeq_conf: âh,G,L0,T0,T1. â¦G,L0⦠⢠T0 â¬[h] T1 â âL2. L0 â[T0] L2 â - ââT. â¦G, L2⦠⢠T0 â¬[h] T & T1 â T. + ââT. â¦G,L2⦠⢠T0 â¬[h] T & T1 â T. #h #G #L0 #T0 #T1 #HT01 #L2 #HL02 elim (cpx_tdeq_conf_sex ⦠HT01 T0 ⦠L0 ⦠HL02) -HT01 -HL02 /2 width=3 by rex_refl, ex2_intro/ @@ -151,8 +151,8 @@ qed-. (* Basic_2A1: uses: lleq_cpx_trans *) lemma rdeq_cpx_trans: âh,G,L2,L0,T0. L2 â[T0] L0 â - âT1. â¦G, L0⦠⢠T0 â¬[h] T1 â - ââT. â¦G, L2⦠⢠T0 â¬[h] T & T â T1. + âT1. â¦G,L0⦠⢠T0 â¬[h] T1 â + ââT. â¦G,L2⦠⢠T0 â¬[h] T & T â T1. #h #G #L2 #L0 #T0 #HL20 #T1 #HT01 elim (cpx_rdeq_conf ⦠HT01 L2) -HT01 /3 width=3 by rdeq_sym, tdeq_sym, ex2_intro/ @@ -161,9 +161,9 @@ qed-. lemma rpx_rdeq_conf: âh,G,T. confluent2 ⦠(rpx h G T) (rdeq T). /3 width=6 by rpx_fsge_comp, rdeq_fsge_comp, cpx_tdeq_conf_sex, rex_conf/ qed-. -lemma rdeq_rpx_trans: âh,G,T,L2,K2. â¦G, L2⦠⢠â¬[h, T] K2 â +lemma rdeq_rpx_trans: âh,G,T,L2,K2. â¦G,L2⦠⢠â¬[h,T] K2 â âL1. L1 â[T] L2 â - ââK1. â¦G, L1⦠⢠â¬[h, T] K1 & K1 â[T] K2. + ââK1. â¦G,L1⦠⢠â¬[h,T] K1 & K1 â[T] K2. #h #G #T #L2 #K2 #HLK2 #L1 #HL12 elim (rpx_rdeq_conf ⦠HLK2 L1) /3 width=3 by rdeq_sym, ex2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rpx.ma index 56899e45d..8b6716c10 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rpx.ma @@ -19,16 +19,16 @@ include "basic_2/rt_transition/rpx.ma". (* Main properties **********************************************************) -theorem rpx_bind: âh,G,L1,L2,V1. â¦G, L1⦠⢠â¬[h, V1] L2 â - âI,V2,T. â¦G, L1.â{I}V1⦠⢠â¬[h, T] L2.â{I}V2 â - âp. â¦G, L1⦠⢠â¬[h, â{p,I}V1.T] L2. +theorem rpx_bind: âh,G,L1,L2,V1. â¦G,L1⦠⢠â¬[h,V1] L2 â + âI,V2,T. â¦G,L1.â{I}V1⦠⢠â¬[h,T] L2.â{I}V2 â + âp. â¦G,L1⦠⢠â¬[h,â{p,I}V1.T] L2. /2 width=2 by rex_bind/ qed. -theorem rpx_flat: âh,G,L1,L2,V. â¦G, L1⦠⢠â¬[h, V] L2 â - âI,T. â¦G, L1⦠⢠â¬[h, T] L2 â â¦G, L1⦠⢠â¬[h, â{I}V.T] L2. +theorem rpx_flat: âh,G,L1,L2,V. â¦G,L1⦠⢠â¬[h,V] L2 â + âI,T. â¦G,L1⦠⢠â¬[h,T] L2 â â¦G,L1⦠⢠â¬[h,â{I}V.T] L2. /2 width=1 by rex_flat/ qed. -theorem rpx_bind_void: âh,G,L1,L2,V. â¦G, L1⦠⢠â¬[h, V] L2 â - âT. â¦G, L1.â§â¦ ⢠â¬[h, T] L2.⧠â - âp,I. â¦G, L1⦠⢠â¬[h, â{p,I}V.T] L2. +theorem rpx_bind_void: âh,G,L1,L2,V. â¦G,L1⦠⢠â¬[h,V] L2 â + âT. â¦G,L1.â§â¦ ⢠â¬[h,T] L2.⧠â + âp,I. â¦G,L1⦠⢠â¬[h,â{p,I}V.T] L2. /2 width=1 by rex_bind_void/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/basic_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/basic_2.ma index f18cd54f3..5a122b8ec 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/basic_2.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/basic_2.ma @@ -14,6 +14,6 @@ (* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) -notation "hvbox( ðâ´ break term 46 l, break term 46 h âµ )" +notation "hvbox( ðâ´ term 46 l, break term 46 h âµ )" non associative with precedence 90 for @{ 'Basic $l $h }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma index 32741b07b..992179f98 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma @@ -14,6 +14,6 @@ (* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) -notation "hvbox(f2 ~ \circ break f1)" +notation "hvbox(f2 ~ \circ break f1)" (**) right associative with precedence 60 for @{ 'CoCompose $f2 $f1 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma index 1b10938b7..d74010073 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma @@ -14,6 +14,6 @@ (* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) -notation "hvbox( ⫱ * [ term 46 n ] term 46 T )" +notation "hvbox( ⫱ * [ term 46 n ] break term 46 T )" non associative with precedence 46 for @{ 'DropPreds $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma index 553c4e494..a0ab933d8 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma @@ -14,6 +14,6 @@ (* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) -notation "hvbox( â * [ term 46 n ] term 70 T )" +notation "hvbox( â * [ term 46 n ] break term 70 T )" non associative with precedence 70 for @{ 'UpArrowStar $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma index 12beff4ec..de75ff051 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma @@ -14,6 +14,6 @@ (* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) -notation "hvbox( ⫯ * [ term 46 n ] term 46 T )" +notation "hvbox( ⫯ * [ term 46 n ] break term 46 T )" non associative with precedence 46 for @{ 'UpSpoonStar $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma index e1ef5d287..94c561032 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma @@ -18,7 +18,7 @@ include "ground_2/relocation/mr2.ma". rec definition pluss (cs:mr2) (i:nat) on cs â match cs with [ nil2 â â -| cons2 l m cs â {l + i, m};pluss cs i +| cons2 l m cs â {l + i,m};pluss cs i ]. interpretation "plus (multiple relocation with pairs)" @@ -26,7 +26,7 @@ interpretation "plus (multiple relocation with pairs)" (* Basic properties *********************************************************) -lemma pluss_SO2: âl,m,cs. ({l, m};cs) + 1 = {âl, m};cs + 1. +lemma pluss_SO2: âl,m,cs. ({l,m};cs) + 1 = {âl,m};cs + 1. normalize // qed. (* Basic inversion lemmas ***************************************************) @@ -36,8 +36,8 @@ lemma pluss_inv_nil2: âi,cs. cs + i = â â cs = â. #l #m #cs #H destruct qed. -lemma pluss_inv_cons2: âi,l,m,cs2,cs. cs + i = {l, m};cs2 â - ââcs1. cs1 + i = cs2 & cs = {l - i, m};cs1. +lemma pluss_inv_cons2: âi,l,m,cs2,cs. cs + i = {l,m};cs2 â + ââcs1. cs1 + i = cs2 & cs = {l - i,m};cs1. #i #l #m #cs2 * [ normalize #H destruct | #l1 #m1 #cs1 whd in ⢠(??%?â?); #H destruct diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_at.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_at.ma index 4a03364b8..93980c881 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_at.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_at.ma @@ -27,20 +27,20 @@ interpretation "relational application (rtmap)" 'RAt i1 f i2 = (at f i1 i2). definition H_at_div: relation4 rtmap rtmap rtmap rtmap â λf2,g2,f1,g1. - âjf,jg,j. @â¦jf, f2⦠â j â @â¦jg, g2⦠â j â - ââj0. @â¦j0, f1⦠â jf & @â¦j0, g1⦠â jg. + âjf,jg,j. @â¦jf,f2⦠â j â @â¦jg,g2⦠â j â + ââj0. @â¦j0,f1⦠â jf & @â¦j0,g1⦠â jg. (* Basic inversion lemmas ***************************************************) -lemma at_inv_ppx: âf,i1,i2. @â¦i1, f⦠â i2 â âg. 0 = i1 â ⫯g = f â 0 = i2. +lemma at_inv_ppx: âf,i1,i2. @â¦i1,f⦠â i2 â âg. 0 = i1 â ⫯g = f â 0 = i2. #f #i1 #i2 * -f -i1 -i2 // [ #f #i1 #i2 #_ #g #j1 #j2 #_ * #_ #x #H destruct | #f #i1 #i2 #_ #g #j2 * #_ #x #_ #H elim (discr_push_next ⦠H) ] qed-. -lemma at_inv_npx: âf,i1,i2. @â¦i1, f⦠â i2 â âg,j1. âj1 = i1 â ⫯g = f â - ââj2. @â¦j1, g⦠â j2 & âj2 = i2. +lemma at_inv_npx: âf,i1,i2. @â¦i1,f⦠â i2 â âg,j1. âj1 = i1 â ⫯g = f â + ââj2. @â¦j1,g⦠â j2 & âj2 = i2. #f #i1 #i2 * -f -i1 -i2 [ #f #g #j1 #j2 #_ * #_ #x #x1 #H destruct | #f #i1 #i2 #Hi #g #j1 #j2 * * * #x #x1 #H #Hf >(injective_push ⦠Hf) -g destruct /2 width=3 by ex2_intro/ @@ -48,8 +48,8 @@ lemma at_inv_npx: âf,i1,i2. @â¦i1, f⦠â i2 â âg,j1. âj1 = i1 â ] qed-. -lemma at_inv_xnx: âf,i1,i2. @â¦i1, f⦠â i2 â âg. âg = f â - ââj2. @â¦i1, g⦠â j2 & âj2 = i2. +lemma at_inv_xnx: âf,i1,i2. @â¦i1,f⦠â i2 â âg. âg = f â + ââj2. @â¦i1,g⦠â j2 & âj2 = i2. #f #i1 #i2 * -f -i1 -i2 [ #f #g #j1 #j2 * #_ #_ #x #H elim (discr_next_push ⦠H) | #f #i1 #i2 #_ #g #j1 #j2 * #_ #_ #x #H elim (discr_next_push ⦠H) @@ -59,43 +59,43 @@ qed-. (* Advanced inversion lemmas ************************************************) -lemma at_inv_ppn: âf,i1,i2. @â¦i1, f⦠â i2 â +lemma at_inv_ppn: âf,i1,i2. @â¦i1,f⦠â i2 â âg,j2. 0 = i1 â ⫯g = f â âj2 = i2 â â¥. #f #i1 #i2 #Hf #g #j2 #H1 #H <(at_inv_ppx ⦠Hf ⦠H1 H) -f -g -i1 -i2 #H destruct qed-. -lemma at_inv_npp: âf,i1,i2. @â¦i1, f⦠â i2 â +lemma at_inv_npp: âf,i1,i2. @â¦i1,f⦠â i2 â âg,j1. âj1 = i1 â ⫯g = f â 0 = i2 â â¥. #f #i1 #i2 #Hf #g #j1 #H1 #H elim (at_inv_npx ⦠Hf ⦠H1 H) -f -i1 #x2 #Hg * -i2 #H destruct qed-. -lemma at_inv_npn: âf,i1,i2. @â¦i1, f⦠â i2 â - âg,j1,j2. âj1 = i1 â ⫯g = f â âj2 = i2 â @â¦j1, g⦠â j2. +lemma at_inv_npn: âf,i1,i2. @â¦i1,f⦠â i2 â + âg,j1,j2. âj1 = i1 â ⫯g = f â âj2 = i2 â @â¦j1,g⦠â j2. #f #i1 #i2 #Hf #g #j1 #j2 #H1 #H elim (at_inv_npx ⦠Hf ⦠H1 H) -f -i1 #x2 #Hg * -i2 #H destruct // qed-. -lemma at_inv_xnp: âf,i1,i2. @â¦i1, f⦠â i2 â +lemma at_inv_xnp: âf,i1,i2. @â¦i1,f⦠â i2 â âg. âg = f â 0 = i2 â â¥. #f #i1 #i2 #Hf #g #H elim (at_inv_xnx ⦠Hf ⦠H) -f #x2 #Hg * -i2 #H destruct qed-. -lemma at_inv_xnn: âf,i1,i2. @â¦i1, f⦠â i2 â - âg,j2. âg = f â âj2 = i2 â @â¦i1, g⦠â j2. +lemma at_inv_xnn: âf,i1,i2. @â¦i1,f⦠â i2 â + âg,j2. âg = f â âj2 = i2 â @â¦i1,g⦠â j2. #f #i1 #i2 #Hf #g #j2 #H elim (at_inv_xnx ⦠Hf ⦠H) -f #x2 #Hg * -i2 #H destruct // qed-. -lemma at_inv_pxp: âf,i1,i2. @â¦i1, f⦠â i2 â 0 = i1 â 0 = i2 â âg. ⫯g = f. +lemma at_inv_pxp: âf,i1,i2. @â¦i1,f⦠â i2 â 0 = i1 â 0 = i2 â âg. ⫯g = f. #f elim (pn_split ⦠f) * /2 width=2 by ex_intro/ #g #H #i1 #i2 #Hf #H1 #H2 cases (at_inv_xnp ⦠Hf ⦠H H2) qed-. -lemma at_inv_pxn: âf,i1,i2. @â¦i1, f⦠â i2 â âj2. 0 = i1 â âj2 = i2 â - ââg. @â¦i1, g⦠â j2 & âg = f. +lemma at_inv_pxn: âf,i1,i2. @â¦i1,f⦠â i2 â âj2. 0 = i1 â âj2 = i2 â + ââg. @â¦i1,g⦠â j2 & âg = f. #f elim (pn_split ⦠f) * #g #H #i1 #i2 #Hf #j2 #H1 #H2 [ elim (at_inv_ppn ⦠Hf ⦠H1 H H2) @@ -103,7 +103,7 @@ lemma at_inv_pxn: âf,i1,i2. @â¦i1, f⦠â i2 â âj2. 0 = i1 â âj2 = ] qed-. -lemma at_inv_nxp: âf,i1,i2. @â¦i1, f⦠â i2 â +lemma at_inv_nxp: âf,i1,i2. @â¦i1,f⦠â i2 â âj1. âj1 = i1 â 0 = i2 â â¥. #f elim (pn_split f) * #g #H #i1 #i2 #Hf #j1 #H1 #H2 @@ -112,37 +112,37 @@ lemma at_inv_nxp: âf,i1,i2. @â¦i1, f⦠â i2 â ] qed-. -lemma at_inv_nxn: âf,i1,i2. @â¦i1, f⦠â i2 â âj1,j2. âj1 = i1 â âj2 = i2 â - (ââg. @â¦j1, g⦠â j2 & ⫯g = f) ⨠- ââg. @â¦i1, g⦠â j2 & âg = f. +lemma at_inv_nxn: âf,i1,i2. @â¦i1,f⦠â i2 â âj1,j2. âj1 = i1 â âj2 = i2 â + (ââg. @â¦j1,g⦠â j2 & ⫯g = f) ⨠+ ââg. @â¦i1,g⦠â j2 & âg = f. #f elim (pn_split f) * /4 width=7 by at_inv_xnn, at_inv_npn, ex2_intro, or_intror, or_introl/ qed-. (* Note: the following inversion lemmas must be checked *) -lemma at_inv_xpx: âf,i1,i2. @â¦i1, f⦠â i2 â âg. ⫯g = f â +lemma at_inv_xpx: âf,i1,i2. @â¦i1,f⦠â i2 â âg. ⫯g = f â (0 = i1 ⧠0 = i2) ⨠- ââj1,j2. @â¦j1, g⦠â j2 & âj1 = i1 & âj2 = i2. + ââj1,j2. @â¦j1,g⦠â j2 & âj1 = i1 & âj2 = i2. #f * [2: #i1 ] #i2 #Hf #g #H [ elim (at_inv_npx ⦠Hf ⦠H) -f /3 width=5 by or_intror, ex3_2_intro/ | >(at_inv_ppx ⦠Hf ⦠H) -f /3 width=1 by conj, or_introl/ ] qed-. -lemma at_inv_xpp: âf,i1,i2. @â¦i1, f⦠â i2 â âg. ⫯g = f â 0 = i2 â 0 = i1. +lemma at_inv_xpp: âf,i1,i2. @â¦i1,f⦠â i2 â âg. ⫯g = f â 0 = i2 â 0 = i1. #f #i1 #i2 #Hf #g #H elim (at_inv_xpx ⦠Hf ⦠H) -f * // #j1 #j2 #_ #_ * -i2 #H destruct qed-. -lemma at_inv_xpn: âf,i1,i2. @â¦i1, f⦠â i2 â âg,j2. ⫯g = f â âj2 = i2 â - ââj1. @â¦j1, g⦠â j2 & âj1 = i1. +lemma at_inv_xpn: âf,i1,i2. @â¦i1,f⦠â i2 â âg,j2. ⫯g = f â âj2 = i2 â + ââj1. @â¦j1,g⦠â j2 & âj1 = i1. #f #i1 #i2 #Hf #g #j2 #H elim (at_inv_xpx ⦠Hf ⦠H) -f * [ #_ * -i2 #H destruct | #x1 #x2 #Hg #H1 * -i2 #H destruct /2 width=3 by ex2_intro/ ] qed-. -lemma at_inv_xxp: âf,i1,i2. @â¦i1, f⦠â i2 â 0 = i2 â +lemma at_inv_xxp: âf,i1,i2. @â¦i1,f⦠â i2 â 0 = i2 â ââg. 0 = i1 & ⫯g = f. #f elim (pn_split f) * #g #H #i1 #i2 #Hf #H2 @@ -151,9 +151,9 @@ lemma at_inv_xxp: âf,i1,i2. @â¦i1, f⦠â i2 â 0 = i2 â ] qed-. -lemma at_inv_xxn: âf,i1,i2. @â¦i1, f⦠â i2 â âj2. âj2 = i2 â - (ââg,j1. @â¦j1, g⦠â j2 & âj1 = i1 & ⫯g = f) ⨠- ââg. @â¦i1, g⦠â j2 & âg = f. +lemma at_inv_xxn: âf,i1,i2. @â¦i1,f⦠â i2 â âj2. âj2 = i2 â + (ââg,j1. @â¦j1,g⦠â j2 & âj1 = i1 & ⫯g = f) ⨠+ ââg. @â¦i1,g⦠â j2 & âg = f. #f elim (pn_split f) * #g #H #i1 #i2 #Hf #j2 #H2 [ elim (at_inv_xpn ⦠Hf ⦠H H2) -i2 /3 width=5 by or_introl, ex3_2_intro/ @@ -163,7 +163,7 @@ qed-. (* Basic forward lemmas *****************************************************) -lemma at_increasing: âi2,i1,f. @â¦i1, f⦠â i2 â i1 ⤠i2. +lemma at_increasing: âi2,i1,f. @â¦i1,f⦠â i2 â i1 ⤠i2. #i2 elim i2 -i2 [ #i1 #f #Hf elim (at_inv_xxp ⦠Hf) -Hf // | #i2 #IH * // @@ -172,13 +172,13 @@ lemma at_increasing: âi2,i1,f. @â¦i1, f⦠â i2 â i1 ⤠i2. ] qed-. -lemma at_increasing_strict: âg,i1,i2. @â¦i1, g⦠â i2 â âf. âf = g â - i1 < i2 ⧠@â¦i1, f⦠â âi2. +lemma at_increasing_strict: âg,i1,i2. @â¦i1,g⦠â i2 â âf. âf = g â + i1 < i2 ⧠@â¦i1,f⦠â âi2. #g #i1 #i2 #Hg #f #H elim (at_inv_xnx ⦠Hg ⦠H) -Hg -H /4 width=2 by conj, at_increasing, le_S_S/ qed-. -lemma at_fwd_id_ex: âf,i. @â¦i, f⦠â i â âg. ⫯g = f. +lemma at_fwd_id_ex: âf,i. @â¦i,f⦠â i â âg. ⫯g = f. #f elim (pn_split f) * /2 width=2 by ex_intro/ #g #H #i #Hf elim (at_inv_xnx ⦠Hf ⦠H) -Hf -H #j2 #Hg #H destruct lapply (at_increasing ⦠Hg) -Hg @@ -187,7 +187,7 @@ qed-. (* Basic properties *********************************************************) -corec lemma at_eq_repl_back: âi1,i2. eq_repl_back (λf. @â¦i1, f⦠â i2). +corec lemma at_eq_repl_back: âi1,i2. eq_repl_back (λf. @â¦i1,f⦠â i2). #i1 #i2 #f1 #H1 cases H1 -f1 -i1 -i2 [ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12 cases (eq_inv_px ⦠H12 ⦠H) -g1 /2 width=2 by at_refl/ | #f1 #i1 #i2 #Hf1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12 cases (eq_inv_px ⦠H12 ⦠H) -g1 /3 width=7 by at_push/ @@ -195,12 +195,12 @@ corec lemma at_eq_repl_back: âi1,i2. eq_repl_back (λf. @â¦i1, f⦠â i2). ] qed-. -lemma at_eq_repl_fwd: âi1,i2. eq_repl_fwd (λf. @â¦i1, f⦠â i2). +lemma at_eq_repl_fwd: âi1,i2. eq_repl_fwd (λf. @â¦i1,f⦠â i2). #i1 #i2 @eq_repl_sym /2 width=3 by at_eq_repl_back/ qed-. -lemma at_le_ex: âj2,i2,f. @â¦i2, f⦠â j2 â âi1. i1 ⤠i2 â - ââj1. @â¦i1, f⦠â j1 & j1 ⤠j2. +lemma at_le_ex: âj2,i2,f. @â¦i2,f⦠â j2 â âi1. i1 ⤠i2 â + ââj1. @â¦i1,f⦠â j1 & j1 ⤠j2. #j2 elim j2 -j2 [2: #j2 #IH ] #i2 #f #Hf [ elim (at_inv_xxn ⦠Hf) -Hf [1,3: * |*: // ] #g [ #x2 ] #Hg [ #H2 ] #H0 @@ -217,14 +217,14 @@ lemma at_le_ex: âj2,i2,f. @â¦i2, f⦠â j2 â âi1. i1 ⤠i2 â ] qed-. -lemma at_id_le: âi1,i2. i1 ⤠i2 â âf. @â¦i2, f⦠â i2 â @â¦i1, f⦠â i1. +lemma at_id_le: âi1,i2. i1 ⤠i2 â âf. @â¦i2,f⦠â i2 â @â¦i1,f⦠â i1. #i1 #i2 #H @(le_elim ⦠H) -i1 -i2 [ #i2 | #i1 #i2 #IH ] #f #Hf elim (at_fwd_id_ex ⦠Hf) /4 width=7 by at_inv_npn, at_push, at_refl/ qed-. (* Main properties **********************************************************) -theorem at_monotonic: âj2,i2,f. @â¦i2, f⦠â j2 â âj1,i1. @â¦i1, f⦠â j1 â +theorem at_monotonic: âj2,i2,f. @â¦i2,f⦠â j2 â âj1,i1. @â¦i1,f⦠â j1 â i1 < i2 â j1 < j2. #j2 elim j2 -j2 [ #i2 #f #H2f elim (at_inv_xxp ⦠H2f) -H2f // @@ -240,7 +240,7 @@ theorem at_monotonic: âj2,i2,f. @â¦i2, f⦠â j2 â âj1,i1. @â¦i1, f⦠] qed-. -theorem at_inv_monotonic: âj1,i1,f. @â¦i1, f⦠â j1 â âj2,i2. @â¦i2, f⦠â j2 â +theorem at_inv_monotonic: âj1,i1,f. @â¦i1,f⦠â j1 â âj2,i2. @â¦i2,f⦠â j2 â j1 < j2 â i1 < i2. #j1 elim j1 -j1 [ #i1 #f #H1f elim (at_inv_xxp ⦠H1f) -H1f // @@ -261,12 +261,12 @@ theorem at_inv_monotonic: âj1,i1,f. @â¦i1, f⦠â j1 â âj2,i2. @â¦i2, ] qed-. -theorem at_mono: âf,i,i1. @â¦i, f⦠â i1 â âi2. @â¦i, f⦠â i2 â i2 = i1. +theorem at_mono: âf,i,i1. @â¦i,f⦠â i1 â âi2. @â¦i,f⦠â i2 â i2 = i1. #f #i #i1 #H1 #i2 #H2 elim (lt_or_eq_or_gt i2 i1) // #Hi elim (lt_le_false i i) /3 width=6 by at_inv_monotonic, eq_sym/ qed-. -theorem at_inj: âf,i1,i. @â¦i1, f⦠â i â âi2. @â¦i2, f⦠â i â i1 = i2. +theorem at_inj: âf,i1,i. @â¦i1,f⦠â i â âi2. @â¦i2,f⦠â i â i1 = i2. #f #i1 #i #H1 #i2 #H2 elim (lt_or_eq_or_gt i2 i1) // #Hi elim (lt_le_false i i) /3 width=6 by at_monotonic, eq_sym/ qed-. @@ -312,14 +312,14 @@ theorem at_div_pn: âf2,g2,f1,g1. (* Properties on tls ********************************************************) -lemma at_pxx_tls: ân,f. @â¦0, f⦠â n â @â¦0, ⫱*[n]f⦠â 0. +lemma at_pxx_tls: ân,f. @â¦0,f⦠â n â @â¦0,⫱*[n]f⦠â 0. #n elim n -n // #n #IH #f #Hf cases (at_inv_pxn ⦠Hf) -Hf [ |*: // ] #g #Hg #H0 destruct <tls_xn /2 width=1 by/ qed. -lemma at_tls: âi2,f. ⫯⫱*[âi2]f ⡠⫱*[i2]f â âi1. @â¦i1, f⦠â i2. +lemma at_tls: âi2,f. ⫯⫱*[âi2]f ⡠⫱*[i2]f â âi1. @â¦i1,f⦠â i2. #i2 elim i2 -i2 [ /4 width=4 by at_eq_repl_back, at_refl, ex_intro/ | #i2 #IH #f <tls_xn <tls_xn in ⢠(??%â?); #H @@ -330,8 +330,8 @@ qed-. (* Inversion lemmas with tls ************************************************) -lemma at_inv_nxx: ân,g,i1,j2. @â¦âi1, g⦠â j2 â @â¦0, g⦠â n â - ââi2. @â¦i1, ⫱*[ân]g⦠â i2 & â(n+i2) = j2. +lemma at_inv_nxx: ân,g,i1,j2. @â¦âi1,g⦠â j2 â @â¦0,g⦠â n â + ââi2. @â¦i1,⫱*[ân]g⦠â i2 & â(n+i2) = j2. #n elim n -n [ #g #i1 #j2 #Hg #H elim (at_inv_pxp ⦠H) -H [ |*: // ] #f #H0 @@ -345,7 +345,7 @@ lemma at_inv_nxx: ân,g,i1,j2. @â¦âi1, g⦠â j2 â @â¦0, g⦠â n â ] qed-. -lemma at_inv_tls: âi2,i1,f. @â¦i1, f⦠â i2 â ⫯⫱*[âi2]f ⡠⫱*[i2]f. +lemma at_inv_tls: âi2,i1,f. @â¦i1,f⦠â i2 â ⫯⫱*[âi2]f ⡠⫱*[i2]f. #i2 elim i2 -i2 [ #i1 #f #Hf elim (at_inv_xxp ⦠Hf) -Hf // #g #H1 #H destruct /2 width=1 by eq_refl/ @@ -358,19 +358,19 @@ qed-. (* Advanced inversion lemmas on isid ****************************************) -lemma isid_inv_at: âi,f. ðâ¦f⦠â @â¦i, f⦠â i. +lemma isid_inv_at: âi,f. ðâ¦f⦠â @â¦i,f⦠â i. #i elim i -i [ #f #H elim (isid_inv_gen ⦠H) -H /2 width=2 by at_refl/ | #i #IH #f #H elim (isid_inv_gen ⦠H) -H /3 width=7 by at_push/ ] qed. -lemma isid_inv_at_mono: âf,i1,i2. ðâ¦f⦠â @â¦i1, f⦠â i2 â i1 = i2. +lemma isid_inv_at_mono: âf,i1,i2. ðâ¦f⦠â @â¦i1,f⦠â i2 â i1 = i2. /3 width=6 by isid_inv_at, at_mono/ qed-. (* Advanced properties on isid **********************************************) -corec lemma isid_at: âf. (âi. @â¦i, f⦠â i) â ðâ¦fâ¦. +corec lemma isid_at: âf. (âi. @â¦i,f⦠â i) â ðâ¦fâ¦. #f #Hf lapply (Hf 0) #H cases (at_fwd_id_ex ⦠H) -H #g #H @(isid_push ⦠H) /3 width=7 by at_inv_npn/ @@ -378,15 +378,15 @@ qed-. (* Advanced properties on id ************************************************) -lemma id_inv_at: âf. (âi. @â¦i, f⦠â i) â ðð â¡ f. +lemma id_inv_at: âf. (âi. @â¦i,f⦠â i) â ðð â¡ f. /3 width=1 by isid_at, eq_id_inv_isid/ qed-. -lemma id_at: âi. @â¦i, ðð⦠â i. +lemma id_at: âi. @â¦i,ðð⦠â i. /2 width=1 by isid_inv_at/ qed. (* Advanced forward lemmas on id ********************************************) -lemma at_id_fwd: âi1,i2. @â¦i1, ðð⦠â i2 â i1 = i2. +lemma at_id_fwd: âi1,i2. @â¦i1,ðð⦠â i2 â i1 = i2. /2 width=4 by at_mono/ qed. (* Main properties on id ****************************************************) diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma index e65c3c113..87087b273 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma @@ -17,7 +17,7 @@ include "ground_2/relocation/rtmap_at.ma". (* RELOCATION MAP ***********************************************************) -definition istot: predicate rtmap â λf. âi. âj. @â¦i, f⦠â j. +definition istot: predicate rtmap â λf. âi. âj. @â¦i,f⦠â j. interpretation "test for totality (rtmap)" 'IsTotal f = (istot f). @@ -50,7 +50,7 @@ qed. (* Main forward lemmas on at ************************************************) corec theorem at_ext: âf1,f2. ðâ¦f1⦠â ðâ¦f2⦠â - (âi,i1,i2. @â¦i, f1⦠â i1 â @â¦i, f2⦠â i2 â i1 = i2) â + (âi,i1,i2. @â¦i,f1⦠â i1 â @â¦i,f2⦠â i2 â i1 = i2) â f1 â¡ f2. #f1 cases (pn_split f1) * #g1 #H1 #f2 cases (pn_split f2) * #g2 #H2 @@ -72,7 +72,7 @@ qed-. (* Advanced properties on at ************************************************) -lemma at_dec: âf,i1,i2. ðâ¦f⦠â Decidable (@â¦i1, f⦠â i2). +lemma at_dec: âf,i1,i2. ðâ¦f⦠â Decidable (@â¦i1,f⦠â i2). #f #i1 #i2 #Hf lapply (Hf i1) -Hf * #j2 #Hf elim (eq_nat_dec i2 j2) [ #H destruct /2 width=1 by or_introl/ @@ -80,8 +80,8 @@ lemma at_dec: âf,i1,i2. ðâ¦f⦠â Decidable (@â¦i1, f⦠â i2). ] qed-. -lemma is_at_dec_le: âf,i2,i. ðâ¦f⦠â (âi1. i1 + i ⤠i2 â @â¦i1, f⦠â i2 â â¥) â - Decidable (âi1. @â¦i1, f⦠â i2). +lemma is_at_dec_le: âf,i2,i. ðâ¦f⦠â (âi1. i1 + i ⤠i2 â @â¦i1,f⦠â i2 â â¥) â + Decidable (âi1. @â¦i1,f⦠â i2). #f #i2 #i #Hf elim i -i [ #Ht @or_intror * /3 width=3 by at_increasing/ | #i #IH #Ht elim (at_dec f (i2-i) i2) /3 width=2 by ex_intro, or_introl/ @@ -90,13 +90,13 @@ lemma is_at_dec_le: âf,i2,i. ðâ¦f⦠â (âi1. i1 + i ⤠i2 â @â¦i1, ] qed-. -lemma is_at_dec: âf,i2. ðâ¦f⦠â Decidable (âi1. @â¦i1, f⦠â i2). +lemma is_at_dec: âf,i2. ðâ¦f⦠â Decidable (âi1. @â¦i1,f⦠â i2). #f #i2 #Hf @(is_at_dec_le ?? (âi2)) /2 width=4 by lt_le_false/ qed-. (* Advanced properties on isid **********************************************) -lemma isid_at_total: âf. ðâ¦f⦠â (âi1,i2. @â¦i1, f⦠â i2 â i1 = i2) â ðâ¦fâ¦. +lemma isid_at_total: âf. ðâ¦f⦠â (âi1,i2. @â¦i1,f⦠â i2 â i1 = i2) â ðâ¦fâ¦. #f #H1f #H2f @isid_at #i lapply (H1f i) -H1f * #j #Hf >(H2f ⦠Hf) in ⢠(???%); -H2f // diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma index 1e08d2474..482a6da39 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma @@ -43,7 +43,7 @@ definition eq_f: relation rtc â λc1,c2. â¤. inductive eq_t: relation rtc â | eq_t_intro: âri1,ri2,rs1,rs2,ti,ts. - eq_t (â©ri1, rs1, ti, tsâª) (â©ri2, rs2, ti, tsâª) + eq_t (â©ri1,rs1,ti,tsâª) (â©ri2,rs2,ti,tsâª) . (* Basic properties *********************************************************) diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt.ma index 9c988abea..45be4c4ad 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt.ma @@ -18,47 +18,47 @@ include "ground_2/steps/rtc.ma". (* RT-TRANSITION COUNTER ****************************************************) definition isrt: relation2 nat rtc â λts,c. - ââri,rs. â©ri, rs, 0, ts⪠= c. + ââri,rs. â©ri,rs,0,ts⪠= c. interpretation "test for costrained rt-transition counter (rtc)" 'IsRedType ts c = (isrt ts c). (* Basic properties *********************************************************) -lemma isr_00: ððâ¦0, ððâ¦. +lemma isr_00: ððâ¦0,ððâ¦. /2 width=3 by ex1_2_intro/ qed. -lemma isr_10: ððâ¦0, ððâ¦. +lemma isr_10: ððâ¦0,ððâ¦. /2 width=3 by ex1_2_intro/ qed. -lemma isrt_01: ððâ¦1, ððâ¦. +lemma isrt_01: ððâ¦1,ððâ¦. /2 width=3 by ex1_2_intro/ qed. -lemma isrt_eq_t_trans: ân,c1,c2. ððâ¦n, c1⦠â eq_t c1 c2 â ððâ¦n, c2â¦. +lemma isrt_eq_t_trans: ân,c1,c2. ððâ¦n,c1⦠â eq_t c1 c2 â ððâ¦n,c2â¦. #n #c1 #c2 * #ri1 #rs1 #H destruct #H elim (eq_t_inv_dx ⦠H) -H /2 width=3 by ex1_2_intro/ qed-. (* Basic inversion properties ***********************************************) -lemma isrt_inv_00: ân. ððâ¦n, ðð⦠â 0 = n. +lemma isrt_inv_00: ân. ððâ¦n,ðð⦠â 0 = n. #n * #ri #rs #H destruct // qed-. -lemma isrt_inv_10: ân. ððâ¦n, ðð⦠â 0 = n. +lemma isrt_inv_10: ân. ððâ¦n,ðð⦠â 0 = n. #n * #ri #rs #H destruct // qed-. -lemma isrt_inv_01: ân. ððâ¦n, ðð⦠â 1 = n. +lemma isrt_inv_01: ân. ððâ¦n,ðð⦠â 1 = n. #n * #ri #rs #H destruct // qed-. (* Main inversion properties ************************************************) -theorem isrt_inj: ân1,n2,c. ððâ¦n1, c⦠â ððâ¦n2, c⦠â n1 = n2. +theorem isrt_inj: ân1,n2,c. ððâ¦n1,c⦠â ððâ¦n2,c⦠â n1 = n2. #n1 #n2 #c * #ri1 #rs1 #H1 * #ri2 #rs2 #H2 destruct // qed-. -theorem isrt_mono: ân,c1,c2. ððâ¦n, c1⦠â ððâ¦n, c2⦠â eq_t c1 c2. +theorem isrt_mono: ân,c1,c2. ððâ¦n,c1⦠â ððâ¦n,c2⦠â eq_t c1 c2. #n #c1 #c2 * #ri1 #rs1 #H1 * #ri2 #rs2 #H2 destruct // qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma index bfa170972..bf31a291f 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma @@ -18,7 +18,7 @@ include "ground_2/steps/rtc_shift.ma". definition max (c1:rtc) (c2:rtc): rtc â match c1 with [ mk_rtc ri1 rs1 ti1 ts1 â match c2 with [ - mk_rtc ri2 rs2 ti2 ts2 â â©ri1â¨ri2, rs1â¨rs2, ti1â¨ti2, ts1â¨ts2⪠+ mk_rtc ri2 rs2 ti2 ts2 â â©ri1â¨ri2,rs1â¨rs2,ti1â¨ti2,ts1â¨ts2⪠] ]. @@ -28,7 +28,7 @@ interpretation "maximum (rtc)" (* Basic properties *********************************************************) lemma max_rew: âri1,ri2,rs1,rs2,ti1,ti2,ts1,ts2. - â©ri1â¨ri2, rs1â¨rs2, ti1â¨ti2, ts1â¨ts2⪠= + â©ri1â¨ri2,rs1â¨rs2,ti1â¨ti2,ts1â¨ts2⪠= (â©ri1,rs1,ti1,ts1⪠⨠â©ri2,rs2,ti2,ts2âª). // qed. @@ -59,46 +59,46 @@ qed. (* Properties with test for constrained rt-transition counter ***************) -lemma isrt_max: ân1,n2,c1,c2. ððâ¦n1, c1⦠â ððâ¦n2, c2⦠â ððâ¦n1â¨n2, c1â¨c2â¦. +lemma isrt_max: ân1,n2,c1,c2. ððâ¦n1,c1⦠â ððâ¦n2,c2⦠â ððâ¦n1â¨n2,c1â¨c2â¦. #n1 #n2 #c1 #c2 * #ri1 #rs1 #H1 * #ri2 #rs2 #H2 destruct /2 width=3 by ex1_2_intro/ qed. -lemma isrt_max_O1: ân,c1,c2. ððâ¦0, c1⦠â ððâ¦n, c2⦠â ððâ¦n, c1â¨c2â¦. +lemma isrt_max_O1: ân,c1,c2. ððâ¦0,c1⦠â ððâ¦n,c2⦠â ððâ¦n,c1â¨c2â¦. /2 width=1 by isrt_max/ qed. -lemma isrt_max_O2: ân,c1,c2. ððâ¦n, c1⦠â ððâ¦0, c2⦠â ððâ¦n, c1â¨c2â¦. +lemma isrt_max_O2: ân,c1,c2. ððâ¦n,c1⦠â ððâ¦0,c2⦠â ððâ¦n,c1â¨c2â¦. #n #c1 #c2 #H1 #H2 >(max_O2 n) /2 width=1 by isrt_max/ qed. -lemma isrt_max_idem1: ân,c1,c2. ððâ¦n, c1⦠â ððâ¦n, c2⦠â ððâ¦n, c1â¨c2â¦. +lemma isrt_max_idem1: ân,c1,c2. ððâ¦n,c1⦠â ððâ¦n,c2⦠â ððâ¦n,c1â¨c2â¦. #n #c1 #c2 #H1 #H2 >(idempotent_max n) /2 width=1 by isrt_max/ qed. (* Inversion properties with test for constrained rt-transition counter *****) -lemma isrt_inv_max: ân,c1,c2. ððâ¦n, c1 ⨠c2⦠â - âân1,n2. ððâ¦n1, c1⦠& ððâ¦n2, c2⦠& (n1 ⨠n2) = n. +lemma isrt_inv_max: ân,c1,c2. ððâ¦n,c1 ⨠c2⦠â + âân1,n2. ððâ¦n1,c1⦠& ððâ¦n2,c2⦠& (n1 ⨠n2) = n. #n #c1 #c2 * #ri #rs #H elim (max_inv_dx ⦠H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #_ #_ #H1 #H2 #H3 #H4 elim (max_inv_O3 ⦠H1) -H1 /3 width=5 by ex3_2_intro, ex1_2_intro/ qed-. -lemma isrt_O_inv_max: âc1,c2. ððâ¦0, c1 ⨠c2⦠â â§â§ ððâ¦0, c1⦠& ððâ¦0, c2â¦. +lemma isrt_O_inv_max: âc1,c2. ððâ¦0,c1 ⨠c2⦠â â§â§ ððâ¦0,c1⦠& ððâ¦0,c2â¦. #c1 #c2 #H elim (isrt_inv_max ⦠H) -H #n1 #n2 #Hn1 #Hn2 #H elim (max_inv_O3 ⦠H) -H #H1 #H2 destruct /2 width=1 by conj/ qed-. -lemma isrt_inv_max_O_dx: ân,c1,c2. ððâ¦n, c1 ⨠c2⦠â ððâ¦0, c2⦠â ððâ¦n, c1â¦. +lemma isrt_inv_max_O_dx: ân,c1,c2. ððâ¦n,c1 ⨠c2⦠â ððâ¦0,c2⦠â ððâ¦n,c1â¦. #n #c1 #c2 #H #H2 elim (isrt_inv_max ⦠H) -H #n1 #n2 #Hn1 #Hn2 #H destruct lapply (isrt_inj ⦠Hn2 H2) -c2 #H destruct // qed-. -lemma isrt_inv_max_eq_t: ân,c1,c2. ððâ¦n, c1 ⨠c2⦠â eq_t c1 c2 â - â§â§ ððâ¦n, c1⦠& ððâ¦n, c2â¦. +lemma isrt_inv_max_eq_t: ân,c1,c2. ððâ¦n,c1 ⨠c2⦠â eq_t c1 c2 â + â§â§ ððâ¦n,c1⦠& ððâ¦n,c2â¦. #n #c1 #c2 #H #Hc12 elim (isrt_inv_max ⦠H) -H #n1 #n2 #Hc1 #Hc2 #H destruct lapply (isrt_eq_t_trans ⦠Hc1 ⦠Hc12) -Hc12 #H @@ -115,8 +115,8 @@ qed. (* Inversion lemmaswith shift ***********************************************) -lemma isrt_inv_max_shift_sn: ân,c1,c2. ððâ¦n, â*c1 ⨠c2⦠â - â§â§ ððâ¦0, c1⦠& ððâ¦n, c2â¦. +lemma isrt_inv_max_shift_sn: ân,c1,c2. ððâ¦n,â*c1 ⨠c2⦠â + â§â§ ððâ¦0,c1⦠& ððâ¦n,c2â¦. #n #c1 #c2 #H elim (isrt_inv_max ⦠H) -H #n1 #n2 #Hc1 #Hc2 #H destruct elim (isrt_inv_shift ⦠Hc1) -Hc1 #Hc1 * -n1 diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_plus.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_plus.ma index 49ce55082..a5237af26 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_plus.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_plus.ma @@ -18,7 +18,7 @@ include "ground_2/steps/rtc_isrt.ma". definition plus (c1:rtc) (c2:rtc): rtc â match c1 with [ mk_rtc ri1 rs1 ti1 ts1 â match c2 with [ - mk_rtc ri2 rs2 ti2 ts2 â â©ri1+ri2, rs1+rs2, ti1+ti2, ts1+ts2⪠+ mk_rtc ri2 rs2 ti2 ts2 â â©ri1+ri2,rs1+rs2,ti1+ti2,ts1+ts2⪠] ]. @@ -29,7 +29,7 @@ interpretation "plus (rtc)" (**) (* plus is not disambiguated parentheses *) lemma plus_rew: âri1,ri2,rs1,rs2,ti1,ti2,ts1,ts2. - â©ri1+ri2, rs1+rs2, ti1+ti2, ts1+ts2⪠= + â©ri1+ri2,rs1+rs2,ti1+ti2,ts1+ts2⪠= (â©ri1,rs1,ti1,ts1âª) + (â©ri2,rs2,ti2,ts2âª). // qed. @@ -56,38 +56,38 @@ qed. (* Properties with test for constrained rt-transition counter ***************) -lemma isrt_plus: ân1,n2,c1,c2. ððâ¦n1, c1⦠â ððâ¦n2, c2⦠â ððâ¦n1+n2, c1+c2â¦. +lemma isrt_plus: ân1,n2,c1,c2. ððâ¦n1,c1⦠â ððâ¦n2,c2⦠â ððâ¦n1+n2,c1+c2â¦. #n1 #n2 #c1 #c2 * #ri1 #rs1 #H1 * #ri2 #rs2 #H2 destruct /2 width=3 by ex1_2_intro/ qed. -lemma isrt_plus_O1: ân,c1,c2. ððâ¦0, c1⦠â ððâ¦n, c2⦠â ððâ¦n, c1+c2â¦. +lemma isrt_plus_O1: ân,c1,c2. ððâ¦0,c1⦠â ððâ¦n,c2⦠â ððâ¦n,c1+c2â¦. /2 width=1 by isrt_plus/ qed. -lemma isrt_plus_O2: ân,c1,c2. ððâ¦n, c1⦠â ððâ¦0, c2⦠â ððâ¦n, c1+c2â¦. +lemma isrt_plus_O2: ân,c1,c2. ððâ¦n,c1⦠â ððâ¦0,c2⦠â ððâ¦n,c1+c2â¦. #n #c1 #c2 #H1 #H2 >(plus_n_O n) /2 width=1 by isrt_plus/ qed. -lemma isrt_succ: ân,c. ððâ¦n, c⦠â ððâ¦ân, c+ððâ¦. +lemma isrt_succ: ân,c. ððâ¦n,c⦠â ððâ¦ân,c+ððâ¦. /2 width=1 by isrt_plus/ qed. (* Inversion properties with test for constrained rt-transition counter *****) -lemma isrt_inv_plus: ân,c1,c2. ððâ¦n, c1 + c2⦠â - âân1,n2. ððâ¦n1, c1⦠& ððâ¦n2, c2⦠& n1 + n2 = n. +lemma isrt_inv_plus: ân,c1,c2. ððâ¦n,c1 + c2⦠â + âân1,n2. ððâ¦n1,c1⦠& ððâ¦n2,c2⦠& n1 + n2 = n. #n #c1 #c2 * #ri #rs #H elim (plus_inv_dx ⦠H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #_ #_ #H1 #H2 #H3 #H4 elim (plus_inv_O3 ⦠H1) -H1 /3 width=5 by ex3_2_intro, ex1_2_intro/ qed-. -lemma isrt_inv_plus_O_dx: ân,c1,c2. ððâ¦n, c1 + c2⦠â ððâ¦0, c2⦠â ððâ¦n, c1â¦. +lemma isrt_inv_plus_O_dx: ân,c1,c2. ððâ¦n,c1 + c2⦠â ððâ¦0,c2⦠â ððâ¦n,c1â¦. #n #c1 #c2 #H #H2 elim (isrt_inv_plus ⦠H) -H #n1 #n2 #Hn1 #Hn2 #H destruct lapply (isrt_inj ⦠Hn2 H2) -c2 #H destruct // qed-. -lemma isrt_inv_plus_SO_dx: ân,c1,c2. ððâ¦n, c1 + c2⦠â ððâ¦1, c2⦠â - ââm. ððâ¦m, c1⦠& n = âm. +lemma isrt_inv_plus_SO_dx: ân,c1,c2. ððâ¦n,c1 + c2⦠â ððâ¦1,c2⦠â + ââm. ððâ¦m,c1⦠& n = âm. #n #c1 #c2 #H #H2 elim (isrt_inv_plus ⦠H) -H #n1 #n2 #Hn1 #Hn2 #H destruct lapply (isrt_inj ⦠Hn2 H2) -c2 #H destruct diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_shift.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_shift.ma index e2f739d69..165e1eeda 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_shift.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_shift.ma @@ -18,14 +18,14 @@ include "ground_2/steps/rtc_isrt.ma". (* RT-TRANSITION COUNTER ****************************************************) definition shift (c:rtc): rtc â match c with -[ mk_rtc ri rs ti ts â â©riâ¨rs, 0, tiâ¨ts, 0⪠]. +[ mk_rtc ri rs ti ts â â©riâ¨rs,0,tiâ¨ts,0⪠]. interpretation "shift (rtc)" 'UpDownArrowStar c = (shift c). (* Basic properties *********************************************************) -lemma shift_rew: âri,rs,ti,ts. â©riâ¨rs, 0, tiâ¨ts, 0⪠= â*â©ri, rs, ti, tsâª. +lemma shift_rew: âri,rs,ti,ts. â©riâ¨rs,0,tiâ¨ts,0⪠= â*â©ri,rs,ti,tsâª. normalize // qed. @@ -34,27 +34,27 @@ lemma shift_O: ðð = â*ðð. (* Basic inversion properties ***********************************************) -lemma shift_inv_dx: âri,rs,ti,ts,c. â©ri, rs, ti, ts⪠= â*c â +lemma shift_inv_dx: âri,rs,ti,ts,c. â©ri,rs,ti,ts⪠= â*c â ââri0,rs0,ti0,ts0. (ri0â¨rs0) = ri & 0 = rs & (ti0â¨ts0) = ti & 0 = ts & - â©ri0, rs0, ti0, ts0⪠= c. + â©ri0,rs0,ti0,ts0⪠= c. #ri #rs #ti #ts * #ri0 #rs0 #ti0 #ts0 <shift_rew #H destruct /2 width=7 by ex5_4_intro/ qed-. (* Properties with test for costrained rt-transition counter ****************) -lemma isr_shift: âc. ððâ¦0, c⦠â ððâ¦0, â*câ¦. +lemma isr_shift: âc. ððâ¦0,c⦠â ððâ¦0,â*câ¦. #c * #ri #rs #H destruct /2 width=3 by ex1_2_intro/ qed. (* Inversion properties with test for costrained rt-counter *****************) -lemma isrt_inv_shift: ân,c. ððâ¦n, â*c⦠â ððâ¦0, c⦠⧠0 = n. +lemma isrt_inv_shift: ân,c. ððâ¦n,â*c⦠â ððâ¦0,c⦠⧠0 = n. #n #c * #ri #rs #H elim (shift_inv_dx ⦠H) -H #rt0 #rs0 #ti0 #ts0 #_ #_ #H1 #H2 #H3 elim (max_inv_O3 ⦠H1) -H1 /3 width=3 by ex1_2_intro, conj/ qed-. -lemma isr_inv_shift: âc. ððâ¦0, â*c⦠â ððâ¦0, câ¦. +lemma isr_inv_shift: âc. ððâ¦0,â*c⦠â ððâ¦0,câ¦. #c #H elim (isrt_inv_shift ⦠H) -H // qed-. diff --git a/matita/matita/contribs/lambdadelta/replace.sh b/matita/matita/contribs/lambdadelta/replace.sh index fcc328a85..d077dcb59 100644 --- a/matita/matita/contribs/lambdadelta/replace.sh +++ b/matita/matita/contribs/lambdadelta/replace.sh @@ -1,6 +1,6 @@ #!/bin/sh -for SRC in `find grond_2 static_2 basic_2 apps_2 -name "*.ma" -or -name "*.tbl"`; do - sed "s!$1!$2!g" ${SRC} > ${SRC}.new +for SRC in `find ground_2 static_2 basic_2 apps_2 -name "*.ma" -or -name "*.tbl"`; do + sed "/$1/s!$2!$3!g" ${SRC} > ${SRC}.new if [ ! -s ${SRC}.new ] || diff ${SRC} ${SRC}.new > /dev/null; then rm -f ${SRC}.new; else echo ${SRC}; mv -f ${SRC} ${SRC}.old; mv -f ${SRC}.new ${SRC}; diff --git a/matita/matita/contribs/lambdadelta/static_2/etc/sh_lt.etc b/matita/matita/contribs/lambdadelta/static_2/etc/sh_lt.etc new file mode 100644 index 000000000..89eb9dde5 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/static_2/etc/sh_lt.etc @@ -0,0 +1,6 @@ +definition sh_N: sh â mk_sh S â¦. +// defined. + +axiom nexts_dec: âh,s1,s2. Decidable (ân. (next h)^n s1 = s2). + +axiom nexts_inj: âh,s,n1,n2. (next h)^n1 s = (next h)^n2 s â n1 = n2. diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma index 8beb5bc3f..a53ee2c82 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma @@ -25,50 +25,50 @@ interpretation "iterated extension on referred entries (local environment)" (* Basic properties *********************************************************) -lemma rexs_step_dx: âR,L1,L,T. L1 ⪤*[R, T] L â - âL2. L ⪤[R, T] L2 â L1 ⪤*[R, T] L2. +lemma rexs_step_dx: âR,L1,L,T. L1 ⪤*[R,T] L â + âL2. L ⪤[R,T] L2 â L1 ⪤*[R,T] L2. #R #L1 #L2 #T #HL1 #L2 @step @HL1 (**) (* auto fails *) qed-. -lemma rexs_step_sn: âR,L1,L,T. L1 ⪤[R, T] L â - âL2. L ⪤*[R, T] L2 â L1 ⪤*[R, T] L2. +lemma rexs_step_sn: âR,L1,L,T. L1 ⪤[R,T] L â + âL2. L ⪤*[R,T] L2 â L1 ⪤*[R,T] L2. #R #L1 #L2 #T #HL1 #L2 @TC_strap @HL1 (**) (* auto fails *) qed-. -lemma rexs_atom: âR,I. â ⪤*[R, âª{I}] â. +lemma rexs_atom: âR,I. â ⪤*[R,âª{I}] â. /2 width=1 by inj/ qed. lemma rexs_sort: âR,I,L1,L2,V1,V2,s. - L1 ⪤*[R, âs] L2 â L1.â{I}V1 ⪤*[R, âs] L2.â{I}V2. + L1 ⪤*[R,âs] L2 â L1.â{I}V1 ⪤*[R,âs] L2.â{I}V2. #R #I #L1 #L2 #V1 #V2 #s #H elim H -L2 /3 width=4 by rex_sort, rexs_step_dx, inj/ qed. lemma rexs_pair: âR. (âL. reflexive ⦠(R L)) â - âI,L1,L2,V. L1 ⪤*[R, V] L2 â - L1.â{I}V ⪤*[R, #0] L2.â{I}V. + âI,L1,L2,V. L1 ⪤*[R,V] L2 â + L1.â{I}V ⪤*[R,#0] L2.â{I}V. #R #HR #I #L1 #L2 #V #H elim H -L2 /3 width=5 by rex_pair, rexs_step_dx, inj/ qed. -lemma rexs_unit: âR,f,I,L1,L2. ðâ¦f⦠â L1 ⪤[cext2 R, cfull, f] L2 â - L1.â¤{I} ⪤*[R, #0] L2.â¤{I}. +lemma rexs_unit: âR,f,I,L1,L2. ðâ¦f⦠â L1 ⪤[cext2 R,cfull,f] L2 â + L1.â¤{I} ⪤*[R,#0] L2.â¤{I}. /3 width=3 by rex_unit, inj/ qed. lemma rexs_lref: âR,I,L1,L2,V1,V2,i. - L1 ⪤*[R, #i] L2 â L1.â{I}V1 ⪤*[R, #âi] L2.â{I}V2. + L1 ⪤*[R,#i] L2 â L1.â{I}V1 ⪤*[R,#âi] L2.â{I}V2. #R #I #L1 #L2 #V1 #V2 #i #H elim H -L2 /3 width=4 by rex_lref, rexs_step_dx, inj/ qed. lemma rexs_gref: âR,I,L1,L2,V1,V2,l. - L1 ⪤*[R, §l] L2 â L1.â{I}V1 ⪤*[R, §l] L2.â{I}V2. + L1 ⪤*[R,§l] L2 â L1.â{I}V1 ⪤*[R,§l] L2.â{I}V2. #R #I #L1 #L2 #V1 #V2 #l #H elim H -L2 /3 width=4 by rex_gref, rexs_step_dx, inj/ qed. lemma rexs_co: âR1,R2. (âL,T1,T2. R1 L T1 T2 â R2 L T1 T2) â - âL1,L2,T. L1 ⪤*[R1, T] L2 â L1 ⪤*[R2, T] L2. + âL1,L2,T. L1 ⪤*[R1,T] L2 â L1 ⪤*[R2,T] L2. #R1 #R2 #HR #L1 #L2 #T #H elim H -L2 /4 width=5 by rex_co, rexs_step_dx, inj/ qed-. @@ -76,19 +76,19 @@ qed-. (* Basic inversion lemmas ***************************************************) (* Basic_2A1: uses: TC_lpx_sn_inv_atom1 *) -lemma rexs_inv_atom_sn: âR,I,Y2. â ⪤*[R, âª{I}] Y2 â Y2 = â. +lemma rexs_inv_atom_sn: âR,I,Y2. â ⪤*[R,âª{I}] Y2 â Y2 = â. #R #I #Y2 #H elim H -Y2 /3 width=3 by inj, rex_inv_atom_sn/ qed-. (* Basic_2A1: uses: TC_lpx_sn_inv_atom2 *) -lemma rexs_inv_atom_dx: âR,I,Y1. Y1 ⪤*[R, âª{I}] â â Y1 = â. +lemma rexs_inv_atom_dx: âR,I,Y1. Y1 ⪤*[R,âª{I}] â â Y1 = â. #R #I #Y1 #H @(TC_ind_dx ??????? H) -Y1 /3 width=3 by inj, rex_inv_atom_dx/ qed-. -lemma rexs_inv_sort: âR,Y1,Y2,s. Y1 ⪤*[R, âs] Y2 â +lemma rexs_inv_sort: âR,Y1,Y2,s. Y1 ⪤*[R,âs] Y2 â â¨â¨ â§â§ Y1 = â & Y2 = â - | ââI1,I2,L1,L2. L1 ⪤*[R, âs] L2 & + | ââI1,I2,L1,L2. L1 ⪤*[R,âs] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. #R #Y1 #Y2 #s #H elim H -Y2 [ #Y2 #H elim (rex_inv_sort ⦠H) -H * @@ -104,9 +104,9 @@ lemma rexs_inv_sort: âR,Y1,Y2,s. Y1 ⪤*[R, âs] Y2 â ] qed-. -lemma rexs_inv_gref: âR,Y1,Y2,l. Y1 ⪤*[R, §l] Y2 â +lemma rexs_inv_gref: âR,Y1,Y2,l. Y1 ⪤*[R,§l] Y2 â â¨â¨ â§â§ Y1 = â & Y2 = â - | ââI1,I2,L1,L2. L1 ⪤*[R, §l] L2 & + | ââI1,I2,L1,L2. L1 ⪤*[R,§l] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. #R #Y1 #Y2 #l #H elim H -Y2 [ #Y2 #H elim (rex_inv_gref ⦠H) -H * @@ -123,16 +123,16 @@ lemma rexs_inv_gref: âR,Y1,Y2,l. Y1 ⪤*[R, §l] Y2 â qed-. lemma rexs_inv_bind: âR. (âL. reflexive ⦠(R L)) â - âp,I,L1,L2,V,T. L1 ⪤*[R, â{p,I}V.T] L2 â - â§â§ L1 ⪤*[R, V] L2 & L1.â{I}V ⪤*[R, T] L2.â{I}V. + âp,I,L1,L2,V,T. L1 ⪤*[R,â{p,I}V.T] L2 â + â§â§ L1 ⪤*[R,V] L2 & L1.â{I}V ⪤*[R,T] L2.â{I}V. #R #HR #p #I #L1 #L2 #V #T #H elim H -L2 [ #L2 #H elim (rex_inv_bind ⦠V ? H) -H /3 width=1 by inj, conj/ | #L #L2 #_ #H * elim (rex_inv_bind ⦠V ? H) -H /3 width=3 by rexs_step_dx, conj/ ] qed-. -lemma rexs_inv_flat: âR,I,L1,L2,V,T. L1 ⪤*[R, â{I}V.T] L2 â - â§â§ L1 ⪤*[R, V] L2 & L1 ⪤*[R, T] L2. +lemma rexs_inv_flat: âR,I,L1,L2,V,T. L1 ⪤*[R,â{I}V.T] L2 â + â§â§ L1 ⪤*[R,V] L2 & L1 ⪤*[R,T] L2. #R #I #L1 #L2 #V #T #H elim H -L2 [ #L2 #H elim (rex_inv_flat ⦠H) -H /3 width=1 by inj, conj/ | #L #L2 #_ #H * elim (rex_inv_flat ⦠H) -H /3 width=3 by rexs_step_dx, conj/ @@ -141,32 +141,32 @@ qed-. (* Advanced inversion lemmas ************************************************) -lemma rexs_inv_sort_bind_sn: âR,I1,Y2,L1,s. L1.â{I1} ⪤*[R, âs] Y2 â - ââI2,L2. L1 ⪤*[R, âs] L2 & Y2 = L2.â{I2}. +lemma rexs_inv_sort_bind_sn: âR,I1,Y2,L1,s. L1.â{I1} ⪤*[R,âs] Y2 â + ââI2,L2. L1 ⪤*[R,âs] L2 & Y2 = L2.â{I2}. #R #I1 #Y2 #L1 #s #H elim (rexs_inv_sort ⦠H) -H * [ #H destruct | #Z #I2 #Y1 #L2 #Hs #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rexs_inv_sort_bind_dx: âR,I2,Y1,L2,s. Y1 ⪤*[R, âs] L2.â{I2} â - ââI1,L1. L1 ⪤*[R, âs] L2 & Y1 = L1.â{I1}. +lemma rexs_inv_sort_bind_dx: âR,I2,Y1,L2,s. Y1 ⪤*[R,âs] L2.â{I2} â + ââI1,L1. L1 ⪤*[R,âs] L2 & Y1 = L1.â{I1}. #R #I2 #Y1 #L2 #s #H elim (rexs_inv_sort ⦠H) -H * [ #_ #H destruct | #I1 #Z #L1 #Y2 #Hs #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rexs_inv_gref_bind_sn: âR,I1,Y2,L1,l. L1.â{I1} ⪤*[R, §l] Y2 â - ââI2,L2. L1 ⪤*[R, §l] L2 & Y2 = L2.â{I2}. +lemma rexs_inv_gref_bind_sn: âR,I1,Y2,L1,l. L1.â{I1} ⪤*[R,§l] Y2 â + ââI2,L2. L1 ⪤*[R,§l] L2 & Y2 = L2.â{I2}. #R #I1 #Y2 #L1 #l #H elim (rexs_inv_gref ⦠H) -H * [ #H destruct | #Z #I2 #Y1 #L2 #Hl #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rexs_inv_gref_bind_dx: âR,I2,Y1,L2,l. Y1 ⪤*[R, §l] L2.â{I2} â - ââI1,L1. L1 ⪤*[R, §l] L2 & Y1 = L1.â{I1}. +lemma rexs_inv_gref_bind_dx: âR,I2,Y1,L2,l. Y1 ⪤*[R,§l] L2.â{I2} â + ââI1,L1. L1 ⪤*[R,§l] L2 & Y1 = L1.â{I1}. #R #I2 #Y1 #L2 #l #H elim (rexs_inv_gref ⦠H) -H * [ #_ #H destruct | #I1 #Z #L1 #Y2 #Hl #H1 #H2 destruct /2 width=4 by ex2_2_intro/ @@ -175,18 +175,18 @@ qed-. (* Basic forward lemmas *****************************************************) -lemma rexs_fwd_pair_sn: âR,I,L1,L2,V,T. L1 ⪤*[R, â¡{I}V.T] L2 â L1 ⪤*[R, V] L2. +lemma rexs_fwd_pair_sn: âR,I,L1,L2,V,T. L1 ⪤*[R,â¡{I}V.T] L2 â L1 ⪤*[R,V] L2. #R #I #L1 #L2 #V #T #H elim H -L2 /3 width=5 by rex_fwd_pair_sn, rexs_step_dx, inj/ qed-. lemma rexs_fwd_bind_dx: âR. (âL. reflexive ⦠(R L)) â - âp,I,L1,L2,V,T. L1 ⪤*[R, â{p,I}V.T] L2 â - L1.â{I}V ⪤*[R, T] L2.â{I}V. + âp,I,L1,L2,V,T. L1 ⪤*[R,â{p,I}V.T] L2 â + L1.â{I}V ⪤*[R,T] L2.â{I}V. #R #HR #p #I #L1 #L2 #V #T #H elim (rexs_inv_bind ⦠H) -H // qed-. -lemma rexs_fwd_flat_dx: âR,I,L1,L2,V,T. L1 ⪤*[R, â{I}V.T] L2 â L1 ⪤*[R, T] L2. +lemma rexs_fwd_flat_dx: âR,I,L1,L2,V,T. L1 ⪤*[R,â{I}V.T] L2 â L1 ⪤*[R,T] L2. #R #I #L1 #L2 #V #T #H elim (rexs_inv_flat ⦠H) -H // qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma index 0b83c6431..11025a4a1 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma @@ -19,19 +19,19 @@ include "static_2/i_static/rexs.ma". (* ITERATED EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ***) definition tc_f_dedropable_sn: predicate (relation3 lenv term term) â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â - âK2,T. K1 ⪤*[R, T] K2 â âU. â¬*[f] T â U â - ââL2. L1 ⪤*[R, U] L2 & â¬*[b, f] L2 â K2 & L1 â¡[f] L2. + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â + âK2,T. K1 ⪤*[R,T] K2 â âU. â¬*[f] T â U â + ââL2. L1 ⪤*[R,U] L2 & â¬*[b,f] L2 â K2 & L1 â¡[f] L2. definition tc_f_dropable_sn: predicate (relation3 lenv term term) â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â ðâ¦f⦠â - âL2,U. L1 ⪤*[R, U] L2 â âT. â¬*[f] T â U â - ââK2. K1 ⪤*[R, T] K2 & â¬*[b, f] L2 â K2. + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â ðâ¦f⦠â + âL2,U. L1 ⪤*[R,U] L2 â âT. â¬*[f] T â U â + ââK2. K1 ⪤*[R,T] K2 & â¬*[b,f] L2 â K2. definition tc_f_dropable_dx: predicate (relation3 lenv term term) â - λR. âL1,L2,U. L1 ⪤*[R, U] L2 â - âb,f,K2. â¬*[b, f] L2 â K2 â ðâ¦f⦠â âT. â¬*[f] T â U â - ââK1. â¬*[b, f] L1 â K1 & K1 ⪤*[R, T] K2. + λR. âL1,L2,U. L1 ⪤*[R,U] L2 â + âb,f,K2. â¬*[b,f] L2 â K2 â ðâ¦f⦠â âT. â¬*[f] T â U â + ââK1. â¬*[b,f] L1 â K1 & K1 ⪤*[R,T] K2. (* Properties with generic slicing for local environments *******************) diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_fqup.ma index c21d82017..fbb41879c 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_fqup.ma @@ -25,13 +25,13 @@ lemma rexs_refl: âR. c_reflexive ⦠R â (* Basic_2A1: uses: TC_lpx_sn_pair TC_lpx_sn_pair_refl *) lemma rexs_pair_refl: âR. c_reflexive ⦠R â - âL,V1,V2. CTC ⦠R L V1 V2 â âI,T. L.â{I}V1 ⪤*[R, T] L.â{I}V2. + âL,V1,V2. CTC ⦠R L V1 V2 â âI,T. L.â{I}V1 ⪤*[R,T] L.â{I}V2. #R #HR #L #V1 #V2 #H elim H -V2 /3 width=3 by rexs_step_dx, rex_pair_refl, inj/ qed. lemma rexs_tc: âR,L1,L2,T,f. ðâ¦f⦠â TC ⦠(sex cfull (cext2 R) f) L1 L2 â - L1 ⪤*[R, T] L2. + L1 ⪤*[R,T] L2. #R #L1 #L2 #T #f #Hf #H elim H -L2 [ elim (frees_total L1 T) | #L elim (frees_total L T) ] /5 width=7 by sex_sdj, rexs_step_dx, sdj_isid_sn, inj, ex2_intro/ @@ -41,16 +41,16 @@ qed. lemma rexs_ind_sn: âR. c_reflexive ⦠R â âL1,T. âQ:predicate â¦. Q L1 â - (âL,L2. L1 ⪤*[R, T] L â L ⪤[R, T] L2 â Q L â Q L2) â - âL2. L1 ⪤*[R, T] L2 â Q L2. + (âL,L2. L1 ⪤*[R,T] L â L ⪤[R,T] L2 â Q L â Q L2) â + âL2. L1 ⪤*[R,T] L2 â Q L2. #R #HR #L1 #T #Q #HL1 #IHL1 #L2 #HL12 @(TC_star_ind ⦠HL1 IHL1 ⦠HL12) /2 width=1 by rex_refl/ qed-. lemma rexs_ind_dx: âR. c_reflexive ⦠R â âL2,T. âQ:predicate â¦. Q L2 â - (âL1,L. L1 ⪤[R, T] L â L ⪤*[R, T] L2 â Q L â Q L1) â - âL1. L1 ⪤*[R, T] L2 â Q L1. + (âL1,L. L1 ⪤[R,T] L â L ⪤*[R,T] L2 â Q L â Q L1) â + âL1. L1 ⪤*[R,T] L2 â Q L1. #R #HR #L2 #Q #HL2 #IHL2 #L1 #HL12 @(TC_star_ind_dx ⦠HL2 IHL2 ⦠HL12) /2 width=4 by rex_refl/ qed-. @@ -58,8 +58,8 @@ qed-. (* Advanced inversion lemmas ************************************************) lemma rexs_inv_bind_void: âR. c_reflexive ⦠R â - âp,I,L1,L2,V,T. L1 ⪤*[R, â{p,I}V.T] L2 â - â§â§ L1 ⪤*[R, V] L2 & L1.⧠⪤*[R, T] L2.â§. + âp,I,L1,L2,V,T. L1 ⪤*[R,â{p,I}V.T] L2 â + â§â§ L1 ⪤*[R,V] L2 & L1.⧠⪤*[R,T] L2.â§. #R #HR #p #I #L1 #L2 #V #T #H @(rexs_ind_sn ⦠HR ⦠H) -L2 [ /3 width=1 by rexs_refl, conj/ | #L #L2 #_ #H * elim (rex_inv_bind_void ⦠H) -H /3 width=3 by rexs_step_dx, conj/ @@ -69,7 +69,7 @@ qed-. (* Advanced forward lemmas **************************************************) lemma rexs_fwd_bind_dx_void: âR. c_reflexive ⦠R â - âp,I,L1,L2,V,T. L1 ⪤*[R, â{p,I}V.T] L2 â - L1.⧠⪤*[R, T] L2.â§. + âp,I,L1,L2,V,T. L1 ⪤*[R,â{p,I}V.T] L2 â + L1.⧠⪤*[R,T] L2.â§. #R #HR #p #I #L1 #L2 #V #T #H elim (rexs_inv_bind_void ⦠H) -H // qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_length.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_length.ma index a5c82f9f5..7e0bc2e01 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_length.ma @@ -20,7 +20,7 @@ include "static_2/i_static/rexs.ma". (* Forward lemmas with length for local environments ************************) (* Basic_2A1: uses: TC_lpx_sn_fwd_length *) -lemma rexs_fwd_length: âR,L1,L2,T. L1 ⪤*[R, T] L2 â |L1| = |L2|. +lemma rexs_fwd_length: âR,L1,L2,T. L1 ⪤*[R,T] L2 â |L1| = |L2|. #R #L1 #L2 #T #H elim H -L2 [ #L2 #HL12 >(rex_fwd_length ⦠HL12) -HL12 // | #L #L2 #_ #HL2 #IHL1 diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_lex.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_lex.ma index 4ac00b7a1..46d28f330 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_lex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_lex.ma @@ -22,14 +22,14 @@ include "static_2/i_static/rexs_fqup.ma". (* Properties with generic extension of a context sensitive relation ********) lemma rexs_lex: âR. c_reflexive ⦠R â - âL1,L2,T. L1 ⪤[CTC ⦠R] L2 â L1 ⪤*[R, T] L2. + âL1,L2,T. L1 ⪤[CTC ⦠R] L2 â L1 ⪤*[R,T] L2. #R #HR #L1 #L2 #T * /5 width=7 by rexs_tc, sex_inv_tc_dx, sex_co, ext2_inv_tc, ext2_refl/ qed. lemma rexs_lex_req: âR. c_reflexive ⦠R â âL1,L. L1 ⪤[CTC ⦠R] L â âL2,T. L â¡[T] L2 â - L1 ⪤*[R, T] L2. + L1 ⪤*[R,T] L2. /3 width=3 by rexs_lex, rexs_step_dx, req_fwd_rex/ qed. (* Inversion lemmas with generic extension of a context sensitive relation **) @@ -39,7 +39,7 @@ lemma rexs_inv_lex_req: âR. c_reflexive ⦠R â rex_fsge_compatible R â s_rs_transitive ⦠R (λ_.lex R) â req_transitive R â - âL1,L2,T. L1 ⪤*[R, T] L2 â + âL1,L2,T. L1 ⪤*[R,T] L2 â ââL. L1 ⪤[CTC ⦠R] L & L â¡[T] L2. #R #H1R #H2R #H3R #H4R #L1 #L2 #T #H lapply (s_rs_transitive_lex_inv_isid ⦠H3R) -H3R #H3R diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabbr_2.ma b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabbr_2.ma index 1eea5226e..1c31b90fc 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabbr_2.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabbr_2.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( L. break â T1 )" +notation "hvbox( L. â break T1 )" left associative with precedence 50 for @{ 'DxAbbr $L $T1 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabst_2.ma b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabst_2.ma index 3bb334e86..6c385b47b 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabst_2.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxabst_2.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( L. break â T1 )" +notation "hvbox( L. â break T1 )" left associative with precedence 51 for @{ 'DxAbst $L $T1 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind1_2.ma b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind1_2.ma index 5e78eeb18..a427352dd 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind1_2.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind1_2.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( L. break ⤠{ term 46 I } )" +notation "hvbox( L. ⤠{ break term 46 I } )" non associative with precedence 47 for @{ 'DxBind1 $L $I }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind2_3.ma b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind2_3.ma index 6800d8e5c..3b9e43699 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind2_3.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/functions/dxbind2_3.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( L. break â { term 46 I } break term 49 T1 )" +notation "hvbox( L. â { break term 46 I } break term 49 T1 )" non associative with precedence 48 for @{ 'DxBind2 $L $I $T1 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/functions/upspoon_2.ma b/matita/matita/contribs/lambdadelta/static_2/notation/functions/upspoon_2.ma new file mode 100644 index 000000000..c04bf2278 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/static_2/notation/functions/upspoon_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) + +notation "hvbox( ⫯[ term 46 h ] break term 46 s )" + non associative with precedence 46 + for @{ 'UpSpoon $h $s }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_6.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_6.ma index 57bdc3d94..8a8a95876 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_6.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_6.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⦠term 46 G1, term 46 L1, break term 46 T1 ⦠â + ⦠break term 46 G2, term 46 L2, break term 46 T2 ⦠)" +notation "hvbox( ⦠term 46 G1, break term 46 L1, break term 46 T1 ⦠â + ⦠break term 46 G2, break term 46 L2, break term 46 T2 ⦠)" non associative with precedence 45 for @{ 'SupTermPlus $G1 $L1 $T1 $G2 $L2 $T2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_7.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_7.ma index 3bbe31a83..49b6472fe 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_7.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermplus_7.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⦠term 46 G1, term 46 L1, break term 46 T1 ⦠â + [ break term 46 b ] ⦠break term 46 G2, term 46 L2, break term 46 T2 ⦠)" +notation "hvbox( ⦠term 46 G1, break term 46 L1, break term 46 T1 ⦠â + [ break term 46 b ] ⦠break term 46 G2, break term 46 L2, break term 46 T2 ⦠)" non associative with precedence 45 for @{ 'SupTermPlus $b $G1 $L1 $T1 $G2 $L2 $T2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_6.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_6.ma index a0bf55faa..279b363e7 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_6.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_6.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⦠term 46 G1, term 46 L1, break term 46 T1 ⦠â * ⦠break term 46 G2, break term 46 L2, break term 46 T2 ⦠)" +notation "hvbox( ⦠term 46 G1, break term 46 L1, break term 46 T1 ⦠â * ⦠break term 46 G2, break term 46 L2, break term 46 T2 ⦠)" non associative with precedence 45 for @{ 'SupTermStar $G1 $L1 $T1 $G2 $L2 $T2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_7.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_7.ma index 865019860..8b0ac452c 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_7.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/suptermstar_7.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⦠term 46 G1, term 46 L1, break term 46 T1 ⦠â * [ break term 46 b ] ⦠break term 46 G2, break term 46 L2, break term 46 T2 ⦠)" +notation "hvbox( ⦠term 46 G1, break term 46 L1, break term 46 T1 ⦠â * [ break term 46 b ] ⦠break term 46 G2, break term 46 L2, break term 46 T2 ⦠)" non associative with precedence 45 for @{ 'SupTermStar $b $G1 $L1 $T1 $G2 $L2 $T2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma index 939aeb534..dc4d6d75c 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma @@ -39,68 +39,68 @@ interpretation "generic slicing (local environment)" 'RDropStar b f L1 L2 = (drops b f L1 L2). definition d_liftable1: predicate (relation2 lenv term) â - λR. âK,T. R K T â âb,f,L. â¬*[b, f] L â K â + λR. âK,T. R K T â âb,f,L. â¬*[b,f] L â K â âU. â¬*[f] T â U â R L U. definition d_liftable1_isuni: predicate (relation2 lenv term) â - λR. âK,T. R K T â âb,f,L. â¬*[b, f] L â K â ðâ¦f⦠â + λR. âK,T. R K T â âb,f,L. â¬*[b,f] L â K â ðâ¦f⦠â âU. â¬*[f] T â U â R L U. definition d_deliftable1: predicate (relation2 lenv term) â - λR. âL,U. R L U â âb,f,K. â¬*[b, f] L â K â + λR. âL,U. R L U â âb,f,K. â¬*[b,f] L â K â âT. â¬*[f] T â U â R K T. definition d_deliftable1_isuni: predicate (relation2 lenv term) â - λR. âL,U. R L U â âb,f,K. â¬*[b, f] L â K â ðâ¦f⦠â + λR. âL,U. R L U â âb,f,K. â¬*[b,f] L â K â ðâ¦f⦠â âT. â¬*[f] T â U â R K T. definition d_liftable2_sn: âC:Type[0]. âS:rtmap â relation C. predicate (lenv â relation C) â - λC,S,R. âK,T1,T2. R K T1 T2 â âb,f,L. â¬*[b, f] L â K â + λC,S,R. âK,T1,T2. R K T1 T2 â âb,f,L. â¬*[b,f] L â K â âU1. S f T1 U1 â ââU2. S f T2 U2 & R L U1 U2. definition d_deliftable2_sn: âC:Type[0]. âS:rtmap â relation C. predicate (lenv â relation C) â - λC,S,R. âL,U1,U2. R L U1 U2 â âb,f,K. â¬*[b, f] L â K â + λC,S,R. âL,U1,U2. R L U1 U2 â âb,f,K. â¬*[b,f] L â K â âT1. S f T1 U1 â ââT2. S f T2 U2 & R K T1 T2. definition d_liftable2_bi: âC:Type[0]. âS:rtmap â relation C. predicate (lenv â relation C) â - λC,S,R. âK,T1,T2. R K T1 T2 â âb,f,L. â¬*[b, f] L â K â + λC,S,R. âK,T1,T2. R K T1 T2 â âb,f,L. â¬*[b,f] L â K â âU1. S f T1 U1 â âU2. S f T2 U2 â R L U1 U2. definition d_deliftable2_bi: âC:Type[0]. âS:rtmap â relation C. predicate (lenv â relation C) â - λC,S,R. âL,U1,U2. R L U1 U2 â âb,f,K. â¬*[b, f] L â K â + λC,S,R. âL,U1,U2. R L U1 U2 â âb,f,K. â¬*[b,f] L â K â âT1. S f T1 U1 â âT2. S f T2 U2 â R K T1 T2. definition co_dropable_sn: predicate (rtmap â relation lenv) â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â ðâ¦f⦠â + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â ðâ¦f⦠â âf2,L2. R f2 L1 L2 â âf1. f ~â f1 â f2 â - ââK2. R f1 K1 K2 & â¬*[b, f] L2 â K2. + ââK2. R f1 K1 K2 & â¬*[b,f] L2 â K2. definition co_dropable_dx: predicate (rtmap â relation lenv) â λR. âf2,L1,L2. R f2 L1 L2 â - âb,f,K2. â¬*[b, f] L2 â K2 â ðâ¦f⦠â + âb,f,K2. â¬*[b,f] L2 â K2 â ðâ¦f⦠â âf1. f ~â f1 â f2 â - ââK1. â¬*[b, f] L1 â K1 & R f1 K1 K2. + ââK1. â¬*[b,f] L1 â K1 & R f1 K1 K2. definition co_dedropable_sn: predicate (rtmap â relation lenv) â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â âf1,K2. R f1 K1 K2 â + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â âf1,K2. R f1 K1 K2 â âf2. f ~â f1 â f2 â - ââL2. R f2 L1 L2 & â¬*[b, f] L2 â K2 & L1 â¡[f] L2. + ââL2. R f2 L1 L2 & â¬*[b,f] L2 â K2 & L1 â¡[f] L2. (* Basic properties *********************************************************) -lemma drops_atom_F: âf. â¬*[â», f] â â â. +lemma drops_atom_F: âf. â¬*[â»,f] â â â. #f @drops_atom #H destruct qed. -lemma drops_eq_repl_back: âb,L1,L2. eq_repl_back ⦠(λf. â¬*[b, f] L1 â L2). +lemma drops_eq_repl_back: âb,L1,L2. eq_repl_back ⦠(λf. â¬*[b,f] L1 â L2). #b #L1 #L2 #f1 #H elim H -f1 -L1 -L2 [ /4 width=3 by drops_atom, isid_eq_repl_back/ | #f1 #I #L1 #L2 #_ #IH #f2 #H elim (eq_inv_nx ⦠H) -H @@ -110,23 +110,23 @@ lemma drops_eq_repl_back: âb,L1,L2. eq_repl_back ⦠(λf. â¬*[b, f] L1 â L ] qed-. -lemma drops_eq_repl_fwd: âb,L1,L2. eq_repl_fwd ⦠(λf. â¬*[b, f] L1 â L2). +lemma drops_eq_repl_fwd: âb,L1,L2. eq_repl_fwd ⦠(λf. â¬*[b,f] L1 â L2). #b #L1 #L2 @eq_repl_sym /2 width=3 by drops_eq_repl_back/ (**) (* full auto fails *) qed-. (* Basic_2A1: includes: drop_FT *) -lemma drops_TF: âf,L1,L2. â¬*[â, f] L1 â L2 â â¬*[â», f] L1 â L2. +lemma drops_TF: âf,L1,L2. â¬*[â,f] L1 â L2 â â¬*[â»,f] L1 â L2. #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by drops_atom, drops_drop, drops_skip/ qed. (* Basic_2A1: includes: drop_gen *) -lemma drops_gen: âb,f,L1,L2. â¬*[â, f] L1 â L2 â â¬*[b, f] L1 â L2. +lemma drops_gen: âb,f,L1,L2. â¬*[â,f] L1 â L2 â â¬*[b,f] L1 â L2. * /2 width=1 by drops_TF/ qed-. (* Basic_2A1: includes: drop_T *) -lemma drops_F: âb,f,L1,L2. â¬*[b, f] L1 â L2 â â¬*[â», f] L1 â L2. +lemma drops_F: âb,f,L1,L2. â¬*[b,f] L1 â L2 â â¬*[â»,f] L1 â L2. * /2 width=1 by drops_TF/ qed-. @@ -146,7 +146,7 @@ qed-. (* Basic inversion lemmas ***************************************************) -fact drops_inv_atom1_aux: âb,f,X,Y. â¬*[b, f] X â Y â X = â â +fact drops_inv_atom1_aux: âb,f,X,Y. â¬*[b,f] X â Y â X = â â Y = â ⧠(b = â â ðâ¦fâ¦). #b #f #X #Y * -f -X -Y [ /3 width=1 by conj/ @@ -157,11 +157,11 @@ qed-. (* Basic_1: includes: drop_gen_sort *) (* Basic_2A1: includes: drop_inv_atom1 *) -lemma drops_inv_atom1: âb,f,Y. â¬*[b, f] â â Y â Y = â ⧠(b = â â ðâ¦fâ¦). +lemma drops_inv_atom1: âb,f,Y. â¬*[b,f] â â Y â Y = â ⧠(b = â â ðâ¦fâ¦). /2 width=3 by drops_inv_atom1_aux/ qed-. -fact drops_inv_drop1_aux: âb,f,X,Y. â¬*[b, f] X â Y â âg,I,K. X = K.â{I} â f = âg â - â¬*[b, g] K â Y. +fact drops_inv_drop1_aux: âb,f,X,Y. â¬*[b,f] X â Y â âg,I,K. X = K.â{I} â f = âg â + â¬*[b,g] K â Y. #b #f #X #Y * -f -X -Y [ #f #Hf #g #J #K #H destruct | #f #I #L1 #L2 #HL #g #J #K #H1 #H2 <(injective_next ⦠H2) -g destruct // @@ -171,11 +171,11 @@ qed-. (* Basic_1: includes: drop_gen_drop *) (* Basic_2A1: includes: drop_inv_drop1_lt drop_inv_drop1 *) -lemma drops_inv_drop1: âb,f,I,K,Y. â¬*[b, âf] K.â{I} â Y â â¬*[b, f] K â Y. +lemma drops_inv_drop1: âb,f,I,K,Y. â¬*[b,âf] K.â{I} â Y â â¬*[b,f] K â Y. /2 width=6 by drops_inv_drop1_aux/ qed-. -fact drops_inv_skip1_aux: âb,f,X,Y. â¬*[b, f] X â Y â âg,I1,K1. X = K1.â{I1} â f = ⫯g â - ââI2,K2. â¬*[b, g] K1 â K2 & â¬*[g] I2 â I1 & Y = K2.â{I2}. +fact drops_inv_skip1_aux: âb,f,X,Y. â¬*[b,f] X â Y â âg,I1,K1. X = K1.â{I1} â f = ⫯g â + ââI2,K2. â¬*[b,g] K1 â K2 & â¬*[g] I2 â I1 & Y = K2.â{I2}. #b #f #X #Y * -f -X -Y [ #f #Hf #g #J1 #K1 #H destruct | #f #I #L1 #L2 #_ #g #J1 #K1 #_ #H2 elim (discr_next_push ⦠H2) @@ -186,12 +186,12 @@ qed-. (* Basic_1: includes: drop_gen_skip_l *) (* Basic_2A1: includes: drop_inv_skip1 *) -lemma drops_inv_skip1: âb,f,I1,K1,Y. â¬*[b, ⫯f] K1.â{I1} â Y â - ââI2,K2. â¬*[b, f] K1 â K2 & â¬*[f] I2 â I1 & Y = K2.â{I2}. +lemma drops_inv_skip1: âb,f,I1,K1,Y. â¬*[b,⫯f] K1.â{I1} â Y â + ââI2,K2. â¬*[b,f] K1 â K2 & â¬*[f] I2 â I1 & Y = K2.â{I2}. /2 width=5 by drops_inv_skip1_aux/ qed-. -fact drops_inv_skip2_aux: âb,f,X,Y. â¬*[b, f] X â Y â âg,I2,K2. Y = K2.â{I2} â f = ⫯g â - ââI1,K1. â¬*[b, g] K1 â K2 & â¬*[g] I2 â I1 & X = K1.â{I1}. +fact drops_inv_skip2_aux: âb,f,X,Y. â¬*[b,f] X â Y â âg,I2,K2. Y = K2.â{I2} â f = ⫯g â + ââI1,K1. â¬*[b,g] K1 â K2 & â¬*[g] I2 â I1 & X = K1.â{I1}. #b #f #X #Y * -f -X -Y [ #f #Hf #g #J2 #K2 #H destruct | #f #I #L1 #L2 #_ #g #J2 #K2 #_ #H2 elim (discr_next_push ⦠H2) @@ -202,14 +202,14 @@ qed-. (* Basic_1: includes: drop_gen_skip_r *) (* Basic_2A1: includes: drop_inv_skip2 *) -lemma drops_inv_skip2: âb,f,I2,X,K2. â¬*[b, ⫯f] X â K2.â{I2} â - ââI1,K1. â¬*[b, f] K1 â K2 & â¬*[f] I2 â I1 & X = K1.â{I1}. +lemma drops_inv_skip2: âb,f,I2,X,K2. â¬*[b,⫯f] X â K2.â{I2} â + ââI1,K1. â¬*[b,f] K1 â K2 & â¬*[f] I2 â I1 & X = K1.â{I1}. /2 width=5 by drops_inv_skip2_aux/ qed-. (* Basic forward lemmas *****************************************************) -fact drops_fwd_drop2_aux: âb,f2,X,Y. â¬*[b, f2] X â Y â âI,K. Y = K.â{I} â - ââf1,f. ðâ¦f1⦠& f2 â âf1 â f & â¬*[b, f] X â K. +fact drops_fwd_drop2_aux: âb,f2,X,Y. â¬*[b,f2] X â Y â âI,K. Y = K.â{I} â + ââf1,f. ðâ¦f1⦠& f2 â âf1 â f & â¬*[b,f] X â K. #b #f2 #X #Y #H elim H -f2 -X -Y [ #f2 #Hf2 #J #K #H destruct | #f2 #I #L1 #L2 #_ #IHL #J #K #H elim (IHL ⦠H) -IHL @@ -219,14 +219,14 @@ fact drops_fwd_drop2_aux: âb,f2,X,Y. â¬*[b, f2] X â Y â âI,K. Y = K.â ] qed-. -lemma drops_fwd_drop2: âb,f2,I,X,K. â¬*[b, f2] X â K.â{I} â - ââf1,f. ðâ¦f1⦠& f2 â âf1 â f & â¬*[b, f] X â K. +lemma drops_fwd_drop2: âb,f2,I,X,K. â¬*[b,f2] X â K.â{I} â + ââf1,f. ðâ¦f1⦠& f2 â âf1 â f & â¬*[b,f] X â K. /2 width=4 by drops_fwd_drop2_aux/ qed-. (* Properties with test for identity ****************************************) (* Basic_2A1: includes: drop_refl *) -lemma drops_refl: âb,L,f. ðâ¦f⦠â â¬*[b, f] L â L. +lemma drops_refl: âb,L,f. ðâ¦f⦠â â¬*[b,f] L â L. #b #L elim L -L /2 width=1 by drops_atom/ #L #I #IHL #f #Hf elim (isid_inv_gen ⦠Hf) -Hf /3 width=1 by drops_skip, liftsb_refl/ @@ -236,15 +236,15 @@ qed. (* Basic_1: includes: drop_gen_refl *) (* Basic_2A1: includes: drop_inv_O2 *) -lemma drops_fwd_isid: âb,f,L1,L2. â¬*[b, f] L1 â L2 â ðâ¦f⦠â L1 = L2. +lemma drops_fwd_isid: âb,f,L1,L2. â¬*[b,f] L1 â L2 â ðâ¦f⦠â L1 = L2. #b #f #L1 #L2 #H elim H -f -L1 -L2 // [ #f #I #L1 #L2 #_ #_ #H elim (isid_inv_next ⦠H) // | /5 width=5 by isid_inv_push, liftsb_fwd_isid, eq_f2, sym_eq/ ] qed-. -lemma drops_after_fwd_drop2: âb,f2,I,X,K. â¬*[b, f2] X â K.â{I} â - âf1,f. ðâ¦f1⦠â f2 â âf1 â f â â¬*[b, f] X â K. +lemma drops_after_fwd_drop2: âb,f2,I,X,K. â¬*[b,f2] X â K.â{I} â + âf1,f. ðâ¦f1⦠â f2 â âf1 â f â â¬*[b,f] X â K. #b #f2 #I #X #K #H #f1 #f #Hf1 #Hf elim (drops_fwd_drop2 ⦠H) -H #g1 #g #Hg1 #Hg #HK lapply (after_mono_eq ⦠Hg ⦠Hf ??) -Hg -Hf /3 width=5 by drops_eq_repl_back, isid_inv_eq_repl, eq_next/ @@ -252,14 +252,14 @@ qed-. (* Forward lemmas with test for finite colength *****************************) -lemma drops_fwd_isfin: âf,L1,L2. â¬*[â, f] L1 â L2 â ð â¦fâ¦. +lemma drops_fwd_isfin: âf,L1,L2. â¬*[â,f] L1 â L2 â ð â¦fâ¦. #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by isfin_next, isfin_push, isfin_isid/ qed-. (* Properties with test for uniformity **************************************) -lemma drops_isuni_ex: âf. ðâ¦f⦠â âL. âK. â¬*[â», f] L â K. +lemma drops_isuni_ex: âf. ðâ¦f⦠â âL. âK. â¬*[â»,f] L â K. #f #H elim H -f /4 width=2 by drops_refl, drops_TF, ex_intro/ #f #_ #g #H #IH destruct * /2 width=2 by ex_intro/ #L #I elim (IH L) -IH /3 width=2 by drops_drop, ex_intro/ @@ -267,9 +267,9 @@ qed-. (* Inversion lemmas with test for uniformity ********************************) -lemma drops_inv_isuni: âf,L1,L2. â¬*[â, f] L1 â L2 â ðâ¦f⦠â +lemma drops_inv_isuni: âf,L1,L2. â¬*[â,f] L1 â L2 â ðâ¦f⦠â (ðâ¦f⦠⧠L1 = L2) ⨠- ââg,I,K. â¬*[â, g] K â L2 & ðâ¦g⦠& L1 = K.â{I} & f = âg. + ââg,I,K. â¬*[â,g] K â L2 & ðâ¦g⦠& L1 = K.â{I} & f = âg. #f #L1 #L2 * -f -L1 -L2 [ /4 width=1 by or_introl, conj/ | /4 width=7 by isuni_inv_next, ex4_3_intro, or_intror/ @@ -278,9 +278,9 @@ lemma drops_inv_isuni: âf,L1,L2. â¬*[â, f] L1 â L2 â ðâ¦f⦠â qed-. (* Basic_2A1: was: drop_inv_O1_pair1 *) -lemma drops_inv_bind1_isuni: âb,f,I,K,L2. ðâ¦f⦠â â¬*[b, f] K.â{I} â L2 â +lemma drops_inv_bind1_isuni: âb,f,I,K,L2. ðâ¦f⦠â â¬*[b,f] K.â{I} â L2 â (ðâ¦f⦠⧠L2 = K.â{I}) ⨠- ââg. ðâ¦g⦠& â¬*[b, g] K â L2 & f = âg. + ââg. ðâ¦g⦠& â¬*[b,g] K â L2 & f = âg. #b #f #I #K #L2 #Hf #H elim (isuni_split ⦠Hf) -Hf * #g #Hg #H0 destruct [ lapply (drops_inv_skip1 ⦠H) -H * #Z #Y #HY #HZ #H destruct <(drops_fwd_isid ⦠HY Hg) -Y >(liftsb_fwd_isid ⦠HZ Hg) -Z @@ -290,9 +290,9 @@ lemma drops_inv_bind1_isuni: âb,f,I,K,L2. ðâ¦f⦠â â¬*[b, f] K.â{I} qed-. (* Basic_2A1: was: drop_inv_O1_pair2 *) -lemma drops_inv_bind2_isuni: âb,f,I,K,L1. ðâ¦f⦠â â¬*[b, f] L1 â K.â{I} â +lemma drops_inv_bind2_isuni: âb,f,I,K,L1. ðâ¦f⦠â â¬*[b,f] L1 â K.â{I} â (ðâ¦f⦠⧠L1 = K.â{I}) ⨠- ââg,I1,K1. ðâ¦g⦠& â¬*[b, g] K1 â K.â{I} & L1 = K1.â{I1} & f = âg. + ââg,I1,K1. ðâ¦g⦠& â¬*[b,g] K1 â K.â{I} & L1 = K1.â{I1} & f = âg. #b #f #I #K * [ #Hf #H elim (drops_inv_atom1 ⦠H) -H #H destruct | #L1 #I1 #Hf #H elim (drops_inv_bind1_isuni ⦠Hf H) -Hf -H * @@ -302,16 +302,16 @@ lemma drops_inv_bind2_isuni: âb,f,I,K,L1. ðâ¦f⦠â â¬*[b, f] L1 â K. ] qed-. -lemma drops_inv_bind2_isuni_next: âb,f,I,K,L1. ðâ¦f⦠â â¬*[b, âf] L1 â K.â{I} â - ââI1,K1. â¬*[b, f] K1 â K.â{I} & L1 = K1.â{I1}. +lemma drops_inv_bind2_isuni_next: âb,f,I,K,L1. ðâ¦f⦠â â¬*[b,âf] L1 â K.â{I} â + ââI1,K1. â¬*[b,f] K1 â K.â{I} & L1 = K1.â{I1}. #b #f #I #K #L1 #Hf #H elim (drops_inv_bind2_isuni ⦠H) -H /2 width=3 by isuni_next/ -Hf * [ #H elim (isid_inv_next ⦠H) -H // | /2 width=4 by ex2_2_intro/ ] qed-. -fact drops_inv_TF_aux: âf,L1,L2. â¬*[â», f] L1 â L2 â ðâ¦f⦠â - âI,K. L2 = K.â{I} â â¬*[â, f] L1 â K.â{I}. +fact drops_inv_TF_aux: âf,L1,L2. â¬*[â»,f] L1 â L2 â ðâ¦f⦠â + âI,K. L2 = K.â{I} â â¬*[â,f] L1 â K.â{I}. #f #L1 #L2 #H elim H -f -L1 -L2 [ #f #_ #_ #J #K #H destruct | #f #I #L1 #L2 #_ #IH #Hf #J #K #H destruct @@ -324,16 +324,16 @@ fact drops_inv_TF_aux: âf,L1,L2. â¬*[â», f] L1 â L2 â ðâ¦f⦠â qed-. (* Basic_2A1: includes: drop_inv_FT *) -lemma drops_inv_TF: âf,I,L,K. â¬*[â», f] L â K.â{I} â ðâ¦f⦠â â¬*[â, f] L â K.â{I}. +lemma drops_inv_TF: âf,I,L,K. â¬*[â»,f] L â K.â{I} â ðâ¦f⦠â â¬*[â,f] L â K.â{I}. /2 width=3 by drops_inv_TF_aux/ qed-. (* Basic_2A1: includes: drop_inv_gen *) -lemma drops_inv_gen: âb,f,I,L,K. â¬*[b, f] L â K.â{I} â ðâ¦f⦠â â¬*[â, f] L â K.â{I}. +lemma drops_inv_gen: âb,f,I,L,K. â¬*[b,f] L â K.â{I} â ðâ¦f⦠â â¬*[â,f] L â K.â{I}. * /2 width=1 by drops_inv_TF/ qed-. (* Basic_2A1: includes: drop_inv_T *) -lemma drops_inv_F: âb,f,I,L,K. â¬*[â», f] L â K.â{I} â ðâ¦f⦠â â¬*[b, f] L â K.â{I}. +lemma drops_inv_F: âb,f,I,L,K. â¬*[â»,f] L â K.â{I} â ðâ¦f⦠â â¬*[b,f] L â K.â{I}. * /2 width=1 by drops_inv_TF/ qed-. @@ -341,13 +341,13 @@ qed-. (* Basic_1: was: drop_S *) (* Basic_2A1: was: drop_fwd_drop2 *) -lemma drops_isuni_fwd_drop2: âb,f,I,X,K. ðâ¦f⦠â â¬*[b, f] X â K.â{I} â â¬*[b, âf] X â K. +lemma drops_isuni_fwd_drop2: âb,f,I,X,K. ðâ¦f⦠â â¬*[b,f] X â K.â{I} â â¬*[b,âf] X â K. /3 width=7 by drops_after_fwd_drop2, after_isid_isuni/ qed-. (* Inversion lemmas with uniform relocations ********************************) -lemma drops_inv_atom2: âb,L,f. â¬*[b, f] L â â â - âân,f1. â¬*[b, ðâ´nâµ] L â â & ðâ´nâµ â f1 â f. +lemma drops_inv_atom2: âb,L,f. â¬*[b,f] L â â â + âân,f1. â¬*[b,ðâ´nâµ] L â â & ðâ´nâµ â f1 â f. #b #L elim L -L [ /3 width=4 by drops_atom, after_isid_sn, ex2_2_intro/ | #L #I #IH #f #H elim (pn_split f) * #g #H0 destruct @@ -368,7 +368,7 @@ qed-. (* Properties with uniform relocations **************************************) -lemma drops_F_uni: âL,i. â¬*[â», ðâ´iâµ] L â â ⨠ââI,K. â¬*[i] L â K.â{I}. +lemma drops_F_uni: âL,i. â¬*[â»,ðâ´iâµ] L â â ⨠ââI,K. â¬*[i] L â K.â{I}. #L elim L -L /2 width=1 by or_introl/ #L #I #IH * /4 width=3 by drops_refl, ex1_2_intro, or_intror/ #i elim (IH i) -IH /3 width=1 by drops_drop, or_introl/ @@ -376,8 +376,8 @@ lemma drops_F_uni: âL,i. â¬*[â», ðâ´iâµ] L â â ⨠ââI,K. â¬*[ qed-. (* Basic_2A1: includes: drop_split *) -lemma drops_split_trans: âb,f,L1,L2. â¬*[b, f] L1 â L2 â âf1,f2. f1 â f2 â f â ðâ¦f1⦠â - ââL. â¬*[b, f1] L1 â L & â¬*[b, f2] L â L2. +lemma drops_split_trans: âb,f,L1,L2. â¬*[b,f] L1 â L2 â âf1,f2. f1 â f2 â f â ðâ¦f1⦠â + ââL. â¬*[b,f1] L1 â L & â¬*[b,f2] L â L2. #b #f #L1 #L2 #H elim H -f -L1 -L2 [ #f #H0f #f1 #f2 #Hf #Hf1 @(ex2_intro ⦠(â)) @drops_atom #H lapply (H0f H) -b @@ -396,8 +396,8 @@ lemma drops_split_trans: âb,f,L1,L2. â¬*[b, f] L1 â L2 â âf1,f2. f1 â ] qed-. -lemma drops_split_div: âb,f1,L1,L. â¬*[b, f1] L1 â L â âf2,f. f1 â f2 â f â ðâ¦f2⦠â - ââL2. â¬*[â», f2] L â L2 & â¬*[â», f] L1 â L2. +lemma drops_split_div: âb,f1,L1,L. â¬*[b,f1] L1 â L â âf2,f. f1 â f2 â f â ðâ¦f2⦠â + ââL2. â¬*[â»,f2] L â L2 & â¬*[â»,f] L1 â L2. #b #f1 #L1 #L #H elim H -f1 -L1 -L [ #f1 #Hf1 #f2 #f #Hf #Hf2 @(ex2_intro ⦠(â)) @drops_atom #H destruct | #f1 #I #L1 #L #HL1 #IH #f2 #f #Hf #Hf2 elim (after_inv_nxx ⦠Hf) -Hf [2,3: // ] @@ -421,8 +421,8 @@ lemma drops_tls_at: âf,i1,i2. @â¦i1,f⦠â i2 â â¬*[b,⫯⫱*[âi2]f] L1 â L2. /3 width=3 by drops_eq_repl_fwd, at_inv_tls/ qed-. -lemma drops_split_trans_bind2: âb,f,I,L,K0. â¬*[b, f] L â K0.â{I} â âi. @â¦O, f⦠â i â - ââJ,K. â¬*[i]L â K.â{J} & â¬*[b, ⫱*[âi]f] K â K0 & â¬*[⫱*[âi]f] I â J. +lemma drops_split_trans_bind2: âb,f,I,L,K0. â¬*[b,f] L â K0.â{I} â âi. @â¦O,f⦠â i â + ââJ,K. â¬*[i]L â K.â{J} & â¬*[b,⫱*[âi]f] K â K0 & â¬*[⫱*[âi]f] I â J. #b #f #I #L #K0 #H #i #Hf elim (drops_split_trans ⦠H) -H [ |5: @(after_uni_dx ⦠Hf) |2,3: skip ] /2 width=1 by after_isid_dx/ #Y #HLY #H lapply (drops_tls_at ⦠Hf ⦠H) -H #H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma index 4b52fd651..4e241edfd 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma @@ -20,9 +20,9 @@ include "static_2/relocation/drops_weight.ma". (* Main properties **********************************************************) (* Basic_2A1: includes: drop_conf_ge drop_conf_be drop_conf_le *) -theorem drops_conf: âb1,f1,L1,L. â¬*[b1, f1] L1 â L â - âb2,f,L2. â¬*[b2, f] L1 â L2 â - âf2. f1 â f2 â f â â¬*[b2, f2] L â L2. +theorem drops_conf: âb1,f1,L1,L. â¬*[b1,f1] L1 â L â + âb2,f,L2. â¬*[b2,f] L1 â L2 â + âf2. f1 â f2 â f â â¬*[b2,f2] L â L2. #b1 #f1 #L1 #L #H elim H -f1 -L1 -L [ #f1 #_ #b2 #f #L2 #HL2 #f2 #Hf12 elim (drops_inv_atom1 ⦠HL2) -b1 -HL2 #H #Hf destruct @drops_atom @@ -41,9 +41,9 @@ qed-. (* Basic_2A1: includes: drop_trans_ge drop_trans_le drop_trans_ge_comm drops_drop_trans *) -theorem drops_trans: âb1,f1,L1,L. â¬*[b1, f1] L1 â L â - âb2,f2,L2. â¬*[b2, f2] L â L2 â - âf. f1 â f2 â f â â¬*[b1â§b2, f] L1 â L2. +theorem drops_trans: âb1,f1,L1,L. â¬*[b1,f1] L1 â L â + âb2,f2,L2. â¬*[b2,f2] L â L2 â + âf. f1 â f2 â f â â¬*[b1â§b2,f] L1 â L2. #b1 #f1 #L1 #L #H elim H -f1 -L1 -L [ #f1 #Hf1 #b2 #f2 #L2 #HL2 #f #Hf elim (drops_inv_atom1 ⦠HL2) -HL2 #H #Hf2 destruct @drops_atom #H elim (andb_inv_true_dx ⦠H) -H @@ -85,13 +85,13 @@ qed-. (* Advanced properties ******************************************************) (* Basic_2A1: includes: drop_mono *) -lemma drops_mono: âb1,f,L,L1. â¬*[b1, f] L â L1 â - âb2,L2. â¬*[b2, f] L â L2 â L1 = L2. +lemma drops_mono: âb1,f,L,L1. â¬*[b1,f] L â L1 â + âb2,L2. â¬*[b2,f] L â L2 â L1 = L2. #b1 #f #L #L1 lapply (after_isid_dx ðð ⦠f) /3 width=8 by drops_conf, drops_fwd_isid/ qed-. -lemma drops_inv_uni: âL,i. â¬*[â», ðâ´iâµ] L â â â âI,K. â¬*[i] L â K.â{I} â â¥. +lemma drops_inv_uni: âL,i. â¬*[â»,ðâ´iâµ] L â â â âI,K. â¬*[i] L â K.â{I} â â¥. #L #i #H1 #I #K #H2 lapply (drops_F ⦠H2) -H2 #H2 lapply (drops_mono ⦠H2 ⦠H1) -L -i #H destruct @@ -106,21 +106,21 @@ lemma drops_ldec_dec: âL,i. Decidable (ââK,W. â¬*[i] L â K.âW). qed-. (* Basic_2A1: includes: drop_conf_lt *) -lemma drops_conf_skip1: âb2,f,L,L2. â¬*[b2, f] L â L2 â - âb1,f1,I1,K1. â¬*[b1, f1] L â K1.â{I1} â +lemma drops_conf_skip1: âb2,f,L,L2. â¬*[b2,f] L â L2 â + âb1,f1,I1,K1. â¬*[b1,f1] L â K1.â{I1} â âf2. f1 â ⫯f2 â f â ââI2,K2. L2 = K2.â{I2} & - â¬*[b2, f2] K1 â K2 & â¬*[f2] I2 â I1. + â¬*[b2,f2] K1 â K2 & â¬*[f2] I2 â I1. #b2 #f #L #L2 #H2 #b1 #f1 #I1 #K1 #H1 #f2 #Hf lapply (drops_conf ⦠H1 ⦠H2 ⦠Hf) -L -Hf #H elim (drops_inv_skip1 ⦠H) -H /2 width=5 by ex3_2_intro/ qed-. (* Basic_2A1: includes: drop_trans_lt *) -lemma drops_trans_skip2: âb1,f1,L1,L. â¬*[b1, f1] L1 â L â - âb2,f2,I2,K2. â¬*[b2, f2] L â K2.â{I2} â +lemma drops_trans_skip2: âb1,f1,L1,L. â¬*[b1,f1] L1 â L â + âb2,f2,I2,K2. â¬*[b2,f2] L â K2.â{I2} â âf. f1 â f2 â ⫯f â ââI1,K1. L1 = K1.â{I1} & - â¬*[b1â§b2, f] K1 â K2 & â¬*[f] I2 â I1. + â¬*[b1â§b2,f] K1 â K2 & â¬*[f] I2 â I1. #b1 #f1 #L1 #L #H1 #b2 #f2 #I2 #K2 #H2 #f #Hf lapply (drops_trans ⦠H1 ⦠H2 ⦠Hf) -L -Hf #H elim (drops_inv_skip2 ⦠H) -H /2 width=5 by ex3_2_intro/ @@ -128,7 +128,7 @@ qed-. (* Basic_2A1: includes: drops_conf_div *) lemma drops_conf_div_bind: âf1,f2,I1,I2,L,K. - â¬*[â, f1] L â K.â{I1} â â¬*[â, f2] L â K.â{I2} â + â¬*[â,f1] L â K.â{I1} â â¬*[â,f2] L â K.â{I2} â ðâ¦f1⦠â ðâ¦f2⦠â f1 â¡ f2 ⧠I1 = I2. #f1 #f2 #I1 #I2 #L #K #Hf1 #Hf2 #HU1 #HU2 lapply (drops_isuni_fwd_drop2 ⦠Hf1) // #H1 diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma index 94085a331..1a20d722f 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma @@ -20,13 +20,13 @@ include "static_2/relocation/drops.ma". (* Forward lemmas with length for local environments ************************) (* Basic_2A1: includes: drop_fwd_length_le4 *) -lemma drops_fwd_length_le4: âb,f,L1,L2. â¬*[b, f] L1 â L2 â |L2| ⤠|L1|. +lemma drops_fwd_length_le4: âb,f,L1,L2. â¬*[b,f] L1 â L2 â |L2| ⤠|L1|. #b #f #L1 #L2 #H elim H -f -L1 -L2 /2 width=1 by le_S, le_S_S/ qed-. (* Basic_2A1: includes: drop_fwd_length_eq1 *) -theorem drops_fwd_length_eq1: âb1,b2,f,L1,K1. â¬*[b1, f] L1 â K1 â - âL2,K2. â¬*[b2, f] L2 â K2 â +theorem drops_fwd_length_eq1: âb1,b2,f,L1,K1. â¬*[b1,f] L1 â K1 â + âL2,K2. â¬*[b2,f] L2 â K2 â |L1| = |L2| â |K1| = |K2|. #b1 #b2 #f #L1 #K1 #HLK1 elim HLK1 -f -L1 -K1 [ #f #_ #L2 #K2 #HLK2 #H lapply (length_inv_zero_sn ⦠H) -H @@ -43,7 +43,7 @@ qed-. (* forward lemmas with finite colength assignment ***************************) -lemma drops_fwd_fcla: âf,L1,L2. â¬*[â, f] L1 â L2 â +lemma drops_fwd_fcla: âf,L1,L2. â¬*[â,f] L1 â L2 â âân. ðâ¦f⦠â n & |L1| = |L2| + n. #f #L1 #L2 #H elim H -f -L1 -L2 [ /4 width=3 by fcla_isid, ex2_intro/ @@ -53,25 +53,25 @@ lemma drops_fwd_fcla: âf,L1,L2. â¬*[â, f] L1 â L2 â qed-. (* Basic_2A1: includes: drop_fwd_length *) -lemma drops_fcla_fwd: âf,L1,L2,n. â¬*[â, f] L1 â L2 â ðâ¦f⦠â n â +lemma drops_fcla_fwd: âf,L1,L2,n. â¬*[â,f] L1 â L2 â ðâ¦f⦠â n â |L1| = |L2| + n. #f #l1 #l2 #n #Hf #Hn elim (drops_fwd_fcla ⦠Hf) -Hf #k #Hm #H <(fcla_mono ⦠Hm ⦠Hn) -f // qed-. -lemma drops_fwd_fcla_le2: âf,L1,L2. â¬*[â, f] L1 â L2 â +lemma drops_fwd_fcla_le2: âf,L1,L2. â¬*[â,f] L1 â L2 â âân. ðâ¦f⦠â n & n ⤠|L1|. #f #L1 #L2 #H elim (drops_fwd_fcla ⦠H) -H /2 width=3 by ex2_intro/ qed-. (* Basic_2A1: includes: drop_fwd_length_le2 *) -lemma drops_fcla_fwd_le2: âf,L1,L2,n. â¬*[â, f] L1 â L2 â ðâ¦f⦠â n â +lemma drops_fcla_fwd_le2: âf,L1,L2,n. â¬*[â,f] L1 â L2 â ðâ¦f⦠â n â n ⤠|L1|. #f #L1 #L2 #n #H #Hn elim (drops_fwd_fcla_le2 ⦠H) -H #k #Hm #H <(fcla_mono ⦠Hm ⦠Hn) -f // qed-. -lemma drops_fwd_fcla_lt2: âf,L1,I2,K2. â¬*[â, f] L1 â K2.â{I2} â +lemma drops_fwd_fcla_lt2: âf,L1,I2,K2. â¬*[â,f] L1 â K2.â{I2} â âân. ðâ¦f⦠â n & n < |L1|. #f #L1 #I2 #K2 #H elim (drops_fwd_fcla ⦠H) -H #n #Hf #H >H -L1 /3 width=3 by le_S_S, ex2_intro/ @@ -79,27 +79,27 @@ qed-. (* Basic_2A1: includes: drop_fwd_length_lt2 *) lemma drops_fcla_fwd_lt2: âf,L1,I2,K2,n. - â¬*[â, f] L1 â K2.â{I2} â ðâ¦f⦠â n â + â¬*[â,f] L1 â K2.â{I2} â ðâ¦f⦠â n â n < |L1|. #f #L1 #I2 #K2 #n #H #Hn elim (drops_fwd_fcla_lt2 ⦠H) -H #k #Hm #H <(fcla_mono ⦠Hm ⦠Hn) -f // qed-. (* Basic_2A1: includes: drop_fwd_length_lt4 *) -lemma drops_fcla_fwd_lt4: âf,L1,L2,n. â¬*[â, f] L1 â L2 â ðâ¦f⦠â n â 0 < n â +lemma drops_fcla_fwd_lt4: âf,L1,L2,n. â¬*[â,f] L1 â L2 â ðâ¦f⦠â n â 0 < n â |L2| < |L1|. #f #L1 #L2 #n #H #Hf #Hn lapply (drops_fcla_fwd ⦠H Hf) -f /2 width=1 by lt_minus_to_plus_r/ qed-. (* Basic_2A1: includes: drop_inv_length_eq *) -lemma drops_inv_length_eq: âf,L1,L2. â¬*[â, f] L1 â L2 â |L1| = |L2| â ðâ¦fâ¦. +lemma drops_inv_length_eq: âf,L1,L2. â¬*[â,f] L1 â L2 â |L1| = |L2| â ðâ¦fâ¦. #f #L1 #L2 #H #HL12 elim (drops_fwd_fcla ⦠H) -H #n #Hn <HL12 -L2 #H lapply (discr_plus_x_xy ⦠H) -H /2 width=3 by fcla_inv_xp/ qed-. (* Basic_2A1: includes: drop_fwd_length_eq2 *) -theorem drops_fwd_length_eq2: âf,L1,L2,K1,K2. â¬*[â, f] L1 â K1 â â¬*[â, f] L2 â K2 â +theorem drops_fwd_length_eq2: âf,L1,L2,K1,K2. â¬*[â,f] L1 â K1 â â¬*[â,f] L2 â K2 â |K1| = |K2| â |L1| = |L2|. #f #L1 #L2 #K1 #K2 #HLK1 #HLK2 #HL12 elim (drops_fwd_fcla ⦠HLK1) -HLK1 #n1 #Hn1 #H1 >H1 -L1 @@ -107,7 +107,7 @@ elim (drops_fwd_fcla ⦠HLK2) -HLK2 #n2 #Hn2 #H2 >H2 -L2 <(fcla_mono ⦠Hn2 ⦠Hn1) -f // qed-. -theorem drops_conf_div: âf1,f2,L1,L2. â¬*[â, f1] L1 â L2 â â¬*[â, f2] L1 â L2 â +theorem drops_conf_div: âf1,f2,L1,L2. â¬*[â,f1] L1 â L2 â â¬*[â,f2] L1 â L2 â âân. ðâ¦f1⦠â n & ðâ¦f2⦠â n. #f1 #f2 #L1 #L2 #H1 #H2 elim (drops_fwd_fcla ⦠H1) -H1 #n1 #Hf1 #H1 @@ -116,7 +116,7 @@ lapply (injective_plus_r ⦠H) -L2 #H destruct /2 width=3 by ex2_intro/ qed-. theorem drops_conf_div_fcla: âf1,f2,L1,L2,n1,n2. - â¬*[â, f1] L1 â L2 â â¬*[â, f2] L1 â L2 â ðâ¦f1⦠â n1 â ðâ¦f2⦠â n2 â + â¬*[â,f1] L1 â L2 â â¬*[â,f2] L1 â L2 â ðâ¦f1⦠â n1 â ðâ¦f2⦠â n2 â n1 = n2. #f1 #f2 #L1 #L2 #n1 #n2 #Hf1 #Hf2 #Hn1 #Hn2 lapply (drops_fcla_fwd ⦠Hf1 Hn1) -f1 #H1 diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma index 1e33fc3d8..8db2c8830 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma @@ -19,16 +19,16 @@ include "static_2/relocation/drops_sex.ma". (* GENERIC SLICING FOR LOCAL ENVIRONMENTS ***********************************) definition dedropable_sn: predicate ⦠â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â âK2. K1 ⪤[R] K2 â - ââL2. L1 ⪤[R] L2 & â¬*[b, f] L2 â K2 & L1 â¡[f] L2. + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â âK2. K1 ⪤[R] K2 â + ââL2. L1 ⪤[R] L2 & â¬*[b,f] L2 â K2 & L1 â¡[f] L2. definition dropable_sn: predicate ⦠â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â ðâ¦f⦠â âL2. L1 ⪤[R] L2 â - ââK2. K1 ⪤[R] K2 & â¬*[b, f] L2 â K2. + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â ðâ¦f⦠â âL2. L1 ⪤[R] L2 â + ââK2. K1 ⪤[R] K2 & â¬*[b,f] L2 â K2. definition dropable_dx: predicate ⦠â - λR. âL1,L2. L1 ⪤[R] L2 â âb,f,K2. â¬*[b, f] L2 â K2 â ðâ¦f⦠â - ââK1. â¬*[b, f] L1 â K1 & K1 ⪤[R] K2. + λR. âL1,L2. L1 ⪤[R] L2 â âb,f,K2. â¬*[b,f] L2 â K2 â ðâ¦f⦠â + ââK1. â¬*[b,f] L1 â K1 & K1 ⪤[R] K2. (* Properties with generic extension ****************************************) @@ -58,8 +58,8 @@ qed-. (* Basic_2A1: includes: lpx_sn_drop_conf *) lemma lex_drops_conf_pair (R): âL1,L2. L1 ⪤[R] L2 â - âb,f,I,K1,V1. â¬*[b, f] L1 â K1.â{I}V1 â ðâ¦f⦠â - ââK2,V2. â¬*[b, f] L2 â K2.â{I}V2 & K1 ⪤[R] K2 & R K1 V1 V2. + âb,f,I,K1,V1. â¬*[b,f] L1 â K1.â{I}V1 â ðâ¦f⦠â + ââK2,V2. â¬*[b,f] L2 â K2.â{I}V2 & K1 ⪤[R] K2 & R K1 V1 V2. #R #L1 #L2 * #f2 #Hf2 #HL12 #b #f #I #K1 #V1 #HLK1 #Hf elim (sex_drops_conf_push ⦠HL12 ⦠HLK1 Hf f2) -L1 -Hf [ #Z2 #K2 #HLK2 #HK12 #H @@ -71,8 +71,8 @@ qed-. (* Basic_2A1: includes: lpx_sn_drop_trans *) lemma lex_drops_trans_pair (R): âL1,L2. L1 ⪤[R] L2 â - âb,f,I,K2,V2. â¬*[b, f] L2 â K2.â{I}V2 â ðâ¦f⦠â - ââK1,V1. â¬*[b, f] L1 â K1.â{I}V1 & K1 ⪤[R] K2 & R K1 V1 V2. + âb,f,I,K2,V2. â¬*[b,f] L2 â K2.â{I}V2 â ðâ¦f⦠â + ââK1,V1. â¬*[b,f] L1 â K1.â{I}V1 & K1 ⪤[R] K2 & R K1 V1 V2. #R #L1 #L2 * #f2 #Hf2 #HL12 #b #f #I #K2 #V2 #HLK2 #Hf elim (sex_drops_trans_push ⦠HL12 ⦠HLK2 Hf f2) -L2 -Hf [ #Z1 #K1 #HLK1 #HK12 #H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma index 94beb0a71..e214e9480 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma @@ -30,9 +30,9 @@ lemma seq_co_dropable_dx: co_dropable_dx seq. (* Basic_2A1: includes: lreq_drop_trans_be *) lemma seq_drops_trans_next: âf2,L1,L2. L1 â¡[f2] L2 â - âb,f,I,K2. â¬*[b, f] L2 â K2.â{I} â ðâ¦f⦠â + âb,f,I,K2. â¬*[b,f] L2 â K2.â{I} â ðâ¦f⦠â âf1. f ~â âf1 â f2 â - ââK1. â¬*[b, f] L1 â K1.â{I} & K1 â¡[f1] K2. + ââK1. â¬*[b,f] L1 â K1.â{I} & K1 â¡[f1] K2. #f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 elim (sex_drops_trans_next ⦠HL12 ⦠HLK2 Hf ⦠Hf2) -f2 -L2 -Hf #I1 #K1 #HLK1 #HK12 #H <(ceq_ext_inv_eq ⦠H) -I2 @@ -41,18 +41,18 @@ qed-. (* Basic_2A1: includes: lreq_drop_conf_be *) lemma seq_drops_conf_next: âf2,L1,L2. L1 â¡[f2] L2 â - âb,f,I,K1. â¬*[b, f] L1 â K1.â{I} â ðâ¦f⦠â + âb,f,I,K1. â¬*[b,f] L1 â K1.â{I} â ðâ¦f⦠â âf1. f ~â âf1 â f2 â - ââK2. â¬*[b, f] L2 â K2.â{I} & K1 â¡[f1] K2. + ââK2. â¬*[b,f] L2 â K2.â{I} & K1 â¡[f1] K2. #f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (seq_drops_trans_next ⦠(seq_sym ⦠HL12) ⦠HLK1 ⦠Hf2) // -f2 -L1 -Hf /3 width=3 by seq_sym, ex2_intro/ qed-. lemma drops_seq_trans_next: âf1,K1,K2. K1 â¡[f1] K2 â - âb,f,I,L1. â¬*[b, f] L1.â{I} â K1 â + âb,f,I,L1. â¬*[b,f] L1.â{I} â K1 â âf2. f ~â f1 â âf2 â - ââL2. â¬*[b, f] L2.â{I} â K2 & L1 â¡[f2] L2 & L1.â{I} â¡[f] L2.â{I}. + ââL2. â¬*[b,f] L2.â{I} â K2 & L1 â¡[f2] L2 & L1.â{I} â¡[f] L2.â{I}. #f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (drops_sex_trans_next ⦠HK12 ⦠HLK1 ⦠Hf2) -f1 -K1 /2 width=6 by cfull_lift_sn, ceq_lift_sn/ diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma index e1263a2fd..8f3058cb9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma @@ -42,9 +42,9 @@ lemma sex_co_dropable_sn: âRN,RP. co_dropable_sn (sex RN RP). qed-. lemma sex_liftable_co_dedropable_bi: âRN,RP. d_liftable2_sn ⦠liftsb RN â d_liftable2_sn ⦠liftsb RP â - âf2,L1,L2. L1 ⪤[cfull, RP, f2] L2 â âf1,K1,K2. K1 ⪤[RN, RP, f1] K2 â - âb,f. â¬*[b, f] L1 â K1 â â¬*[b, f] L2 â K2 â - f ~â f1 â f2 â L1 ⪤[RN, RP, f2] L2. + âf2,L1,L2. L1 ⪤[cfull,RP,f2] L2 â âf1,K1,K2. K1 ⪤[RN,RP,f1] K2 â + âb,f. â¬*[b,f] L1 â K1 â â¬*[b,f] L2 â K2 â + f ~â f1 â f2 â L1 ⪤[RN,RP,f2] L2. #RN #RP #HRN #HRP #f2 #L1 #L2 #H elim H -f2 -L1 -L2 // #g2 #I1 #I2 #L1 #L2 #HL12 #HI12 #IH #f1 #Y1 #Y2 #HK12 #b #f #HY1 #HY2 #H [ elim (coafter_inv_xxn ⦠H) [ |*: // ] -H #g #g1 #Hg2 #H1 #H2 destruct @@ -87,9 +87,9 @@ lemma sex_liftable_co_dedropable_sn: âRN,RP. (âL. reflexive ⦠(RN L)) â ] qed-. -fact sex_dropable_dx_aux: âRN,RP,b,f,L2,K2. â¬*[b, f] L2 â K2 â ðâ¦f⦠â - âf2,L1. L1 ⪤[RN, RP, f2] L2 â âf1. f ~â f1 â f2 â - ââK1. â¬*[b, f] L1 â K1 & K1 ⪤[RN, RP, f1] K2. +fact sex_dropable_dx_aux: âRN,RP,b,f,L2,K2. â¬*[b,f] L2 â K2 â ðâ¦f⦠â + âf2,L1. L1 ⪤[RN,RP,f2] L2 â âf1. f ~â f1 â f2 â + ââK1. â¬*[b,f] L1 â K1 & K1 ⪤[RN,RP,f1] K2. #RN #RP #b #f #L2 #K2 #H elim H -f -L2 -K2 [ #f #Hf #_ #f2 #X #H #f1 #Hf2 lapply (sex_inv_atom2 ⦠H) -H #H destruct /4 width=3 by sex_atom, drops_atom, ex2_intro/ @@ -113,10 +113,10 @@ lemma sex_co_dropable_dx: âRN,RP. co_dropable_dx (sex RN RP). /2 width=5 by sex_dropable_dx_aux/ qed-. lemma sex_drops_conf_next: âRN,RP. - âf2,L1,L2. L1 ⪤[RN, RP, f2] L2 â - âb,f,I1,K1. â¬*[b, f] L1 â K1.â{I1} â ðâ¦f⦠â + âf2,L1,L2. L1 ⪤[RN,RP,f2] L2 â + âb,f,I1,K1. â¬*[b,f] L1 â K1.â{I1} â ðâ¦f⦠â âf1. f ~â âf1 â f2 â - ââI2,K2. â¬*[b, f] L2 â K2.â{I2} & K1 ⪤[RN, RP, f1] K2 & RN K1 I1 I2. + ââI2,K2. â¬*[b,f] L2 â K2.â{I2} & K1 ⪤[RN,RP,f1] K2 & RN K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (sex_co_dropable_sn ⦠HLK1 ⦠Hf ⦠HL12 ⦠Hf2) -L1 -f2 -Hf #X #HX #HLK2 elim (sex_inv_next1 ⦠HX) -HX @@ -124,30 +124,30 @@ elim (sex_co_dropable_sn ⦠HLK1 ⦠Hf ⦠HL12 ⦠Hf2) -L1 -f2 -Hf qed-. lemma sex_drops_conf_push: âRN,RP. - âf2,L1,L2. L1 ⪤[RN, RP, f2] L2 â - âb,f,I1,K1. â¬*[b, f] L1 â K1.â{I1} â ðâ¦f⦠â + âf2,L1,L2. L1 ⪤[RN,RP,f2] L2 â + âb,f,I1,K1. â¬*[b,f] L1 â K1.â{I1} â ðâ¦f⦠â âf1. f ~â ⫯f1 â f2 â - ââI2,K2. â¬*[b, f] L2 â K2.â{I2} & K1 ⪤[RN, RP, f1] K2 & RP K1 I1 I2. + ââI2,K2. â¬*[b,f] L2 â K2.â{I2} & K1 ⪤[RN,RP,f1] K2 & RP K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (sex_co_dropable_sn ⦠HLK1 ⦠Hf ⦠HL12 ⦠Hf2) -L1 -f2 -Hf #X #HX #HLK2 elim (sex_inv_push1 ⦠HX) -HX #I2 #K2 #HK12 #HI12 #H destruct /2 width=5 by ex3_2_intro/ qed-. -lemma sex_drops_trans_next: âRN,RP,f2,L1,L2. L1 ⪤[RN, RP, f2] L2 â - âb,f,I2,K2. â¬*[b, f] L2 â K2.â{I2} â ðâ¦f⦠â +lemma sex_drops_trans_next: âRN,RP,f2,L1,L2. L1 ⪤[RN,RP,f2] L2 â + âb,f,I2,K2. â¬*[b,f] L2 â K2.â{I2} â ðâ¦f⦠â âf1. f ~â âf1 â f2 â - ââI1,K1. â¬*[b, f] L1 â K1.â{I1} & K1 ⪤[RN, RP, f1] K2 & RN K1 I1 I2. + ââI1,K1. â¬*[b,f] L1 â K1.â{I1} & K1 ⪤[RN,RP,f1] K2 & RN K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 elim (sex_co_dropable_dx ⦠HL12 ⦠HLK2 ⦠Hf ⦠Hf2) -L2 -f2 -Hf #X #HLK1 #HX elim (sex_inv_next2 ⦠HX) -HX #I1 #K1 #HK12 #HI12 #H destruct /2 width=5 by ex3_2_intro/ qed-. -lemma sex_drops_trans_push: âRN,RP,f2,L1,L2. L1 ⪤[RN, RP, f2] L2 â - âb,f,I2,K2. â¬*[b, f] L2 â K2.â{I2} â ðâ¦f⦠â +lemma sex_drops_trans_push: âRN,RP,f2,L1,L2. L1 ⪤[RN,RP,f2] L2 â + âb,f,I2,K2. â¬*[b,f] L2 â K2.â{I2} â ðâ¦f⦠â âf1. f ~â ⫯f1 â f2 â - ââI1,K1. â¬*[b, f] L1 â K1.â{I1} & K1 ⪤[RN, RP, f1] K2 & RP K1 I1 I2. + ââI1,K1. â¬*[b,f] L1 â K1.â{I1} & K1 ⪤[RN,RP,f1] K2 & RP K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 elim (sex_co_dropable_dx ⦠HL12 ⦠HLK2 ⦠Hf ⦠Hf2) -L2 -f2 -Hf #X #HLK1 #HX elim (sex_inv_push2 ⦠HX) -HX @@ -156,10 +156,10 @@ qed-. lemma drops_sex_trans_next: âRN,RP. (âL. reflexive ? (RN L)) â (âL. reflexive ? (RP L)) â d_liftable2_sn ⦠liftsb RN â d_liftable2_sn ⦠liftsb RP â - âf1,K1,K2. K1 ⪤[RN, RP, f1] K2 â - âb,f,I1,L1. â¬*[b, f] L1.â{I1} â K1 â + âf1,K1,K2. K1 ⪤[RN,RP,f1] K2 â + âb,f,I1,L1. â¬*[b,f] L1.â{I1} â K1 â âf2. f ~â f1 â âf2 â - ââI2,L2. â¬*[b, f] L2.â{I2} â K2 & L1 ⪤[RN, RP, f2] L2 & RN L1 I1 I2 & L1.â{I1} â¡[f] L2.â{I2}. + ââI2,L2. â¬*[b,f] L2.â{I2} â K2 & L1 ⪤[RN,RP,f2] L2 & RN L1 I1 I2 & L1.â{I1} â¡[f] L2.â{I2}. #RN #RP #H1RN #H1RP #H2RN #H2RP #f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (sex_liftable_co_dedropable_sn ⦠H1RN H1RP H2RN H2RP ⦠HLK1 ⦠HK12 ⦠Hf2) -K1 -f1 -H1RN -H1RP -H2RN -H2RP #X #HX #HLK2 #H1L12 elim (sex_inv_next1 ⦠HX) -HX @@ -168,19 +168,19 @@ qed-. lemma drops_sex_trans_push: âRN,RP. (âL. reflexive ? (RN L)) â (âL. reflexive ? (RP L)) â d_liftable2_sn ⦠liftsb RN â d_liftable2_sn ⦠liftsb RP â - âf1,K1,K2. K1 ⪤[RN, RP, f1] K2 â - âb,f,I1,L1. â¬*[b, f] L1.â{I1} â K1 â + âf1,K1,K2. K1 ⪤[RN,RP,f1] K2 â + âb,f,I1,L1. â¬*[b,f] L1.â{I1} â K1 â âf2. f ~â f1 â ⫯f2 â - ââI2,L2. â¬*[b, f] L2.â{I2} â K2 & L1 ⪤[RN, RP, f2] L2 & RP L1 I1 I2 & L1.â{I1} â¡[f] L2.â{I2}. + ââI2,L2. â¬*[b,f] L2.â{I2} â K2 & L1 ⪤[RN,RP,f2] L2 & RP L1 I1 I2 & L1.â{I1} â¡[f] L2.â{I2}. #RN #RP #H1RN #H1RP #H2RN #H2RP #f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (sex_liftable_co_dedropable_sn ⦠H1RN H1RP H2RN H2RP ⦠HLK1 ⦠HK12 ⦠Hf2) -K1 -f1 -H1RN -H1RP -H2RN -H2RP #X #HX #HLK2 #H1L12 elim (sex_inv_push1 ⦠HX) -HX #I2 #L2 #H2L12 #HI12 #H destruct /2 width=6 by ex4_2_intro/ qed-. -lemma drops_atom2_sex_conf: âRN,RP,b,f1,L1. â¬*[b, f1] L1 â â â ðâ¦f1⦠â - âf,L2. L1 ⪤[RN, RP, f] L2 â - âf2. f1 ~â f2 âf â â¬*[b, f1] L2 â â. +lemma drops_atom2_sex_conf: âRN,RP,b,f1,L1. â¬*[b,f1] L1 â â â ðâ¦f1⦠â + âf,L2. L1 ⪤[RN,RP,f] L2 â + âf2. f1 ~â f2 âf â â¬*[b,f1] L2 â â. #RN #RP #b #f1 #L1 #H1 #Hf1 #f #L2 #H2 #f2 #H3 elim (sex_co_dropable_sn ⦠H1 ⦠H2 ⦠H3) // -H1 -H2 -H3 -Hf1 #L #H #HL2 lapply (sex_inv_atom1 ⦠H) -H // diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma index 8c43b6404..4f5eef017 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma @@ -19,7 +19,7 @@ include "static_2/relocation/drops.ma". definition d_liftable1_all: predicate (relation2 lenv term) â λR. âK,Ts. all ⦠(R K) Ts â - âb,f,L. â¬*[b, f] L â K â + âb,f,L. â¬*[b,f] L â K â âUs. â¬*[f] Ts â Us â all ⦠(R L) Us. (* Properties with generic relocation for term vectors **********************) diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma index dfcb44500..8c94cce14 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma @@ -21,7 +21,7 @@ include "static_2/relocation/drops.ma". (* Forward lemmas with weight for local environments ************************) (* Basic_2A1: includes: drop_fwd_lw *) -lemma drops_fwd_lw: âb,f,L1,L2. â¬*[b, f] L1 â L2 â â¯{L2} ⤠â¯{L1}. +lemma drops_fwd_lw: âb,f,L1,L2. â¬*[b,f] L1 â L2 â â¯{L2} ⤠â¯{L1}. #b #f #L1 #L2 #H elim H -f -L1 -L2 // [ /2 width=3 by transitive_le/ | #f #I1 #I2 #L1 #L2 #_ #HI21 #IHL12 normalize @@ -30,7 +30,7 @@ lemma drops_fwd_lw: âb,f,L1,L2. â¬*[b, f] L1 â L2 â â¯{L2} ⤠â¯{L1}. qed-. (* Basic_2A1: includes: drop_fwd_lw_lt *) -lemma drops_fwd_lw_lt: âf,L1,L2. â¬*[â, f] L1 â L2 â +lemma drops_fwd_lw_lt: âf,L1,L2. â¬*[â,f] L1 â L2 â (ðâ¦f⦠â â¥) â â¯{L2} < â¯{L1}. #f #L1 #L2 #H elim H -f -L1 -L2 [ #f #Hf #Hnf elim Hnf -Hnf /2 width=1 by/ @@ -43,14 +43,14 @@ qed-. (* Forward lemmas with restricted weight for closures ***********************) (* Basic_2A1: includes: drop_fwd_rfw *) -lemma drops_bind2_fwd_rfw: âb,f,I,L,K,V. â¬*[b, f] L â K.â{I}V â âT. â¯{K, V} < â¯{L, T}. +lemma drops_bind2_fwd_rfw: âb,f,I,L,K,V. â¬*[b,f] L â K.â{I}V â âT. â¯{K,V} < â¯{L,T}. #b #f #I #L #K #V #HLK lapply (drops_fwd_lw ⦠HLK) -HLK normalize in ⢠(%â?â?%%); /3 width=3 by le_to_lt_to_lt, monotonic_lt_plus_r/ qed-. (* Advanced inversion lemma *************************************************) -lemma drops_inv_x_bind_xy: âb,f,I,L. â¬*[b, f] L â L.â{I} â â¥. +lemma drops_inv_x_bind_xy: âb,f,I,L. â¬*[b,f] L â L.â{I} â â¥. #b #f #I #L #H lapply (drops_fwd_lw ⦠H) -b -f /2 width=4 by lt_le_false/ (**) (* full auto is a bit slow: 19s *) qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma index 1900d273d..76381a9fa 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma @@ -22,7 +22,7 @@ include "static_2/relocation/sex.ma". (* GENERIC EXTENSION OF A CONTEXT-SENSITIVE REALTION FOR TERMS **************) definition lex (R): relation lenv â - λL1,L2. ââf. ðâ¦f⦠& L1 ⪤[cfull, cext2 R, f] L2. + λL1,L2. ââf. ðâ¦f⦠& L1 ⪤[cfull,cext2 R,f] L2. interpretation "generic extension (local environment)" 'Relation R L1 L2 = (lex R L1 L2). diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma index 681363f03..4ec47cc91 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma @@ -24,7 +24,7 @@ include "static_2/syntax/term.ma". *) inductive lifts: rtmap â relation term â | lifts_sort: âf,s. lifts f (âs) (âs) -| lifts_lref: âf,i1,i2. @â¦i1, f⦠â i2 â lifts f (#i1) (#i2) +| lifts_lref: âf,i1,i2. @â¦i1,f⦠â i2 â lifts f (#i1) (#i2) | lifts_gref: âf,l. lifts f (§l) (§l) | lifts_bind: âf,p,I,V1,V2,T1,T2. lifts f V1 V2 â lifts (⫯f) T1 T2 â @@ -80,7 +80,7 @@ lemma lifts_inv_sort1: âf,Y,s. â¬*[f] âs â Y â Y = âs. /2 width=4 by lifts_inv_sort1_aux/ qed-. fact lifts_inv_lref1_aux: âf,X,Y. â¬*[f] X â Y â âi1. X = #i1 â - ââi2. @â¦i1, f⦠â i2 & Y = #i2. + ââi2. @â¦i1,f⦠â i2 & Y = #i2. #f #X #Y * -f -X -Y [ #f #s #x #H destruct | #f #i1 #i2 #Hi12 #x #H destruct /2 width=3 by ex2_intro/ @@ -93,7 +93,7 @@ qed-. (* Basic_1: was: lift1_lref *) (* Basic_2A1: includes: lift_inv_lref1 lift_inv_lref1_lt lift_inv_lref1_ge *) lemma lifts_inv_lref1: âf,Y,i1. â¬*[f] #i1 â Y â - ââi2. @â¦i1, f⦠â i2 & Y = #i2. + ââi2. @â¦i1,f⦠â i2 & Y = #i2. /2 width=3 by lifts_inv_lref1_aux/ qed-. fact lifts_inv_gref1_aux: âf,X,Y. â¬*[f] X â Y â âl. X = §l â Y = §l. @@ -162,7 +162,7 @@ lemma lifts_inv_sort2: âf,X,s. â¬*[f] X â âs â X = âs. /2 width=4 by lifts_inv_sort2_aux/ qed-. fact lifts_inv_lref2_aux: âf,X,Y. â¬*[f] X â Y â âi2. Y = #i2 â - ââi1. @â¦i1, f⦠â i2 & X = #i1. + ââi1. @â¦i1,f⦠â i2 & X = #i1. #f #X #Y * -f -X -Y [ #f #s #x #H destruct | #f #i1 #i2 #Hi12 #x #H destruct /2 width=3 by ex2_intro/ @@ -175,7 +175,7 @@ qed-. (* Basic_1: includes: lift_gen_lref lift_gen_lref_lt lift_gen_lref_false lift_gen_lref_ge *) (* Basic_2A1: includes: lift_inv_lref2 lift_inv_lref2_lt lift_inv_lref2_be lift_inv_lref2_ge lift_inv_lref2_plus *) lemma lifts_inv_lref2: âf,X,i2. â¬*[f] X â #i2 â - ââi1. @â¦i1, f⦠â i2 & X = #i1. + ââi1. @â¦i1,f⦠â i2 & X = #i1. /2 width=3 by lifts_inv_lref2_aux/ qed-. fact lifts_inv_gref2_aux: âf,X,Y. â¬*[f] X â Y â âl. Y = §l â X = §l. @@ -234,7 +234,7 @@ lemma lifts_inv_flat2: âf:rtmap. âI,V2,T2,X. â¬*[f] X â â{I}V2.T2 â lemma lifts_inv_atom1: âf,I,Y. â¬*[f] âª{I} â Y â â¨â¨ ââs. I = Sort s & Y = âs - | ââi,j. @â¦i, f⦠â j & I = LRef i & Y = #j + | ââi,j. @â¦i,f⦠â j & I = LRef i & Y = #j | ââl. I = GRef l & Y = §l. #f * #n #Y #H [ lapply (lifts_inv_sort1 ⦠H) @@ -245,7 +245,7 @@ qed-. lemma lifts_inv_atom2: âf,I,X. â¬*[f] X â âª{I} â â¨â¨ ââs. X = âs & I = Sort s - | ââi,j. @â¦i, f⦠â j & X = #i & I = LRef j + | ââi,j. @â¦i,f⦠â j & X = #i & I = LRef j | ââl. X = §l & I = GRef l. #f * #n #X #H [ lapply (lifts_inv_sort2 ⦠H) diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma index df09463c8..6247b8686 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma @@ -38,7 +38,7 @@ definition R_pw_confluent2_sex: relation3 lenv bind bind â relation3 lenv bind relation3 rtmap lenv bind â λR1,R2,RN1,RP1,RN2,RP2,f,L0,I0. âI1. R1 L0 I0 I1 â âI2. R2 L0 I0 I2 â - âL1. L0 ⪤[RN1, RP1, f] L1 â âL2. L0 ⪤[RN2, RP2, f] L2 â + âL1. L0 ⪤[RN1,RP1,f] L1 â âL2. L0 ⪤[RN2,RP2,f] L2 â ââI. R2 L1 I1 I & R1 L2 I2 I. definition sex_transitive: relation3 lenv bind bind â relation3 lenv bind bind â @@ -46,22 +46,22 @@ definition sex_transitive: relation3 lenv bind bind â relation3 lenv bind bind relation3 lenv bind bind â relation3 lenv bind bind â relation3 rtmap lenv bind â λR1,R2,R3,RN,RP,f,L1,I1. - âI. R1 L1 I1 I â âL2. L1 ⪤[RN, RP, f] L2 â + âI. R1 L1 I1 I â âL2. L1 ⪤[RN,RP,f] L2 â âI2. R2 L2 I I2 â R3 L1 I1 I2. (* Basic inversion lemmas ***************************************************) -fact sex_inv_atom1_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â X = â â Y = â. +fact sex_inv_atom1_aux: âRN,RP,f,X,Y. X ⪤[RN,RP,f] Y â X = â â Y = â. #RN #RP #f #X #Y * -f -X -Y // #f #I1 #I2 #L1 #L2 #_ #_ #H destruct qed-. (* Basic_2A1: includes lpx_sn_inv_atom1 *) -lemma sex_inv_atom1: âRN,RP,f,Y. â ⪤[RN, RP, f] Y â Y = â. +lemma sex_inv_atom1: âRN,RP,f,Y. â ⪤[RN,RP,f] Y â Y = â. /2 width=6 by sex_inv_atom1_aux/ qed-. -fact sex_inv_next1_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J1,K1. X = K1.â{J1} â f = âg â - ââJ2,K2. K1 ⪤[RN, RP, g] K2 & RN K1 J1 J2 & Y = K2.â{J2}. +fact sex_inv_next1_aux: âRN,RP,f,X,Y. X ⪤[RN,RP,f] Y â âg,J1,K1. X = K1.â{J1} â f = âg â + ââJ2,K2. K1 ⪤[RN,RP,g] K2 & RN K1 J1 J2 & Y = K2.â{J2}. #RN #RP #f #X #Y * -f -X -Y [ #f #g #J1 #K1 #H destruct | #f #I1 #I2 #L1 #L2 #HL #HI #g #J1 #K1 #H1 #H2 <(injective_next ⦠H2) -g destruct @@ -71,12 +71,12 @@ fact sex_inv_next1_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J1,K1. X = K qed-. (* Basic_2A1: includes lpx_sn_inv_pair1 *) -lemma sex_inv_next1: âRN,RP,g,J1,K1,Y. K1.â{J1} ⪤[RN, RP, âg] Y â - ââJ2,K2. K1 ⪤[RN, RP, g] K2 & RN K1 J1 J2 & Y = K2.â{J2}. +lemma sex_inv_next1: âRN,RP,g,J1,K1,Y. K1.â{J1} ⪤[RN,RP,âg] Y â + ââJ2,K2. K1 ⪤[RN,RP,g] K2 & RN K1 J1 J2 & Y = K2.â{J2}. /2 width=7 by sex_inv_next1_aux/ qed-. -fact sex_inv_push1_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J1,K1. X = K1.â{J1} â f = ⫯g â - ââJ2,K2. K1 ⪤[RN, RP, g] K2 & RP K1 J1 J2 & Y = K2.â{J2}. +fact sex_inv_push1_aux: âRN,RP,f,X,Y. X ⪤[RN,RP,f] Y â âg,J1,K1. X = K1.â{J1} â f = ⫯g â + ââJ2,K2. K1 ⪤[RN,RP,g] K2 & RP K1 J1 J2 & Y = K2.â{J2}. #RN #RP #f #X #Y * -f -X -Y [ #f #g #J1 #K1 #H destruct | #f #I1 #I2 #L1 #L2 #_ #_ #g #J1 #K1 #_ #H elim (discr_next_push ⦠H) @@ -85,21 +85,21 @@ fact sex_inv_push1_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J1,K1. X = K ] qed-. -lemma sex_inv_push1: âRN,RP,g,J1,K1,Y. K1.â{J1} ⪤[RN, RP, ⫯g] Y â - ââJ2,K2. K1 ⪤[RN, RP, g] K2 & RP K1 J1 J2 & Y = K2.â{J2}. +lemma sex_inv_push1: âRN,RP,g,J1,K1,Y. K1.â{J1} ⪤[RN,RP,⫯g] Y â + ââJ2,K2. K1 ⪤[RN,RP,g] K2 & RP K1 J1 J2 & Y = K2.â{J2}. /2 width=7 by sex_inv_push1_aux/ qed-. -fact sex_inv_atom2_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â Y = â â X = â. +fact sex_inv_atom2_aux: âRN,RP,f,X,Y. X ⪤[RN,RP,f] Y â Y = â â X = â. #RN #RP #f #X #Y * -f -X -Y // #f #I1 #I2 #L1 #L2 #_ #_ #H destruct qed-. (* Basic_2A1: includes lpx_sn_inv_atom2 *) -lemma sex_inv_atom2: âRN,RP,f,X. X ⪤[RN, RP, f] â â X = â. +lemma sex_inv_atom2: âRN,RP,f,X. X ⪤[RN,RP,f] â â X = â. /2 width=6 by sex_inv_atom2_aux/ qed-. -fact sex_inv_next2_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J2,K2. Y = K2.â{J2} â f = âg â - ââJ1,K1. K1 ⪤[RN, RP, g] K2 & RN K1 J1 J2 & X = K1.â{J1}. +fact sex_inv_next2_aux: âRN,RP,f,X,Y. X ⪤[RN,RP,f] Y â âg,J2,K2. Y = K2.â{J2} â f = âg â + ââJ1,K1. K1 ⪤[RN,RP,g] K2 & RN K1 J1 J2 & X = K1.â{J1}. #RN #RP #f #X #Y * -f -X -Y [ #f #g #J2 #K2 #H destruct | #f #I1 #I2 #L1 #L2 #HL #HI #g #J2 #K2 #H1 #H2 <(injective_next ⦠H2) -g destruct @@ -109,12 +109,12 @@ fact sex_inv_next2_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J2,K2. Y = K qed-. (* Basic_2A1: includes lpx_sn_inv_pair2 *) -lemma sex_inv_next2: âRN,RP,g,J2,X,K2. X ⪤[RN, RP, âg] K2.â{J2} â - ââJ1,K1. K1 ⪤[RN, RP, g] K2 & RN K1 J1 J2 & X = K1.â{J1}. +lemma sex_inv_next2: âRN,RP,g,J2,X,K2. X ⪤[RN,RP,âg] K2.â{J2} â + ââJ1,K1. K1 ⪤[RN,RP,g] K2 & RN K1 J1 J2 & X = K1.â{J1}. /2 width=7 by sex_inv_next2_aux/ qed-. -fact sex_inv_push2_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J2,K2. Y = K2.â{J2} â f = ⫯g â - ââJ1,K1. K1 ⪤[RN, RP, g] K2 & RP K1 J1 J2 & X = K1.â{J1}. +fact sex_inv_push2_aux: âRN,RP,f,X,Y. X ⪤[RN,RP,f] Y â âg,J2,K2. Y = K2.â{J2} â f = ⫯g â + ââJ1,K1. K1 ⪤[RN,RP,g] K2 & RP K1 J1 J2 & X = K1.â{J1}. #RN #RP #f #X #Y * -f -X -Y [ #f #J2 #K2 #g #H destruct | #f #I1 #I2 #L1 #L2 #_ #_ #g #J2 #K2 #_ #H elim (discr_next_push ⦠H) @@ -123,28 +123,28 @@ fact sex_inv_push2_aux: âRN,RP,f,X,Y. X ⪤[RN, RP, f] Y â âg,J2,K2. Y = K ] qed-. -lemma sex_inv_push2: âRN,RP,g,J2,X,K2. X ⪤[RN, RP, ⫯g] K2.â{J2} â - ââJ1,K1. K1 ⪤[RN, RP, g] K2 & RP K1 J1 J2 & X = K1.â{J1}. +lemma sex_inv_push2: âRN,RP,g,J2,X,K2. X ⪤[RN,RP,⫯g] K2.â{J2} â + ââJ1,K1. K1 ⪤[RN,RP,g] K2 & RP K1 J1 J2 & X = K1.â{J1}. /2 width=7 by sex_inv_push2_aux/ qed-. (* Basic_2A1: includes lpx_sn_inv_pair *) lemma sex_inv_next: âRN,RP,f,I1,I2,L1,L2. - L1.â{I1} ⪤[RN, RP, âf] L2.â{I2} â - L1 ⪤[RN, RP, f] L2 ⧠RN L1 I1 I2. + L1.â{I1} ⪤[RN,RP,âf] L2.â{I2} â + L1 ⪤[RN,RP,f] L2 ⧠RN L1 I1 I2. #RN #RP #f #I1 #I2 #L1 #L2 #H elim (sex_inv_next1 ⦠H) -H #I0 #L0 #HL10 #HI10 #H destruct /2 width=1 by conj/ qed-. lemma sex_inv_push: âRN,RP,f,I1,I2,L1,L2. - L1.â{I1} ⪤[RN, RP, ⫯f] L2.â{I2} â - L1 ⪤[RN, RP, f] L2 ⧠RP L1 I1 I2. + L1.â{I1} ⪤[RN,RP,⫯f] L2.â{I2} â + L1 ⪤[RN,RP,f] L2 ⧠RP L1 I1 I2. #RN #RP #f #I1 #I2 #L1 #L2 #H elim (sex_inv_push1 ⦠H) -H #I0 #L0 #HL10 #HI10 #H destruct /2 width=1 by conj/ qed-. -lemma sex_inv_tl: âRN,RP,f,I1,I2,L1,L2. L1 ⪤[RN, RP, ⫱f] L2 â +lemma sex_inv_tl: âRN,RP,f,I1,I2,L1,L2. L1 ⪤[RN,RP,⫱f] L2 â RN L1 I1 I2 â RP L1 I1 I2 â - L1.â{I1} ⪤[RN, RP, f] L2.â{I2}. + L1.â{I1} ⪤[RN,RP,f] L2.â{I2}. #RN #RP #f #I1 #I2 #L2 #L2 elim (pn_split f) * /2 width=1 by sex_next, sex_push/ qed-. @@ -152,8 +152,8 @@ qed-. (* Basic forward lemmas *****************************************************) lemma sex_fwd_bind: âRN,RP,f,I1,I2,L1,L2. - L1.â{I1} ⪤[RN, RP, f] L2.â{I2} â - L1 ⪤[RN, RP, ⫱f] L2. + L1.â{I1} ⪤[RN,RP,f] L2.â{I2} â + L1 ⪤[RN,RP,⫱f] L2. #RN #RP #f #I1 #I2 #L1 #L2 #Hf elim (pn_split f) * #g #H destruct [ elim (sex_inv_push ⦠Hf) | elim (sex_inv_next ⦠Hf) ] -Hf // @@ -161,7 +161,7 @@ qed-. (* Basic properties *********************************************************) -lemma sex_eq_repl_back: âRN,RP,L1,L2. eq_repl_back ⦠(λf. L1 ⪤[RN, RP, f] L2). +lemma sex_eq_repl_back: âRN,RP,L1,L2. eq_repl_back ⦠(λf. L1 ⪤[RN,RP,f] L2). #RN #RP #L1 #L2 #f1 #H elim H -f1 -L1 -L2 // #f1 #I1 #I2 #L1 #L2 #_ #HI #IH #f2 #H [ elim (eq_inv_nx ⦠H) -H /3 width=3 by sex_next/ @@ -169,7 +169,7 @@ lemma sex_eq_repl_back: âRN,RP,L1,L2. eq_repl_back ⦠(λf. L1 ⪤[RN, RP, f] ] qed-. -lemma sex_eq_repl_fwd: âRN,RP,L1,L2. eq_repl_fwd ⦠(λf. L1 ⪤[RN, RP, f] L2). +lemma sex_eq_repl_fwd: âRN,RP,L1,L2. eq_repl_fwd ⦠(λf. L1 ⪤[RN,RP,f] L2). #RN #RP #L1 #L2 @eq_repl_sym /2 width=3 by sex_eq_repl_back/ (**) (* full auto fails *) qed-. @@ -189,20 +189,20 @@ lemma sex_sym: âRN,RP. qed-. lemma sex_pair_repl: âRN,RP,f,I1,I2,L1,L2. - L1.â{I1} ⪤[RN, RP, f] L2.â{I2} â + L1.â{I1} ⪤[RN,RP,f] L2.â{I2} â âJ1,J2. RN L1 J1 J2 â RP L1 J1 J2 â - L1.â{J1} ⪤[RN, RP, f] L2.â{J2}. + L1.â{J1} ⪤[RN,RP,f] L2.â{J2}. /3 width=3 by sex_inv_tl, sex_fwd_bind/ qed-. lemma sex_co: âRN1,RP1,RN2,RP2. RN1 â RN2 â RP1 â RP2 â - âf,L1,L2. L1 ⪤[RN1, RP1, f] L2 â L1 ⪤[RN2, RP2, f] L2. + âf,L1,L2. L1 ⪤[RN1,RP1,f] L2 â L1 ⪤[RN2,RP2,f] L2. #RN1 #RP1 #RN2 #RP2 #HRN #HRP #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by sex_atom, sex_next, sex_push/ qed-. lemma sex_co_isid: âRN1,RP1,RN2,RP2. RP1 â RP2 â - âf,L1,L2. L1 ⪤[RN1, RP1, f] L2 â ðâ¦f⦠â - L1 ⪤[RN2, RP2, f] L2. + âf,L1,L2. L1 ⪤[RN1,RP1,f] L2 â ðâ¦f⦠â + L1 ⪤[RN2,RP2,f] L2. #RN1 #RP1 #RN2 #RP2 #HR #f #L1 #L2 #H elim H -f -L1 -L2 // #f #I1 #I2 #K1 #K2 #_ #HI12 #IH #H [ elim (isid_inv_next ⦠H) -H // @@ -211,8 +211,8 @@ lemma sex_co_isid: âRN1,RP1,RN2,RP2. RP1 â RP2 â qed-. lemma sex_sdj: âRN,RP. RP â RN â - âf1,L1,L2. L1 ⪤[RN, RP, f1] L2 â - âf2. f1 ⥠f2 â L1 ⪤[RP, RN, f2] L2. + âf1,L1,L2. L1 ⪤[RN,RP,f1] L2 â + âf2. f1 ⥠f2 â L1 ⪤[RP,RN,f2] L2. #RN #RP #HR #f1 #L1 #L2 #H elim H -f1 -L1 -L2 // #f1 #I1 #I2 #L1 #L2 #_ #HI12 #IH #f2 #H12 [ elim (sdj_inv_nx ⦠H12) -H12 [2,3: // ] @@ -223,8 +223,8 @@ lemma sex_sdj: âRN,RP. RP â RN â qed-. lemma sle_sex_trans: âRN,RP. RN â RP â - âf2,L1,L2. L1 ⪤[RN, RP, f2] L2 â - âf1. f1 â f2 â L1 ⪤[RN, RP, f1] L2. + âf2,L1,L2. L1 ⪤[RN,RP,f2] L2 â + âf1. f1 â f2 â L1 ⪤[RN,RP,f1] L2. #RN #RP #HR #f2 #L1 #L2 #H elim H -f2 -L1 -L2 // #f2 #I1 #I2 #L1 #L2 #_ #HI12 #IH #f1 #H12 [ elim (pn_split f1) * ] @@ -236,8 +236,8 @@ lemma sle_sex_trans: âRN,RP. RN â RP â qed-. lemma sle_sex_conf: âRN,RP. RP â RN â - âf1,L1,L2. L1 ⪤[RN, RP, f1] L2 â - âf2. f1 â f2 â L1 ⪤[RN, RP, f2] L2. + âf1,L1,L2. L1 ⪤[RN,RP,f1] L2 â + âf2. f1 â f2 â L1 ⪤[RN,RP,f2] L2. #RN #RP #HR #f1 #L1 #L2 #H elim H -f1 -L1 -L2 // #f1 #I1 #I2 #L1 #L2 #_ #HI12 #IH #f2 #H12 [2: elim (pn_split f2) * ] @@ -249,8 +249,8 @@ lemma sle_sex_conf: âRN,RP. RP â RN â qed-. lemma sex_sle_split: âR1,R2,RP. c_reflexive ⦠R1 â c_reflexive ⦠R2 â - âf,L1,L2. L1 ⪤[R1, RP, f] L2 â âg. f â g â - ââL. L1 ⪤[R1, RP, g] L & L ⪤[R2, cfull, f] L2. + âf,L1,L2. L1 ⪤[R1,RP,f] L2 â âg. f â g â + ââL. L1 ⪤[R1,RP,g] L & L ⪤[R2,cfull,f] L2. #R1 #R2 #RP #HR1 #HR2 #f #L1 #L2 #H elim H -f -L1 -L2 [ /2 width=3 by sex_atom, ex2_intro/ ] #f #I1 #I2 #L1 #L2 #_ #HI12 #IH #y #H @@ -262,8 +262,8 @@ lemma sex_sle_split: âR1,R2,RP. c_reflexive ⦠R1 â c_reflexive ⦠R2 â qed-. lemma sex_sdj_split: âR1,R2,RP. c_reflexive ⦠R1 â c_reflexive ⦠R2 â - âf,L1,L2. L1 ⪤[R1, RP, f] L2 â âg. f ⥠g â - ââL. L1 ⪤[RP, R1, g] L & L ⪤[R2, cfull, f] L2. + âf,L1,L2. L1 ⪤[R1,RP,f] L2 â âg. f ⥠g â + ââL. L1 ⪤[RP,R1,g] L & L ⪤[R2,cfull,f] L2. #R1 #R2 #RP #HR1 #HR2 #f #L1 #L2 #H elim H -f -L1 -L2 [ /2 width=3 by sex_atom, ex2_intro/ ] #f #I1 #I2 #L1 #L2 #_ #HI12 #IH #y #H @@ -277,7 +277,7 @@ qed-. lemma sex_dec: âRN,RP. (âL,I1,I2. Decidable (RN L I1 I2)) â (âL,I1,I2. Decidable (RP L I1 I2)) â - âL1,L2,f. Decidable (L1 ⪤[RN, RP, f] L2). + âL1,L2,f. Decidable (L1 ⪤[RN,RP,f] L2). #RN #RP #HRN #HRP #L1 elim L1 -L1 [ * | #L1 #I1 #IH * ] [ /2 width=1 by sex_atom, or_introl/ | #L2 #I2 #f @or_intror #H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_length.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_length.ma index a7b2a5d71..4a2379889 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_length.ma @@ -20,13 +20,13 @@ include "static_2/relocation/sex.ma". (* Forward lemmas with length for local environments ************************) (* Note: "#f #I1 #I2 #L1 #L2 >length_bind >length_bind //" was needed to conclude *) -lemma sex_fwd_length: âRN,RP,f,L1,L2. L1 ⪤[RN, RP, f] L2 â |L1| = |L2|. +lemma sex_fwd_length: âRN,RP,f,L1,L2. L1 ⪤[RN,RP,f] L2 â |L1| = |L2|. #RN #RP #f #L1 #L2 #H elim H -f -L1 -L2 // qed-. (* Properties with length for local environments ****************************) -lemma sex_length_cfull: âL1,L2. |L1| = |L2| â âf. L1 ⪤[cfull, cfull, f] L2. +lemma sex_length_cfull: âL1,L2. |L1| = |L2| â âf. L1 ⪤[cfull,cfull,f] L2. #L1 elim L1 -L1 [ #Y2 #H >(length_inv_zero_sn ⦠H) -Y2 // | #L1 #I1 #IH #Y2 #H #f @@ -36,7 +36,7 @@ lemma sex_length_cfull: âL1,L2. |L1| = |L2| â âf. L1 ⪤[cfull, cfull, f] qed. lemma sex_length_isid: âR,L1,L2. |L1| = |L2| â - âf. ðâ¦f⦠â L1 ⪤[R, cfull, f] L2. + âf. ðâ¦f⦠â L1 ⪤[R,cfull,f] L2. #R #L1 elim L1 -L1 [ #Y2 #H >(length_inv_zero_sn ⦠H) -Y2 // | #L1 #I1 #IH #Y2 #H #f #Hf diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma index 571379e2f..c1954b1a7 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma @@ -23,9 +23,9 @@ theorem sex_trans_gen (RN1) (RP1) (RN2) (RP2) (RN) (RP): âL1,f. (âg,I,K,n. â¬*[n] L1 â K.â{I} â âg = ⫱*[n] f â sex_transitive RN1 RN2 RN RN1 RP1 g K I) â (âg,I,K,n. â¬*[n] L1 â K.â{I} â ⫯g = ⫱*[n] f â sex_transitive RP1 RP2 RP RN1 RP1 g K I) â - âL0. L1 ⪤[RN1, RP1, f] L0 â - âL2. L0 ⪤[RN2, RP2, f] L2 â - L1 ⪤[RN, RP, f] L2. + âL0. L1 ⪤[RN1,RP1,f] L0 â + âL2. L0 ⪤[RN2,RP2,f] L2 â + L1 ⪤[RN,RP,f] L2. #RN1 #RP1 #RN2 #RP2 #RN #RP #L1 elim L1 -L1 [ #f #_ #_ #L0 #H1 #L2 #H2 lapply (sex_inv_atom1 ⦠H1) -H1 #H destruct @@ -50,8 +50,8 @@ theorem sex_trans (RN) (RP) (f): (âg,I,K. sex_transitive RN RN RN RN RP g K I) Transitive ⦠(sex RN RP f). /2 width=9 by sex_trans_gen/ qed-. -theorem sex_trans_id_cfull: âR1,R2,R3,L1,L,f. L1 ⪤[R1, cfull, f] L â ðâ¦f⦠â - âL2. L ⪤[R2, cfull, f] L2 â L1 ⪤[R3, cfull, f] L2. +theorem sex_trans_id_cfull: âR1,R2,R3,L1,L,f. L1 ⪤[R1,cfull,f] L â ðâ¦f⦠â + âL2. L ⪤[R2,cfull,f] L2 â L1 ⪤[R3,cfull,f] L2. #R1 #R2 #R3 #L1 #L #f #H elim H -L1 -L -f [ #f #Hf #L2 #H >(sex_inv_atom1 ⦠H) -L2 // ] #f #I1 #I #K1 #K #HK1 #_ #IH #Hf #L2 #H @@ -93,9 +93,9 @@ theorem sex_canc_dx: âRN,RP,f. Transitive ⦠(sex RN RP f) â /3 width=3 by/ qed-. lemma sex_meet: âRN,RP,L1,L2. - âf1. L1 ⪤[RN, RP, f1] L2 â - âf2. L1 ⪤[RN, RP, f2] L2 â - âf. f1 â f2 â f â L1 ⪤[RN, RP, f] L2. + âf1. L1 ⪤[RN,RP,f1] L2 â + âf2. L1 ⪤[RN,RP,f2] L2 â + âf. f1 â f2 â f â L1 ⪤[RN,RP,f] L2. #RN #RP #L1 #L2 #f1 #H elim H -f1 -L1 -L2 // #f1 #I1 #I2 #L1 #L2 #_ #HI12 #IH #f2 #H #f #Hf elim (pn_split f2) * #g2 #H2 destruct @@ -106,9 +106,9 @@ try elim (sex_inv_push ⦠H) try elim (sex_inv_next ⦠H) -H qed-. lemma sex_join: âRN,RP,L1,L2. - âf1. L1 ⪤[RN, RP, f1] L2 â - âf2. L1 ⪤[RN, RP, f2] L2 â - âf. f1 â f2 â f â L1 ⪤[RN, RP, f] L2. + âf1. L1 ⪤[RN,RP,f1] L2 â + âf2. L1 ⪤[RN,RP,f2] L2 â + âf. f1 â f2 â f â L1 ⪤[RN,RP,f] L2. #RN #RP #L1 #L2 #f1 #H elim H -f1 -L1 -L2 // #f1 #I1 #I2 #L1 #L2 #_ #HI12 #IH #f2 #H #f #Hf elim (pn_split f2) * #g2 #H2 destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma index 339ac98a7..8d1cf5538 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma @@ -34,7 +34,7 @@ lemma sex_tc_next_sn: âRN,RP. c_reflexive ⦠RN â qed. lemma sex_tc_next_dx: âRN,RP. c_reflexive ⦠RN â c_reflexive ⦠RP â - âf,I1,I2,L1. (CTC ⦠RN) L1 I1 I2 â âL2. L1 ⪤[RN, RP, f] L2 â + âf,I1,I2,L1. (CTC ⦠RN) L1 I1 I2 â âL2. L1 ⪤[RN,RP,f] L2 â TC ⦠(sex RN RP (âf)) (L1.â{I1}) (L2.â{I2}). #RN #RP #HRN #HRP #f #I1 #I2 #L1 #H elim H -I2 /4 width=5 by sex_refl, sex_next, step, inj/ @@ -48,18 +48,18 @@ lemma sex_tc_push_sn: âRN,RP. c_reflexive ⦠RP â qed. lemma sex_tc_push_dx: âRN,RP. c_reflexive ⦠RN â c_reflexive ⦠RP â - âf,I1,I2,L1. (CTC ⦠RP) L1 I1 I2 â âL2. L1 ⪤[RN, RP, f] L2 â + âf,I1,I2,L1. (CTC ⦠RP) L1 I1 I2 â âL2. L1 ⪤[RN,RP,f] L2 â TC ⦠(sex RN RP (⫯f)) (L1.â{I1}) (L2.â{I2}). #RN #RP #HRN #HRP #f #I1 #I2 #L1 #H elim H -I2 /4 width=5 by sex_refl, sex_push, step, inj/ qed. -lemma sex_tc_inj_sn: âRN,RP,f,L1,L2. L1 ⪤[RN, RP, f] L2 â L1 ⪤[CTC ⦠RN, RP, f] L2. +lemma sex_tc_inj_sn: âRN,RP,f,L1,L2. L1 ⪤[RN,RP,f] L2 â L1 ⪤[CTC ⦠RN,RP,f] L2. #RN #RP #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by sex_push, sex_next, inj/ qed. -lemma sex_tc_inj_dx: âRN,RP,f,L1,L2. L1 ⪤[RN, RP, f] L2 â L1 ⪤[RN, CTC ⦠RP, f] L2. +lemma sex_tc_inj_dx: âRN,RP,f,L1,L2. L1 ⪤[RN,RP,f] L2 â L1 ⪤[RN,CTC ⦠RP,f] L2. #RN #RP #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by sex_push, sex_next, inj/ qed. @@ -82,8 +82,8 @@ qed. (* Basic_2A1: uses: TC_lpx_sn_ind *) theorem sex_tc_step_dx: âRN,RP. s_rs_transitive_isid RN RP â - âf,L1,L. L1 ⪤[RN, RP, f] L â ðâ¦f⦠â - âL2. L ⪤[RN, CTC ⦠RP, f] L2 â L1⪤ [RN, CTC ⦠RP, f] L2. + âf,L1,L. L1 ⪤[RN,RP,f] L â ðâ¦f⦠â + âL2. L ⪤[RN,CTC ⦠RP,f] L2 â L1⪤ [RN,CTC ⦠RP,f] L2. #RN #RP #HRP #f #L1 #L #H elim H -f -L1 -L [ #f #_ #Y #H -HRP >(sex_inv_atom1 ⦠H) -Y // ] #f #I1 #I #L1 #L #HL1 #HI1 #IH #Hf #Y #H @@ -99,7 +99,7 @@ qed-. (* Advanced properties ******************************************************) lemma sex_tc_dx: âRN,RP. s_rs_transitive_isid RN RP â - âf. ðâ¦f⦠â âL1,L2. TC ⦠(sex RN RP f) L1 L2 â L1 ⪤[RN, CTC ⦠RP, f] L2. + âf. ðâ¦f⦠â âL1,L2. TC ⦠(sex RN RP f) L1 L2 â L1 ⪤[RN,CTC ⦠RP,f] L2. #RN #RP #HRP #f #Hf #L1 #L2 #H @(TC_ind_dx ??????? H) -L1 /3 width=3 by sex_tc_step_dx, sex_tc_inj_dx/ qed. @@ -107,13 +107,13 @@ qed. (* Advanced inversion lemmas ************************************************) lemma sex_inv_tc_sn: âRN,RP. c_reflexive ⦠RN â c_reflexive ⦠RP â - âf,L1,L2. L1 ⪤[CTC ⦠RN, RP, f] L2 â TC ⦠(sex RN RP f) L1 L2. + âf,L1,L2. L1 ⪤[CTC ⦠RN,RP,f] L2 â TC ⦠(sex RN RP f) L1 L2. #RN #RP #HRN #HRP #f #L1 #L2 #H elim H -f -L1 -L2 /2 width=1 by sex_tc_next, sex_tc_push_sn, sex_atom, inj/ qed-. lemma sex_inv_tc_dx: âRN,RP. c_reflexive ⦠RN â c_reflexive ⦠RP â - âf,L1,L2. L1 ⪤[RN, CTC ⦠RP, f] L2 â TC ⦠(sex RN RP f) L1 L2. + âf,L1,L2. L1 ⪤[RN,CTC ⦠RP,f] L2 â TC ⦠(sex RN RP f) L1 L2. #RN #RP #HRN #HRP #f #L1 #L2 #H elim H -f -L1 -L2 /2 width=1 by sex_tc_push, sex_tc_next_sn, sex_atom, inj/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma index e3dae5bf4..df964c8e9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma @@ -30,55 +30,55 @@ interpretation "plus-iterated structural successor (closure)" (* Basic properties *********************************************************) -lemma fqu_fqup: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. +lemma fqu_fqup: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. /2 width=1 by tri_inj/ qed. lemma fqup_strap1: âb,G1,G,G2,L1,L,L2,T1,T,T2. - â¦G1, L1, T1⦠â+[b] â¦G, L, T⦠â â¦G, L, T⦠â[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠â+[b] â¦G,L,T⦠â â¦G,L,T⦠â[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. /2 width=5 by tri_step/ qed. lemma fqup_strap2: âb,G1,G,G2,L1,L,L2,T1,T,T2. - â¦G1, L1, T1⦠â[b] â¦G, L, T⦠â â¦G, L, T⦠â+[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. + â¦G1,L1,T1⦠â[b] â¦G,L,T⦠â â¦G,L,T⦠â+[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. /2 width=5 by tri_TC_strap/ qed. -lemma fqup_pair_sn: âb,I,G,L,V,T. â¦G, L, â¡{I}V.T⦠â+[b] â¦G, L, Vâ¦. +lemma fqup_pair_sn: âb,I,G,L,V,T. â¦G,L,â¡{I}V.T⦠â+[b] â¦G,L,Vâ¦. /2 width=1 by fqu_pair_sn, fqu_fqup/ qed. -lemma fqup_bind_dx: âb,p,I,G,L,V,T. â¦G, L, â{p,I}V.T⦠â+[b] â¦G, L.â{I}V, Tâ¦. +lemma fqup_bind_dx: âb,p,I,G,L,V,T. â¦G,L,â{p,I}V.T⦠â+[b] â¦G,L.â{I}V,Tâ¦. /2 width=1 by fqu_bind_dx, fqu_fqup/ qed. -lemma fqup_clear: âp,I,G,L,V,T. â¦G, L, â{p,I}V.T⦠â+[â»] â¦G, L.â§, Tâ¦. +lemma fqup_clear: âp,I,G,L,V,T. â¦G,L,â{p,I}V.T⦠â+[â»] â¦G,L.â§,Tâ¦. /3 width=1 by fqu_clear, fqu_fqup/ qed. -lemma fqup_flat_dx: âb,I,G,L,V,T. â¦G, L, â{I}V.T⦠â+[b] â¦G, L, Tâ¦. +lemma fqup_flat_dx: âb,I,G,L,V,T. â¦G,L,â{I}V.T⦠â+[b] â¦G,L,Tâ¦. /2 width=1 by fqu_flat_dx, fqu_fqup/ qed. -lemma fqup_flat_dx_pair_sn: âb,I1,I2,G,L,V1,V2,T. â¦G, L, â{I1}V1.â¡{I2}V2.T⦠â+[b] â¦G, L, V2â¦. +lemma fqup_flat_dx_pair_sn: âb,I1,I2,G,L,V1,V2,T. â¦G,L,â{I1}V1.â¡{I2}V2.T⦠â+[b] â¦G,L,V2â¦. /2 width=5 by fqu_pair_sn, fqup_strap1/ qed. -lemma fqup_bind_dx_flat_dx: âb,p,G,I1,I2,L,V1,V2,T. â¦G, L, â{p,I1}V1.â{I2}V2.T⦠â+[b] â¦G, L.â{I1}V1, Tâ¦. +lemma fqup_bind_dx_flat_dx: âb,p,G,I1,I2,L,V1,V2,T. â¦G,L,â{p,I1}V1.â{I2}V2.T⦠â+[b] â¦G,L.â{I1}V1,Tâ¦. /2 width=5 by fqu_flat_dx, fqup_strap1/ qed. -lemma fqup_flat_dx_bind_dx: âb,p,I1,I2,G,L,V1,V2,T. â¦G, L, â{I1}V1.â{p,I2}V2.T⦠â+[b] â¦G, L.â{I2}V2, Tâ¦. +lemma fqup_flat_dx_bind_dx: âb,p,I1,I2,G,L,V1,V2,T. â¦G,L,â{I1}V1.â{p,I2}V2.T⦠â+[b] â¦G,L.â{I2}V2,Tâ¦. /2 width=5 by fqu_bind_dx, fqup_strap1/ qed. (* Basic eliminators ********************************************************) lemma fqup_ind: âb,G1,L1,T1. âQ:relation3 â¦. - (âG2,L2,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â Q G2 L2 T2) â - (âG,G2,L,L2,T,T2. â¦G1, L1, T1⦠â+[b] â¦G, L, T⦠â â¦G, L, T⦠â[b] â¦G2, L2, T2⦠â Q G L T â Q G2 L2 T2) â - âG2,L2,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â Q G2 L2 T2. + (âG2,L2,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â Q G2 L2 T2) â + (âG,G2,L,L2,T,T2. â¦G1,L1,T1⦠â+[b] â¦G,L,T⦠â â¦G,L,T⦠â[b] â¦G2,L2,T2⦠â Q G L T â Q G2 L2 T2) â + âG2,L2,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â Q G2 L2 T2. #b #G1 #L1 #T1 #Q #IH1 #IH2 #G2 #L2 #T2 #H @(tri_TC_ind ⦠IH1 IH2 G2 L2 T2 H) qed-. lemma fqup_ind_dx: âb,G2,L2,T2. âQ:relation3 â¦. - (âG1,L1,T1. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â Q G1 L1 T1) â - (âG1,G,L1,L,T1,T. â¦G1, L1, T1⦠â[b] â¦G, L, T⦠â â¦G, L, T⦠â+[b] â¦G2, L2, T2⦠â Q G L T â Q G1 L1 T1) â - âG1,L1,T1. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â Q G1 L1 T1. + (âG1,L1,T1. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â Q G1 L1 T1) â + (âG1,G,L1,L,T1,T. â¦G1,L1,T1⦠â[b] â¦G,L,T⦠â â¦G,L,T⦠â+[b] â¦G2,L2,T2⦠â Q G L T â Q G1 L1 T1) â + âG1,L1,T1. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â Q G1 L1 T1. #b #G2 #L2 #T2 #Q #IH1 #IH2 #G1 #L1 #T1 #H @(tri_TC_ind_dx ⦠IH1 IH2 G1 L1 T1 H) qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma index 4eafa94d2..37bd15ada 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma @@ -20,7 +20,7 @@ include "static_2/s_computation/fqup.ma". (* Properties with generic slicing for local environments *******************) lemma fqup_drops_succ: âb,G,K,T,i,L,U. â¬*[âi] L â K â â¬*[âi] T â U â - â¦G, L, U⦠â+[b] â¦G, K, Tâ¦. + â¦G,L,U⦠â+[b] â¦G,K,Tâ¦. #b #G #K #T #i elim i -i [ #L #U #HLK #HTU elim (drops_inv_succ ⦠HLK) -HLK #I #Y #HY #H destruct <(drops_fwd_isid ⦠HY) -K // @@ -33,7 +33,7 @@ lemma fqup_drops_succ: âb,G,K,T,i,L,U. â¬*[âi] L â K â â¬*[âi] T â qed. lemma fqup_drops_strap1: âb,G1,G2,L1,K1,K2,T1,T2,U1,i. â¬*[i] L1 â K1 â â¬*[i] T1 â U1 â - â¦G1, K1, T1⦠â[b] â¦G2, K2, T2⦠â â¦G1, L1, U1⦠â+[b] â¦G2, K2, T2â¦. + â¦G1,K1,T1⦠â[b] â¦G2,K2,T2⦠â â¦G1,L1,U1⦠â+[b] â¦G2,K2,T2â¦. #b #G1 #G2 #L1 #K1 #K2 #T1 #T2 #U1 * [ #HLK1 #HTU1 #HT12 >(drops_fwd_isid ⦠HLK1) -L1 // @@ -42,5 +42,5 @@ lemma fqup_drops_strap1: âb,G1,G2,L1,K1,K2,T1,T2,U1,i. â¬*[i] L1 â K1 â ] qed-. -lemma fqup_lref: âb,I,G,L,K,V,i. â¬*[i] L â K.â{I}V â â¦G, L, #i⦠â+[b] â¦G, K, Vâ¦. +lemma fqup_lref: âb,I,G,L,K,V,i. â¬*[i] L â K.â{I}V â â¦G,L,#i⦠â+[b] â¦G,K,Vâ¦. /2 width=6 by fqup_drops_strap1/ qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_weight.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_weight.ma index 25a81dfa8..c92721f84 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_weight.ma @@ -19,8 +19,8 @@ include "static_2/s_computation/fqup.ma". (* Forward lemmas with weight for closures **********************************) -lemma fqup_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - â¯{G2, L2, T2} < â¯{G1, L1, T1}. +lemma fqup_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + â¯{G2,L2,T2} < â¯{G1,L1,T1}. #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 /3 width=3 by fqu_fwd_fw, transitive_lt/ qed-. @@ -28,7 +28,7 @@ qed-. (* Advanced eliminators *****************************************************) lemma fqup_wf_ind: âb. âQ:relation3 â¦. ( - âG1,L1,T1. (âG2,L2,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â Q G2 L2 T2) â + âG1,L1,T1. (âG2,L2,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â âG1,L1,T1. Q G1 L1 T1. #b #Q #HQ @(f3_ind ⦠fw) #x #IHx #G1 #L1 #T1 #H destruct @@ -36,7 +36,7 @@ lemma fqup_wf_ind: âb. âQ:relation3 â¦. ( qed-. lemma fqup_wf_ind_eq: âb. âQ:relation3 â¦. ( - âG1,L1,T1. (âG2,L2,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â Q G2 L2 T2) â + âG1,L1,T1. (âG2,L2,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â Q G2 L2 T2) â âG2,L2,T2. G1 = G2 â L1 = L2 â T1 = T2 â Q G2 L2 T2 ) â âG1,L1,T1. Q G1 L1 T1. #b #Q #HQ @(f3_ind ⦠fw) #x #IHx #G1 #L1 #T1 #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma index fb6a7ea7d..1289e8487 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma @@ -31,15 +31,15 @@ interpretation "star-iterated structural successor (closure)" (* Basic eliminators ********************************************************) lemma fqus_ind: âb,G1,L1,T1. âQ:relation3 â¦. Q G1 L1 T1 â - (âG,G2,L,L2,T,T2. â¦G1, L1, T1⦠â*[b] â¦G, L, T⦠â â¦G, L, T⦠â⸮[b] â¦G2, L2, T2⦠â Q G L T â Q G2 L2 T2) â - âG2,L2,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â Q G2 L2 T2. + (âG,G2,L,L2,T,T2. â¦G1,L1,T1⦠â*[b] â¦G,L,T⦠â â¦G,L,T⦠â⸮[b] â¦G2,L2,T2⦠â Q G L T â Q G2 L2 T2) â + âG2,L2,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â Q G2 L2 T2. #b #G1 #L1 #T1 #R #IH1 #IH2 #G2 #L2 #T2 #H @(tri_TC_star_ind ⦠IH1 IH2 G2 L2 T2 H) // qed-. lemma fqus_ind_dx: âb,G2,L2,T2. âQ:relation3 â¦. Q G2 L2 T2 â - (âG1,G,L1,L,T1,T. â¦G1, L1, T1⦠â⸮[b] â¦G, L, T⦠â â¦G, L, T⦠â*[b] â¦G2, L2, T2⦠â Q G L T â Q G1 L1 T1) â - âG1,L1,T1. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â Q G1 L1 T1. + (âG1,G,L1,L,T1,T. â¦G1,L1,T1⦠â⸮[b] â¦G,L,T⦠â â¦G,L,T⦠â*[b] â¦G2,L2,T2⦠â Q G L T â Q G1 L1 T1) â + âG1,L1,T1. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â Q G1 L1 T1. #b #G2 #L2 #T2 #Q #IH1 #IH2 #G1 #L1 #T1 #H @(tri_TC_star_ind_dx ⦠IH1 IH2 G1 L1 T1 H) // qed-. @@ -49,56 +49,56 @@ qed-. lemma fqus_refl: âb. tri_reflexive ⦠(fqus b). /2 width=1 by tri_inj/ qed. -lemma fquq_fqus: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2â¦. +lemma fquq_fqus: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2â¦. /2 width=1 by tri_inj/ qed. -lemma fqus_strap1: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â*[b] â¦G, L, T⦠â - â¦G, L, T⦠â⸮[b] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2â¦. +lemma fqus_strap1: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â*[b] â¦G,L,T⦠â + â¦G,L,T⦠â⸮[b] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2â¦. /2 width=5 by tri_step/ qed-. -lemma fqus_strap2: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â⸮[b] â¦G, L, T⦠â - â¦G, L, T⦠â*[b] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2â¦. +lemma fqus_strap2: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â⸮[b] â¦G,L,T⦠â + â¦G,L,T⦠â*[b] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2â¦. /2 width=5 by tri_TC_strap/ qed-. (* Basic inversion lemmas ***************************************************) -lemma fqus_inv_fqu_sn: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_fqu_sn: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â (â§â§ G1 = G2 & L1 = L2 & T1 = T2) ⨠- ââG,L,T. â¦G1, L1, T1⦠â[b] â¦G, L, T⦠& â¦G, L, T⦠â*[b] â¦G2, L2, T2â¦. + ââG,L,T. â¦G1,L1,T1⦠â[b] â¦G,L,T⦠& â¦G,L,T⦠â*[b] â¦G2,L2,T2â¦. #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 @(fqus_ind_dx ⦠H12) -G1 -L1 -T1 /3 width=1 by and3_intro, or_introl/ #G1 #G #L1 #L #T1 #T * /3 width=5 by ex2_3_intro, or_intror/ * #HG #HL #HT #_ destruct // qed-. -lemma fqus_inv_sort1: âb,G1,G2,L1,L2,T2,s. â¦G1, L1, âs⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_sort1: âb,G1,G2,L1,L2,T2,s. â¦G1,L1,âs⦠â*[b] â¦G2,L2,T2⦠â (â§â§ G1 = G2 & L1 = L2 & âs = T2) ⨠- ââJ,L. â¦G1, L, âs⦠â*[b] â¦G2, L2, T2⦠& L1 = L.â{J}. + ââJ,L. â¦G1,L,âs⦠â*[b] â¦G2,L2,T2⦠& L1 = L.â{J}. #b #G1 #G2 #L1 #L2 #T2 #s #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or_introl/ #G #L #T #H elim (fqu_inv_sort1 ⦠H) -H /3 width=4 by ex2_2_intro, or_intror/ qed-. -lemma fqus_inv_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1, L1, #i⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1,L1,#i⦠â*[b] â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & #i = T2 - | ââJ,L,V. â¦G1, L, V⦠â*[b] â¦G2, L2, T2⦠& L1 = L.â{J}V & i = 0 - | ââJ,L,j. â¦G1, L, #j⦠â*[b] â¦G2, L2, T2⦠& L1 = L.â{J} & i = âj. + | ââJ,L,V. â¦G1,L,V⦠â*[b] â¦G2,L2,T2⦠& L1 = L.â{J}V & i = 0 + | ââJ,L,j. â¦G1,L,#j⦠â*[b] â¦G2,L2,T2⦠& L1 = L.â{J} & i = âj. #b #G1 #G2 #L1 #L2 #T2 #i #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or3_intro0/ #G #L #T #H elim (fqu_inv_lref1 ⦠H) -H * /3 width=7 by or3_intro1, or3_intro2, ex3_4_intro, ex3_3_intro/ qed-. -lemma fqus_inv_gref1: âb,G1,G2,L1,L2,T2,l. â¦G1, L1, §l⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_gref1: âb,G1,G2,L1,L2,T2,l. â¦G1,L1,§l⦠â*[b] â¦G2,L2,T2⦠â (â§â§ G1 = G2 & L1 = L2 & §l = T2) ⨠- ââJ,L. â¦G1, L, §l⦠â*[b] â¦G2, L2, T2⦠& L1 = L.â{J}. + ââJ,L. â¦G1,L,§l⦠â*[b] â¦G2,L2,T2⦠& L1 = L.â{J}. #b #G1 #G2 #L1 #L2 #T2 #l #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or_introl/ #G #L #T #H elim (fqu_inv_gref1 ⦠H) -H /3 width=4 by ex2_2_intro, or_intror/ qed-. -lemma fqus_inv_bind1: âb,p,I,G1,G2,L1,L2,V1,T1,T2. â¦G1, L1, â{p,I}V1.T1⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_bind1: âb,p,I,G1,G2,L1,L2,V1,T1,T2. â¦G1,L1,â{p,I}V1.T1⦠â*[b] â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & â{p,I}V1.T1 = T2 - | â¦G1, L1, V1⦠â*[b] â¦G2, L2, T2⦠- | â¦G1, L1.â{I}V1, T1⦠â*[b] â¦G2, L2, T2⦠- | â¦G1, L1.â§, T1⦠â*[b] â¦G2, L2, T2⦠⧠b = â» - | ââJ,L,T. â¦G1, L, T⦠â*[b] â¦G2, L2, T2⦠& â¬*[1] T â â{p,I}V1.T1 & L1 = L.â{J}. + | â¦G1,L1,V1⦠â*[b] â¦G2,L2,T2⦠+ | â¦G1,L1.â{I}V1,T1⦠â*[b] â¦G2,L2,T2⦠+ | â¦G1,L1.â§,T1⦠â*[b] â¦G2,L2,T2⦠⧠b = â» + | ââJ,L,T. â¦G1,L,T⦠â*[b] â¦G2,L2,T2⦠& â¬*[1] T â â{p,I}V1.T1 & L1 = L.â{J}. #b #p #I #G1 #G2 #L1 #L2 #V1 #T1 #T2 #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or5_intro0/ #G #L #T #H elim (fqu_inv_bind1 ⦠H) -H * [4: #J ] #H1 #H2 #H3 [4: #Hb ] #H destruct @@ -106,21 +106,21 @@ lemma fqus_inv_bind1: âb,p,I,G1,G2,L1,L2,V1,T1,T2. â¦G1, L1, â{p,I}V1.T1⦠qed-. -lemma fqus_inv_bind1_true: âp,I,G1,G2,L1,L2,V1,T1,T2. â¦G1, L1, â{p,I}V1.T1⦠â* â¦G2, L2, T2⦠â +lemma fqus_inv_bind1_true: âp,I,G1,G2,L1,L2,V1,T1,T2. â¦G1,L1,â{p,I}V1.T1⦠â* â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & â{p,I}V1.T1 = T2 - | â¦G1, L1, V1⦠â* â¦G2, L2, T2⦠- | â¦G1, L1.â{I}V1, T1⦠â* â¦G2, L2, T2⦠- | ââJ,L,T. â¦G1, L, T⦠â* â¦G2, L2, T2⦠& â¬*[1] T â â{p,I}V1.T1 & L1 = L.â{J}. + | â¦G1,L1,V1⦠â* â¦G2,L2,T2⦠+ | â¦G1,L1.â{I}V1,T1⦠â* â¦G2,L2,T2⦠+ | ââJ,L,T. â¦G1,L,T⦠â* â¦G2,L2,T2⦠& â¬*[1] T â â{p,I}V1.T1 & L1 = L.â{J}. #p #I #G1 #G2 #L1 #L2 #V1 #T1 #T2 #H elim (fqus_inv_bind1 ⦠H) -H [1,4: * ] /3 width=1 by and3_intro, or4_intro0, or4_intro1, or4_intro2, or4_intro3, ex3_3_intro/ #_ #H destruct qed-. -lemma fqus_inv_flat1: âb,I,G1,G2,L1,L2,V1,T1,T2. â¦G1, L1, â{I}V1.T1⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_flat1: âb,I,G1,G2,L1,L2,V1,T1,T2. â¦G1,L1,â{I}V1.T1⦠â*[b] â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & â{I}V1.T1 = T2 - | â¦G1, L1, V1⦠â*[b] â¦G2, L2, T2⦠- | â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠- | ââJ,L,T. â¦G1, L, T⦠â*[b] â¦G2, L2, T2⦠& â¬*[1] T â â{I}V1.T1 & L1 = L.â{J}. + | â¦G1,L1,V1⦠â*[b] â¦G2,L2,T2⦠+ | â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠+ | ââJ,L,T. â¦G1,L,T⦠â*[b] â¦G2,L2,T2⦠& â¬*[1] T â â{I}V1.T1 & L1 = L.â{J}. #b #I #G1 #G2 #L1 #L2 #V1 #T1 #T2 #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or4_intro0/ #G #L #T #H elim (fqu_inv_flat1 ⦠H) -H * [3: #J ] #H1 #H2 #H3 #H destruct @@ -129,35 +129,35 @@ qed-. (* Advanced inversion lemmas ************************************************) -lemma fqus_inv_atom1: âb,I,G1,G2,L2,T2. â¦G1, â, âª{I}⦠â*[b] â¦G2, L2, T2⦠â +lemma fqus_inv_atom1: âb,I,G1,G2,L2,T2. â¦G1,â,âª{I}⦠â*[b] â¦G2,L2,T2⦠â â§â§ G1 = G2 & â = L2 & âª{I} = T2. #b #I #G1 #G2 #L2 #T2 #H elim (fqus_inv_fqu_sn ⦠H) -H * /2 width=1 by and3_intro/ #G #L #T #H elim (fqu_inv_atom1 ⦠H) qed-. -lemma fqus_inv_sort1_bind: âb,I,G1,G2,L1,L2,T2,s. â¦G1, L1.â{I}, âs⦠â*[b] â¦G2, L2, T2⦠â - (â§â§ G1 = G2 & L1.â{I} = L2 & âs = T2) ⨠â¦G1, L1, âs⦠â*[b] â¦G2, L2, T2â¦. +lemma fqus_inv_sort1_bind: âb,I,G1,G2,L1,L2,T2,s. â¦G1,L1.â{I},âs⦠â*[b] â¦G2,L2,T2⦠â + (â§â§ G1 = G2 & L1.â{I} = L2 & âs = T2) ⨠â¦G1,L1,âs⦠â*[b] â¦G2,L2,T2â¦. #b #I #G1 #G2 #L1 #L2 #T2 #s #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or_introl/ #G #L #T #H elim (fqu_inv_sort1_bind ⦠H) -H #H1 #H2 #H3 #H destruct /2 width=1 by or_intror/ qed-. -lemma fqus_inv_zero1_pair: âb,I,G1,G2,L1,L2,V1,T2. â¦G1, L1.â{I}V1, #0⦠â*[b] â¦G2, L2, T2⦠â - (â§â§ G1 = G2 & L1.â{I}V1 = L2 & #0 = T2) ⨠â¦G1, L1, V1⦠â*[b] â¦G2, L2, T2â¦. +lemma fqus_inv_zero1_pair: âb,I,G1,G2,L1,L2,V1,T2. â¦G1,L1.â{I}V1,#0⦠â*[b] â¦G2,L2,T2⦠â + (â§â§ G1 = G2 & L1.â{I}V1 = L2 & #0 = T2) ⨠â¦G1,L1,V1⦠â*[b] â¦G2,L2,T2â¦. #b #I #G1 #G2 #L1 #L2 #V1 #T2 #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or_introl/ #G #L #T #H elim (fqu_inv_zero1_pair ⦠H) -H #H1 #H2 #H3 #H destruct /2 width=1 by or_intror/ qed-. -lemma fqus_inv_lref1_bind: âb,I,G1,G2,L1,L2,T2,i. â¦G1, L1.â{I}, #âi⦠â*[b] â¦G2, L2, T2⦠â - (â§â§ G1 = G2 & L1.â{I} = L2 & #(âi) = T2) ⨠â¦G1, L1, #i⦠â*[b] â¦G2, L2, T2â¦. +lemma fqus_inv_lref1_bind: âb,I,G1,G2,L1,L2,T2,i. â¦G1,L1.â{I},#âi⦠â*[b] â¦G2,L2,T2⦠â + (â§â§ G1 = G2 & L1.â{I} = L2 & #(âi) = T2) ⨠â¦G1,L1,#i⦠â*[b] â¦G2,L2,T2â¦. #b #I #G1 #G2 #L1 #L2 #T2 #i #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or_introl/ #G #L #T #H elim (fqu_inv_lref1_bind ⦠H) -H #H1 #H2 #H3 #H destruct /2 width=1 by or_intror/ qed-. -lemma fqus_inv_gref1_bind: âb,I,G1,G2,L1,L2,T2,l. â¦G1, L1.â{I}, §l⦠â*[b] â¦G2, L2, T2⦠â - (â§â§ G1 = G2 & L1.â{I} = L2 & §l = T2) ⨠â¦G1, L1, §l⦠â*[b] â¦G2, L2, T2â¦. +lemma fqus_inv_gref1_bind: âb,I,G1,G2,L1,L2,T2,l. â¦G1,L1.â{I},§l⦠â*[b] â¦G2,L2,T2⦠â + (â§â§ G1 = G2 & L1.â{I} = L2 & §l = T2) ⨠â¦G1,L1,§l⦠â*[b] â¦G2,L2,T2â¦. #b #I #G1 #G2 #L1 #L2 #T2 #l #H elim (fqus_inv_fqu_sn ⦠H) -H * /3 width=1 by and3_intro, or_introl/ #G #L #T #H elim (fqu_inv_gref1_bind ⦠H) -H #H1 #H2 #H3 #H destruct /2 width=1 by or_intror/ diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma index 0d2797139..7c0f79cba 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma @@ -20,7 +20,7 @@ include "static_2/s_computation/fqus_fqup.ma". (* Properties with generic slicing for local environments *******************) lemma fqus_drops: âb,G,L,K,T,U,i. â¬*[i] L â K â â¬*[i] T â U â - â¦G, L, U⦠â*[b] â¦G, K, Tâ¦. + â¦G,L,U⦠â*[b] â¦G,K,Tâ¦. #b #G #L #K #T #U * /3 width=3 by fqup_drops_succ, fqup_fqus/ #HLK #HTU <(lifts_fwd_isid ⦠HTU) -U // <(drops_fwd_isid ⦠HLK) -K // qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_fqup.ma index 05a450dae..f5f521dd5 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_fqup.ma @@ -19,14 +19,14 @@ include "static_2/s_computation/fqus.ma". (* Alternative definition with plus-iterated supclosure *********************) -lemma fqup_fqus: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2â¦. +lemma fqup_fqus: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2â¦. #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 /3 width=5 by fqus_strap1, fquq_fqus, fqu_fquq/ qed. (* Basic_2A1: was: fqus_inv_gen *) -lemma fqus_inv_fqup: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠⨠(â§â§ G1 = G2 & L1 = L2 & T1 = T2). +lemma fqus_inv_fqup: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠⨠(â§â§ G1 = G2 & L1 = L2 & T1 = T2). #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind ⦠H) -G2 -L2 -T2 // #G #G2 #L #L2 #T #T2 #_ * [ #H2 * /3 width=5 by fqup_strap1, or_introl/ @@ -37,38 +37,38 @@ qed-. (* Advanced properties ******************************************************) -lemma fqus_strap1_fqu: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â*[b] â¦G, L, T⦠â â¦G, L, T⦠â[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. +lemma fqus_strap1_fqu: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â*[b] â¦G,L,T⦠â â¦G,L,T⦠â[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. #b #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2 elim (fqus_inv_fqup ⦠H1) -H1 [ /2 width=5 by fqup_strap1/ | * /2 width=1 by fqu_fqup/ ] qed-. -lemma fqus_strap2_fqu: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â[b] â¦G, L, T⦠â â¦G, L, T⦠â*[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. +lemma fqus_strap2_fqu: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â[b] â¦G,L,T⦠â â¦G,L,T⦠â*[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. #b #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2 elim (fqus_inv_fqup ⦠H2) -H2 [ /2 width=5 by fqup_strap2/ | * /2 width=1 by fqu_fqup/ ] qed-. -lemma fqus_fqup_trans: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â*[b] â¦G, L, T⦠â â¦G, L, T⦠â+[b] â¦G2, L2, T2⦠â - â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. +lemma fqus_fqup_trans: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â*[b] â¦G,L,T⦠â â¦G,L,T⦠â+[b] â¦G2,L2,T2⦠â + â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. #b #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2 @(fqup_ind ⦠H2) -H2 -G2 -L2 -T2 /2 width=5 by fqus_strap1_fqu, fqup_strap1/ qed-. -lemma fqup_fqus_trans: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1, L1, T1⦠â+[b] â¦G, L, T⦠â - â¦G, L, T⦠â*[b] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2â¦. +lemma fqup_fqus_trans: âb,G1,G,G2,L1,L,L2,T1,T,T2. â¦G1,L1,T1⦠â+[b] â¦G,L,T⦠â + â¦G,L,T⦠â*[b] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2â¦. #b #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 @(fqup_ind_dx ⦠H1) -H1 -G1 -L1 -T1 /3 width=5 by fqus_strap2_fqu, fqup_strap2/ qed-. (* Advanced inversion lemmas for plus-iterated supclosure *******************) -lemma fqup_inv_step_sn: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+[b] â¦G2, L2, T2⦠â - ââG,L,T. â¦G1, L1, T1⦠â[b] â¦G, L, T⦠& â¦G, L, T⦠â*[b] â¦G2, L2, T2â¦. +lemma fqup_inv_step_sn: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+[b] â¦G2,L2,T2⦠â + ââG,L,T. â¦G1,L1,T1⦠â[b] â¦G,L,T⦠& â¦G,L,T⦠â*[b] â¦G2,L2,T2â¦. #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx ⦠H) -G1 -L1 -T1 /2 width=5 by ex2_3_intro/ #G1 #G #L1 #L #T1 #T #H1 #_ * /4 width=9 by fqus_strap2, fqu_fquq, ex2_3_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_weight.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_weight.ma index f94366706..02be24fc7 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_weight.ma @@ -19,15 +19,15 @@ include "static_2/s_computation/fqus.ma". (* Forward lemmas with weight for closures **********************************) -lemma fqus_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â*[b] â¦G2, L2, T2⦠â - â¯{G2, L2, T2} ⤠â¯{G1, L1, T1}. +lemma fqus_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â*[b] â¦G2,L2,T2⦠â + â¯{G2,L2,T2} ⤠â¯{G1,L1,T1}. #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind ⦠H) -L2 -T2 /3 width=3 by fquq_fwd_fw, transitive_le/ qed-. (* Advanced inversion lemmas ************************************************) -lemma fqus_inv_refl_atom3: âb,I,G,L,X. â¦G, L, âª{I}⦠â*[b] â¦G, L, X⦠â âª{I} = X. +lemma fqus_inv_refl_atom3: âb,I,G,L,X. â¦G,L,âª{I}⦠â*[b] â¦G,L,X⦠â âª{I} = X. #b #I #G #L #X #H elim (fqus_inv_fqu_sn ⦠H) -H * // #G0 #L0 #T0 #H1 #H2 lapply (fqu_fwd_fw ⦠H1) lapply (fqus_fwd_fw ⦠H2) -H2 -H1 #H2 #H1 lapply (le_to_lt_to_lt ⦠H2 H1) -G0 -L0 -T0 diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma index b834566d3..bff7b2fe9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma @@ -44,18 +44,18 @@ interpretation (* Basic properties *********************************************************) -lemma fqu_sort: âb,I,G,L,s. â¦G, L.â{I}, âs⦠â[b] â¦G, L, âsâ¦. +lemma fqu_sort: âb,I,G,L,s. â¦G,L.â{I},âs⦠â[b] â¦G,L,âsâ¦. /2 width=1 by fqu_drop/ qed. -lemma fqu_lref_S: âb,I,G,L,i. â¦G, L.â{I}, #âi⦠â[b] â¦G, L, #iâ¦. +lemma fqu_lref_S: âb,I,G,L,i. â¦G,L.â{I},#âi⦠â[b] â¦G,L,#iâ¦. /2 width=1 by fqu_drop/ qed. -lemma fqu_gref: âb,I,G,L,l. â¦G, L.â{I}, §l⦠â[b] â¦G, L, §lâ¦. +lemma fqu_gref: âb,I,G,L,l. â¦G,L.â{I},§l⦠â[b] â¦G,L,§lâ¦. /2 width=1 by fqu_drop/ qed. (* Basic inversion lemmas ***************************************************) -fact fqu_inv_sort1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_inv_sort1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â âs. T1 = âs â ââJ. G1 = G2 & L1 = L2.â{J} & T2 = âs. #b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2 @@ -69,11 +69,11 @@ fact fqu_inv_sort1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L ] qed-. -lemma fqu_inv_sort1: âb,G1,G2,L1,L2,T2,s. â¦G1, L1, âs⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_sort1: âb,G1,G2,L1,L2,T2,s. â¦G1,L1,âs⦠â[b] â¦G2,L2,T2⦠â ââJ. G1 = G2 & L1 = L2.â{J} & T2 = âs. /2 width=4 by fqu_inv_sort1_aux/ qed-. -fact fqu_inv_lref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_inv_lref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â âi. T1 = #i â (ââJ,V. G1 = G2 & L1 = L2.â{J}V & T2 = V & i = 0) ⨠ââJ,j. G1 = G2 & L1 = L2.â{J} & T2 = #j & i = âj. @@ -88,12 +88,12 @@ fact fqu_inv_lref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L ] qed-. -lemma fqu_inv_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1, L1, #i⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1,L1,#i⦠â[b] â¦G2,L2,T2⦠â (ââJ,V. G1 = G2 & L1 = L2.â{J}V & T2 = V & i = 0) ⨠ââJ,j. G1 = G2 & L1 = L2.â{J} & T2 = #j & i = âj. /2 width=4 by fqu_inv_lref1_aux/ qed-. -fact fqu_inv_gref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_inv_gref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â âl. T1 = §l â ââJ. G1 = G2 & L1 = L2.â{J} & T2 = §l. #b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2 @@ -107,11 +107,11 @@ fact fqu_inv_gref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L ] qed-. -lemma fqu_inv_gref1: âb,G1,G2,L1,L2,T2,l. â¦G1, L1, §l⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_gref1: âb,G1,G2,L1,L2,T2,l. â¦G1,L1,§l⦠â[b] â¦G2,L2,T2⦠â ââJ. G1 = G2 & L1 = L2.â{J} & T2 = §l. /2 width=4 by fqu_inv_gref1_aux/ qed-. -fact fqu_inv_bind1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_inv_bind1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â âp,I,V1,U1. T1 = â{p,I}V1.U1 â â¨â¨ â§â§ G1 = G2 & L1 = L2 & V1 = T2 | â§â§ G1 = G2 & L1.â{I}V1 = L2 & U1 = T2 @@ -127,14 +127,14 @@ fact fqu_inv_bind1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L ] qed-. -lemma fqu_inv_bind1: âb,p,I,G1,G2,L1,L2,V1,U1,T2. â¦G1, L1, â{p,I}V1.U1⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_bind1: âb,p,I,G1,G2,L1,L2,V1,U1,T2. â¦G1,L1,â{p,I}V1.U1⦠â[b] â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & V1 = T2 | â§â§ G1 = G2 & L1.â{I}V1 = L2 & U1 = T2 | â§â§ G1 = G2 & L1.⧠= L2 & U1 = T2 & b = â» | ââJ. G1 = G2 & L1 = L2.â{J} & â¬*[1] T2 â â{p,I}V1.U1. /2 width=4 by fqu_inv_bind1_aux/ qed-. -lemma fqu_inv_bind1_true: âp,I,G1,G2,L1,L2,V1,U1,T2. â¦G1, L1, â{p,I}V1.U1⦠â â¦G2, L2, T2⦠â +lemma fqu_inv_bind1_true: âp,I,G1,G2,L1,L2,V1,U1,T2. â¦G1,L1,â{p,I}V1.U1⦠â â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & V1 = T2 | â§â§ G1 = G2 & L1.â{I}V1 = L2 & U1 = T2 | ââJ. G1 = G2 & L1 = L2.â{J} & â¬*[1] T2 â â{p,I}V1.U1. @@ -143,7 +143,7 @@ lemma fqu_inv_bind1_true: âp,I,G1,G2,L1,L2,V1,U1,T2. â¦G1, L1, â{p,I}V1.U1 * #_ #_ #_ #H destruct qed-. -fact fqu_inv_flat1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_inv_flat1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â âI,V1,U1. T1 = â{I}V1.U1 â â¨â¨ â§â§ G1 = G2 & L1 = L2 & V1 = T2 | â§â§ G1 = G2 & L1 = L2 & U1 = T2 @@ -158,7 +158,7 @@ fact fqu_inv_flat1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L ] qed-. -lemma fqu_inv_flat1: âb,I,G1,G2,L1,L2,V1,U1,T2. â¦G1, L1, â{I}V1.U1⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_flat1: âb,I,G1,G2,L1,L2,V1,U1,T2. â¦G1,L1,â{I}V1.U1⦠â[b] â¦G2,L2,T2⦠â â¨â¨ â§â§ G1 = G2 & L1 = L2 & V1 = T2 | â§â§ G1 = G2 & L1 = L2 & U1 = T2 | ââJ. G1 = G2 & L1 = L2.â{J} & â¬*[1] T2 â â{I}V1.U1. @@ -166,31 +166,31 @@ lemma fqu_inv_flat1: âb,I,G1,G2,L1,L2,V1,U1,T2. â¦G1, L1, â{I}V1.U1⦠â[ (* Advanced inversion lemmas ************************************************) -lemma fqu_inv_atom1: âb,I,G1,G2,L2,T2. â¦G1, â, âª{I}⦠â[b] â¦G2, L2, T2⦠â â¥. +lemma fqu_inv_atom1: âb,I,G1,G2,L2,T2. â¦G1,â,âª{I}⦠â[b] â¦G2,L2,T2⦠â â¥. #b * #x #G1 #G2 #L2 #T2 #H [ elim (fqu_inv_sort1 ⦠H) | elim (fqu_inv_lref1 ⦠H) * | elim (fqu_inv_gref1 ⦠H) ] -H #I [2: #V |3: #i ] #_ #H destruct qed-. -lemma fqu_inv_sort1_bind: âb,I,G1,G2,K,L2,T2,s. â¦G1, K.â{I}, âs⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_sort1_bind: âb,I,G1,G2,K,L2,T2,s. â¦G1,K.â{I},âs⦠â[b] â¦G2,L2,T2⦠â â§â§ G1 = G2 & L2 = K & T2 = âs. #b #I #G1 #G2 #K #L2 #T2 #s #H elim (fqu_inv_sort1 ⦠H) -H #Z #X #H1 #H2 destruct /2 width=1 by and3_intro/ qed-. -lemma fqu_inv_zero1_pair: âb,I,G1,G2,K,L2,V,T2. â¦G1, K.â{I}V, #0⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_zero1_pair: âb,I,G1,G2,K,L2,V,T2. â¦G1,K.â{I}V,#0⦠â[b] â¦G2,L2,T2⦠â â§â§ G1 = G2 & L2 = K & T2 = V. #b #I #G1 #G2 #K #L2 #V #T2 #H elim (fqu_inv_lref1 ⦠H) -H * #Z #X #H1 #H2 #H3 #H4 destruct /2 width=1 by and3_intro/ qed-. -lemma fqu_inv_lref1_bind: âb,I,G1,G2,K,L2,T2,i. â¦G1, K.â{I}, #(âi)⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_lref1_bind: âb,I,G1,G2,K,L2,T2,i. â¦G1,K.â{I},#(âi)⦠â[b] â¦G2,L2,T2⦠â â§â§ G1 = G2 & L2 = K & T2 = #i. #b #I #G1 #G2 #K #L2 #T2 #i #H elim (fqu_inv_lref1 ⦠H) -H * #Z #X #H1 #H2 #H3 #H4 destruct /2 width=1 by and3_intro/ qed-. -lemma fqu_inv_gref1_bind: âb,I,G1,G2,K,L2,T2,l. â¦G1, K.â{I}, §l⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_inv_gref1_bind: âb,I,G1,G2,K,L2,T2,l. â¦G1,K.â{I},§l⦠â[b] â¦G2,L2,T2⦠â â§â§ G1 = G2 & L2 = K & T2 = §l. #b #I #G1 #G2 #K #L2 #T2 #l #H elim (fqu_inv_gref1 ⦠H) -H #Z #H1 #H2 #H3 destruct /2 width=1 by and3_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_length.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_length.ma index 2cfea06b8..c2aa1a829 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_length.ma @@ -19,13 +19,13 @@ include "static_2/s_transition/fqu.ma". (* Forward lemmas with length for local environments ************************) -fact fqu_fwd_length_lref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_fwd_length_lref1_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â âi. T1 = #i â |L2| < |L1|. #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 // [2,3: #p] #I #G #L #V #T [2: #_ ] #j #H destruct qed-. -lemma fqu_fwd_length_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1, L1, #i⦠â[b] â¦G2, L2, T2⦠â +lemma fqu_fwd_length_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1,L1,#i⦠â[b] â¦G2,L2,T2⦠â |L2| < |L1|. /2 width=8 by fqu_fwd_length_lref1_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma index d08dc97d2..7d5e2e87d 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma @@ -19,7 +19,7 @@ include "static_2/s_transition/fqu_length.ma". (* Inversion lemmas with context-free sort-irrelevant equivalence for terms *) -fact fqu_inv_tdeq_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â +fact fqu_inv_tdeq_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â G1 = G2 â |L1| = |L2| â T1 â T2 â â¥. #b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2 [1: #I #G #L #V #_ #H elim (succ_inv_refl_sn ⦠H) @@ -29,7 +29,7 @@ fact fqu_inv_tdeq_aux: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2 qed-. (* Basic_2A1: uses: fqu_inv_eq *) -lemma fqu_inv_tdeq: âb,G,L1,L2,T1,T2. â¦G, L1, T1⦠â[b] â¦G, L2, T2⦠â +lemma fqu_inv_tdeq: âb,G,L1,L2,T1,T2. â¦G,L1,T1⦠â[b] â¦G,L2,T2⦠â |L1| = |L2| â T1 â T2 â â¥. #b #G #L1 #L2 #T1 #T2 #H @(fqu_inv_tdeq_aux ⦠H) // (**) (* full auto fails *) diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_weight.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_weight.ma index 365f5c2db..2c19e9244 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_weight.ma @@ -20,8 +20,8 @@ include "static_2/s_transition/fqu.ma". (* Forward lemmas with weight for closures **********************************) -lemma fqu_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â - â¯{G2, L2, T2} < â¯{G1, L1, T1}. +lemma fqu_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â + â¯{G2,L2,T2} < â¯{G1,L1,T1}. #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 // #I #I1 #I2 #G #L #HI12 normalize in ⢠(?%%); -I1 <(lifts_fwd_tw ⦠HI12) /3 width=1 by monotonic_lt_plus_r, monotonic_lt_plus_l/ @@ -30,7 +30,7 @@ qed-. (* Advanced eliminators *****************************************************) lemma fqu_wf_ind: âb. âQ:relation3 â¦. ( - âG1,L1,T1. (âG2,L2,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â Q G2 L2 T2) â + âG1,L1,T1. (âG2,L2,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â Q G2 L2 T2) â Q G1 L1 T1 ) â âG1,L1,T1. Q G1 L1 T1. #b #Q #HQ @(f3_ind ⦠fw) #x #IHx #G1 #L1 #T1 #H destruct /4 width=2 by fqu_fwd_fw/ diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq.ma index fc36281aa..426c81518 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq.ma @@ -37,7 +37,7 @@ interpretation lemma fquq_refl: âb. tri_reflexive ⦠(fquq b). // qed. -lemma fqu_fquq: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â[b] â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2â¦. +lemma fqu_fquq: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â[b] â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2â¦. /2 width=1 by or_introl/ qed. (* Basic_2A1: removed theorems 8: diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_length.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_length.ma index 08a70b7c3..2e11ace14 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_length.ma @@ -19,7 +19,7 @@ include "static_2/s_transition/fquq.ma". (* Forward lemmas with length for local environments ************************) -lemma fquq_fwd_length_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1, L1, #i⦠â⸮[b] â¦G2, L2, T2⦠â +lemma fquq_fwd_length_lref1: âb,G1,G2,L1,L2,T2,i. â¦G1,L1,#i⦠â⸮[b] â¦G2,L2,T2⦠â |L2| ⤠|L1|. #b #G1 #G2 #L1 #L2 #T2 #i #H elim H -H [2: * ] /3 width=6 by fqu_fwd_length_lref1, lt_to_le/ diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_weight.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_weight.ma index 8a8ef78a7..f9293ec68 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fquq_weight.ma @@ -19,8 +19,8 @@ include "static_2/s_transition/fquq.ma". (* Forward lemmas with weight for closures **********************************) -lemma fquq_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮[b] â¦G2, L2, T2⦠â - â¯{G2, L2, T2} ⤠â¯{G1, L1, T1}. +lemma fquq_fwd_fw: âb,G1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮[b] â¦G2,L2,T2⦠â + â¯{G2,L2,T2} ⤠â¯{G1,L1,T1}. #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H [2: * ] /3 width=2 by fqu_fwd_fw, lt_to_le/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma index b7e9ca046..d204bdc21 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma @@ -37,7 +37,7 @@ interpretation "atomic arity assignment (term)" (* Basic inversion lemmas ***************************************************) -fact aaa_inv_sort_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âs. T = âs â A = âª. +fact aaa_inv_sort_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âs. T = âs â A = âª. #G #L #T #A * -G -L -T -A // [ #I #G #L #V #B #_ #s #H destruct | #I #G #L #A #i #_ #s #H destruct @@ -48,11 +48,11 @@ fact aaa_inv_sort_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âs. T = âs â ] qed-. -lemma aaa_inv_sort: âG,L,A,s. â¦G, L⦠⢠âs â A â A = âª. +lemma aaa_inv_sort: âG,L,A,s. â¦G,L⦠⢠âs â A â A = âª. /2 width=6 by aaa_inv_sort_aux/ qed-. -fact aaa_inv_zero_aux: âG,L,T,A. â¦G, L⦠⢠T â A â T = #0 â - ââI,K,V. L = K.â{I}V & â¦G, K⦠⢠V â A. +fact aaa_inv_zero_aux: âG,L,T,A. â¦G,L⦠⢠T â A â T = #0 â + ââI,K,V. L = K.â{I}V & â¦G,K⦠⢠V â A. #G #L #T #A * -G -L -T -A /2 width=5 by ex2_3_intro/ [ #G #L #s #H destruct | #I #G #L #A #i #_ #H destruct @@ -63,12 +63,12 @@ fact aaa_inv_zero_aux: âG,L,T,A. â¦G, L⦠⢠T â A â T = #0 â ] qed-. -lemma aaa_inv_zero: âG,L,A. â¦G, L⦠⢠#0 â A â - ââI,K,V. L = K.â{I}V & â¦G, K⦠⢠V â A. +lemma aaa_inv_zero: âG,L,A. â¦G,L⦠⢠#0 â A â + ââI,K,V. L = K.â{I}V & â¦G,K⦠⢠V â A. /2 width=3 by aaa_inv_zero_aux/ qed-. -fact aaa_inv_lref_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âi. T = #(âi) â - ââI,K. L = K.â{I} & â¦G, K⦠⢠#i â A. +fact aaa_inv_lref_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âi. T = #(âi) â + ââI,K. L = K.â{I} & â¦G,K⦠⢠#i â A. #G #L #T #A * -G -L -T -A [ #G #L #s #j #H destruct | #I #G #L #V #B #_ #j #H destruct @@ -80,11 +80,11 @@ fact aaa_inv_lref_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âi. T = #(âi) ] qed-. -lemma aaa_inv_lref: âG,L,A,i. â¦G, L⦠⢠#âi â A â - ââI,K. L = K.â{I} & â¦G, K⦠⢠#i â A. +lemma aaa_inv_lref: âG,L,A,i. â¦G,L⦠⢠#âi â A â + ââI,K. L = K.â{I} & â¦G,K⦠⢠#i â A. /2 width=3 by aaa_inv_lref_aux/ qed-. -fact aaa_inv_gref_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âl. T = §l â â¥. +fact aaa_inv_gref_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âl. T = §l â â¥. #G #L #T #A * -G -L -T -A [ #G #L #s #k #H destruct | #I #G #L #V #B #_ #k #H destruct @@ -96,11 +96,11 @@ fact aaa_inv_gref_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âl. T = §l â ] qed-. -lemma aaa_inv_gref: âG,L,A,l. â¦G, L⦠⢠§l â A â â¥. +lemma aaa_inv_gref: âG,L,A,l. â¦G,L⦠⢠§l â A â â¥. /2 width=7 by aaa_inv_gref_aux/ qed-. -fact aaa_inv_abbr_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âp,W,U. T = â{p}W.U â - ââB. â¦G, L⦠⢠W â B & â¦G, L.âW⦠⢠U â A. +fact aaa_inv_abbr_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âp,W,U. T = â{p}W.U â + ââB. â¦G,L⦠⢠W â B & â¦G,L.âW⦠⢠U â A. #G #L #T #A * -G -L -T -A [ #G #L #s #q #W #U #H destruct | #I #G #L #V #B #_ #q #W #U #H destruct @@ -112,12 +112,12 @@ fact aaa_inv_abbr_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âp,W,U. T = â{ ] qed-. -lemma aaa_inv_abbr: âp,G,L,V,T,A. â¦G, L⦠⢠â{p}V.T â A â - ââB. â¦G, L⦠⢠V â B & â¦G, L.âV⦠⢠T â A. +lemma aaa_inv_abbr: âp,G,L,V,T,A. â¦G,L⦠⢠â{p}V.T â A â + ââB. â¦G,L⦠⢠V â B & â¦G,L.âV⦠⢠T â A. /2 width=4 by aaa_inv_abbr_aux/ qed-. -fact aaa_inv_abst_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âp,W,U. T = â{p}W.U â - ââB1,B2. â¦G, L⦠⢠W â B1 & â¦G, L.âW⦠⢠U â B2 & A = â¡B1.B2. +fact aaa_inv_abst_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âp,W,U. T = â{p}W.U â + ââB1,B2. â¦G,L⦠⢠W â B1 & â¦G,L.âW⦠⢠U â B2 & A = â¡B1.B2. #G #L #T #A * -G -L -T -A [ #G #L #s #q #W #U #H destruct | #I #G #L #V #B #_ #q #W #U #H destruct @@ -129,12 +129,12 @@ fact aaa_inv_abst_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âp,W,U. T = â{ ] qed-. -lemma aaa_inv_abst: âp,G,L,W,T,A. â¦G, L⦠⢠â{p}W.T â A â - ââB1,B2. â¦G, L⦠⢠W â B1 & â¦G, L.âW⦠⢠T â B2 & A = â¡B1.B2. +lemma aaa_inv_abst: âp,G,L,W,T,A. â¦G,L⦠⢠â{p}W.T â A â + ââB1,B2. â¦G,L⦠⢠W â B1 & â¦G,L.âW⦠⢠T â B2 & A = â¡B1.B2. /2 width=4 by aaa_inv_abst_aux/ qed-. -fact aaa_inv_appl_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âW,U. T = âW.U â - ââB. â¦G, L⦠⢠W â B & â¦G, L⦠⢠U â â¡B.A. +fact aaa_inv_appl_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âW,U. T = âW.U â + ââB. â¦G,L⦠⢠W â B & â¦G,L⦠⢠U â â¡B.A. #G #L #T #A * -G -L -T -A [ #G #L #s #W #U #H destruct | #I #G #L #V #B #_ #W #U #H destruct @@ -146,12 +146,12 @@ fact aaa_inv_appl_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âW,U. T = âW.U ] qed-. -lemma aaa_inv_appl: âG,L,V,T,A. â¦G, L⦠⢠âV.T â A â - ââB. â¦G, L⦠⢠V â B & â¦G, L⦠⢠T â â¡B.A. +lemma aaa_inv_appl: âG,L,V,T,A. â¦G,L⦠⢠âV.T â A â + ââB. â¦G,L⦠⢠V â B & â¦G,L⦠⢠T â â¡B.A. /2 width=3 by aaa_inv_appl_aux/ qed-. -fact aaa_inv_cast_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âW,U. T = âW.U â - â¦G, L⦠⢠W â A ⧠â¦G, L⦠⢠U â A. +fact aaa_inv_cast_aux: âG,L,T,A. â¦G,L⦠⢠T â A â âW,U. T = âW.U â + â¦G,L⦠⢠W â A ⧠â¦G,L⦠⢠U â A. #G #L #T #A * -G -L -T -A [ #G #L #s #W #U #H destruct | #I #G #L #V #B #_ #W #U #H destruct @@ -163,6 +163,6 @@ fact aaa_inv_cast_aux: âG,L,T,A. â¦G, L⦠⢠T â A â âW,U. T = âW.U ] qed-. -lemma aaa_inv_cast: âG,L,W,T,A. â¦G, L⦠⢠âW.T â A â - â¦G, L⦠⢠W â A ⧠â¦G, L⦠⢠T â A. +lemma aaa_inv_cast: âG,L,W,T,A. â¦G,L⦠⢠âW.T â A â + â¦G,L⦠⢠W â A ⧠â¦G,L⦠⢠T â A. /2 width=3 by aaa_inv_cast_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_aaa.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_aaa.ma index 15b4fe4e1..bd1eb91a2 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa_aaa.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa_aaa.ma @@ -18,7 +18,7 @@ include "static_2/static/aaa.ma". (* Main inversion lemmas ****************************************************) -theorem aaa_mono: âG,L,T,A1. â¦G, L⦠⢠T â A1 â âA2. â¦G, L⦠⢠T â A2 â A1 = A2. +theorem aaa_mono: âG,L,T,A1. â¦G,L⦠⢠T â A1 â âA2. â¦G,L⦠⢠T â A2 â A1 = A2. #G #L #T #A1 #H elim H -G -L -T -A1 [ #G #L #s #A2 #H >(aaa_inv_sort ⦠H) -H // | #I1 #G #L #V1 #B #_ #IH #A2 #H diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma index 1cc311ddf..b006c2d21 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma @@ -22,7 +22,7 @@ include "static_2/static/aaa.ma". (* Advanced properties ******************************************************) (* Basic_2A1: was: aaa_lref *) -lemma aaa_lref_drops: âI,G,K,V,B,i,L. â¬*[i] L â K.â{I}V â â¦G, K⦠⢠V â B â â¦G, L⦠⢠#i â B. +lemma aaa_lref_drops: âI,G,K,V,B,i,L. â¬*[i] L â K.â{I}V â â¦G,K⦠⢠V â B â â¦G,L⦠⢠#i â B. #I #G #K #V #B #i elim i -i [ #L #H lapply (drops_fwd_isid ⦠H ?) -H // #H destruct /2 width=1 by aaa_zero/ @@ -34,8 +34,8 @@ qed. (* Advanced inversion lemmas ************************************************) (* Basic_2A1: was: aaa_inv_lref *) -lemma aaa_inv_lref_drops: âG,A,i,L. â¦G, L⦠⢠#i â A â - ââI,K,V. â¬*[i] L â K.â{I}V & â¦G, K⦠⢠V â A. +lemma aaa_inv_lref_drops: âG,A,i,L. â¦G,L⦠⢠#i â A â + ââI,K,V. â¬*[i] L â K.â{I}V & â¦G,K⦠⢠V â A. #G #A #i elim i -i [ #L #H elim (aaa_inv_zero ⦠H) -H /3 width=5 by drops_refl, ex2_3_intro/ | #i #IH #L #H elim (aaa_inv_lref ⦠H) -H @@ -47,8 +47,8 @@ qed-. (* Basic_2A1: includes: aaa_lift *) (* Note: it should use drops_split_trans_pair2 *) -lemma aaa_lifts: âG,L1,T1,A. â¦G, L1⦠⢠T1 â A â âb,f,L2. â¬*[b, f] L2 â L1 â - âT2. â¬*[f] T1 â T2 â â¦G, L2⦠⢠T2 â A. +lemma aaa_lifts: âG,L1,T1,A. â¦G,L1⦠⢠T1 â A â âb,f,L2. â¬*[b,f] L2 â L1 â + âT2. â¬*[f] T1 â T2 â â¦G,L2⦠⢠T2 â A. @(fqup_wf_ind_eq (â)) #G0 #L0 #T0 #IH #G #L1 * * [ #s #HG #HL #HT #A #H #b #f #L2 #HL21 #X #HX -b -IH lapply (aaa_inv_sort ⦠H) -H #H destruct @@ -86,8 +86,8 @@ qed-. (* Inversion lemmas with generic slicing for local environments *************) (* Basic_2A1: includes: aaa_inv_lift *) -lemma aaa_inv_lifts: âG,L2,T2,A. â¦G, L2⦠⢠T2 â A â âb,f,L1. â¬*[b, f] L2 â L1 â - âT1. â¬*[f] T1 â T2 â â¦G, L1⦠⢠T1 â A. +lemma aaa_inv_lifts: âG,L2,T2,A. â¦G,L2⦠⢠T2 â A â âb,f,L1. â¬*[b,f] L2 â L1 â + âT1. â¬*[f] T1 â T2 â â¦G,L1⦠⢠T1 â A. @(fqup_wf_ind_eq (â)) #G0 #L0 #T0 #IH #G #L2 * * [ #s #HG #HL #HT #A #H #b #f #L1 #HL21 #X #HX -b -IH lapply (aaa_inv_sort ⦠H) -H #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma index 777183562..d002095bb 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma @@ -19,7 +19,7 @@ include "static_2/static/aaa_rdeq.ma". (* Properties with sort-irrelevant equivalence on referred entries **********) -lemma aaa_fdeq_conf: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â - âA. â¦G1, L1⦠⢠T1 â A â â¦G2, L2⦠⢠T2 â A. +lemma aaa_fdeq_conf: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â + âA. â¦G1,L1⦠⢠T1 â A â â¦G2,L2⦠⢠T2 â A. #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /2 width=5 by aaa_tdeq_conf_rdeq/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_fqus.ma index f02455f9f..d3b9d83cb 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa_fqus.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa_fqus.ma @@ -19,8 +19,8 @@ include "static_2/static/aaa_drops.ma". (* Properties on supclosure *************************************************) -lemma aaa_fqu_conf: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â - âA1. â¦G1, L1⦠⢠T1 â A1 â âA2. â¦G2, L2⦠⢠T2 â A2. +lemma aaa_fqu_conf: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â + âA1. â¦G1,L1⦠⢠T1 â A1 â âA2. â¦G2,L2⦠⢠T2 â A2. #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2 [ #I #G #L #T #A #H elim (aaa_inv_zero ⦠H) -H #J #K #V #H #HA destruct /2 width=2 by ex_intro/ @@ -43,21 +43,21 @@ lemma aaa_fqu_conf: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠] qed-. -lemma aaa_fquq_conf: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â⸮ â¦G2, L2, T2⦠â - âA1. â¦G1, L1⦠⢠T1 â A1 â âA2. â¦G2, L2⦠⢠T2 â A2. +lemma aaa_fquq_conf: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â⸮ â¦G2,L2,T2⦠â + âA1. â¦G1,L1⦠⢠T1 â A1 â âA2. â¦G2,L2⦠⢠T2 â A2. #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H /2 width=6 by aaa_fqu_conf/ * #H1 #H2 #H3 destruct /2 width=2 by ex_intro/ qed-. -lemma aaa_fqup_conf: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â+ â¦G2, L2, T2⦠â - âA1. â¦G1, L1⦠⢠T1 â A1 â âA2. â¦G2, L2⦠⢠T2 â A2. +lemma aaa_fqup_conf: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â+ â¦G2,L2,T2⦠â + âA1. â¦G1,L1⦠⢠T1 â A1 â âA2. â¦G2,L2⦠⢠T2 â A2. #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind ⦠H) -G2 -L2 -T2 [2: #G #G2 #L #L2 #T #T2 #_ #H2 #IH1 #A #HA elim (IH1 ⦠HA) -IH1 -A ] /2 width=6 by aaa_fqu_conf/ qed-. -lemma aaa_fqus_conf: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â* â¦G2, L2, T2⦠â - âA1. â¦G1, L1⦠⢠T1 â A1 â âA2. â¦G2, L2⦠⢠T2 â A2. +lemma aaa_fqus_conf: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â* â¦G2,L2,T2⦠â + âA1. â¦G1,L1⦠⢠T1 â A1 â âA2. â¦G2,L2⦠⢠T2 â A2. #G1 #G2 #L1 #L2 #T1 #T2 #H elim(fqus_inv_fqup ⦠H) -H /2 width=6 by aaa_fqup_conf/ * #H1 #H2 #H3 destruct /2 width=2 by ex_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma index 265ed7f5c..c08a02487 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma @@ -19,8 +19,8 @@ include "static_2/static/aaa.ma". (* Properties with sort-irrelevant equivalence on referred entries **********) -lemma aaa_tdeq_conf_rdeq: âG,L1,T1,A. â¦G, L1⦠⢠T1 â A â âT2. T1 â T2 â - âL2. L1 â[T1] L2 â â¦G, L2⦠⢠T2 â A. +lemma aaa_tdeq_conf_rdeq: âG,L1,T1,A. â¦G,L1⦠⢠T1 â A â âT2. T1 â T2 â + âL2. L1 â[T1] L2 â â¦G,L2⦠⢠T2 â A. #G #L1 #T1 #A #H elim H -G -L1 -T1 -A [ #G #L1 #s1 #X #H1 elim (tdeq_inv_sort1 ⦠H1) -H1 // | #I #G #L1 #V1 #B #_ #IH #X #H1 >(tdeq_inv_lref1 ⦠H1) -H1 diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma index be82b9302..1c5b47ba1 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma @@ -30,17 +30,17 @@ interpretation (* Basic_properties *********************************************************) lemma fdeq_intro_dx (G): âL1,L2,T2. L1 â[T2] L2 â - âT1. T1 â T2 â â¦G, L1, T1⦠â â¦G, L2, T2â¦. + âT1. T1 â T2 â â¦G,L1,T1⦠â â¦G,L2,T2â¦. /3 width=3 by fdeq_intro_sn, tdeq_rdeq_div/ qed. (* Basic inversion lemmas ***************************************************) -lemma fdeq_inv_gen_sn: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â +lemma fdeq_inv_gen_sn: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â§â§ G1 = G2 & L1 â[T1] L2 & T1 â T2. #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /2 width=1 by and3_intro/ qed-. -lemma fdeq_inv_gen_dx: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â +lemma fdeq_inv_gen_dx: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â â§â§ G1 = G2 & L1 â[T2] L2 & T1 â T2. #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /3 width=3 by tdeq_rdeq_conf, and3_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma index d337f7054..1edc17d50 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma @@ -32,18 +32,18 @@ theorem fdeq_trans: tri_transitive ⦠fdeq. /4 width=5 by fdeq_intro_sn, rdeq_trans, tdeq_rdeq_div, tdeq_trans/ qed-. -theorem fdeq_canc_sn: âG,G1,L,L1,T,T1. â¦G, L, T⦠â â¦G1, L1, T1â¦â - âG2,L2,T2. â¦G, L, T⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â â¦G2, L2, T2â¦. +theorem fdeq_canc_sn: âG,G1,L,L1,T,T1. â¦G,L,T⦠â â¦G1,L1,T1â¦â + âG2,L2,T2. â¦G,L,T⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â â¦G2,L2,T2â¦. /3 width=5 by fdeq_trans, fdeq_sym/ qed-. -theorem fdeq_canc_dx: âG1,G,L1,L,T1,T. â¦G1, L1, T1⦠â â¦G, L, T⦠â - âG2,L2,T2. â¦G2, L2, T2⦠â â¦G, L, T⦠â â¦G1, L1, T1⦠â â¦G2, L2, T2â¦. +theorem fdeq_canc_dx: âG1,G,L1,L,T1,T. â¦G1,L1,T1⦠â â¦G,L,T⦠â + âG2,L2,T2. â¦G2,L2,T2⦠â â¦G,L,T⦠â â¦G1,L1,T1⦠â â¦G2,L2,T2â¦. /3 width=5 by fdeq_trans, fdeq_sym/ qed-. (* Main inversion lemmas with degree-based equivalence on terms *************) -theorem fdeq_tdneq_repl_dx: âG1,G2,L1,L2,T1,T2. â¦G1, L1, T1⦠â â¦G2, L2, T2⦠â - âU1,U2. â¦G1, L1, U1⦠â â¦G2, L2, U2⦠â +theorem fdeq_tdneq_repl_dx: âG1,G2,L1,L2,T1,T2. â¦G1,L1,T1⦠â â¦G2,L2,T2⦠â + âU1,U2. â¦G1,L1,U1⦠â â¦G2,L2,U2⦠â (T2 â U2 â â¥) â (T1 â U1 â â¥). #G1 #G2 #L1 #L2 #T1 #T2 #HT #U1 #U2 #HU #HnTU2 #HTU1 elim (fdeq_inv_gen_sn ⦠HT) -HT #_ #_ #HT diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma index 19fe848f7..333a0f787 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma @@ -20,7 +20,7 @@ include "static_2/static/fdeq.ma". (* Properties with sort-irrelevant equivalence for terms ********************) lemma tdeq_fdeq: âT1,T2. T1 â T2 â - âG,L. â¦G, L, T1⦠â â¦G, L, T2â¦. + âG,L. â¦G,L,T1⦠â â¦G,L,T2â¦. /2 width=1 by fdeq_intro_sn/ qed. (* Advanced properties ******************************************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma index 9662b6b32..26ae320e7 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma @@ -19,9 +19,9 @@ include "static_2/static/fdeq.ma". (* Properties with star-iterated structural successor for closures **********) -lemma fdeq_fqus_trans: âb,G1,G,L1,L,T1,T. â¦G1, L1, T1⦠â â¦G, L, T⦠â - âG2,L2,T2. â¦G, L, T⦠â*[b] â¦G2, L2, T2⦠â - ââG,L0,T0. â¦G1, L1, T1⦠â*[b] â¦G, L0, T0⦠& â¦G, L0, T0⦠â â¦G2, L2, T2â¦. +lemma fdeq_fqus_trans: âb,G1,G,L1,L,T1,T. â¦G1,L1,T1⦠â â¦G,L,T⦠â + âG2,L2,T2. â¦G,L,T⦠â*[b] â¦G2,L2,T2⦠â + ââG,L0,T0. â¦G1,L1,T1⦠â*[b] â¦G,L0,T0⦠& â¦G,L0,T0⦠â â¦G2,L2,T2â¦. #b #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H2 elim(fdeq_inv_gen_dx ⦠H1) -H1 #HG #HL1 #HT1 destruct elim (rdeq_fqus_trans ⦠H2 ⦠HL1) -L #L #T0 #H2 #HT02 #HL2 diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma index c430e7aae..5dbf18b5e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma @@ -20,7 +20,7 @@ include "static_2/static/fdeq.ma". (* Properties with syntactic equivalence on referred entries ****************) lemma req_rdeq_trans: âL1,L,T1. L1 â¡[T1] L â - âG1,G2,L2,T2. â¦G1, L, T1⦠â â¦G2, L2, T2⦠â â¦G1, L1, T1⦠â â¦G2, L2, T2â¦. + âG1,G2,L2,T2. â¦G1,L,T1⦠â â¦G2,L2,T2⦠â â¦G1,L1,T1⦠â â¦G2,L2,T2â¦. #L1 #L #T1 #HL1 #G1 #G2 #L2 #T2 #H elim (fdeq_inv_gen_sn ⦠H) -H #H #HL2 #T12 destruct /3 width=3 by fdeq_intro_sn, req_rdeq_trans/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma index 3c6466086..8a9fc3ce0 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma @@ -20,7 +20,7 @@ include "static_2/static/frees_fqup.ma". (* Advanced properties ******************************************************) -lemma frees_atom_drops: âb,L,i. â¬*[b, ðâ´iâµ] L â â â +lemma frees_atom_drops: âb,L,i. â¬*[b,ðâ´iâµ] L â â â âf. ðâ¦f⦠â L ⢠ð *â¦#i⦠â ⫯*[i]âf. #b #L elim L -L /2 width=1 by frees_atom/ #L #I #IH * @@ -74,7 +74,7 @@ qed. (* Advanced inversion lemmas ************************************************) lemma frees_inv_lref_drops: âL,i,f. L ⢠ð *â¦#i⦠â f â - â¨â¨ ââg. â¬*[â», ðâ´iâµ] L â â & ðâ¦g⦠& f = ⫯*[i] âg + â¨â¨ ââg. â¬*[â»,ðâ´iâµ] L â â & ðâ¦g⦠& f = ⫯*[i] âg | ââg,I,K,V. K ⢠ð *â¦V⦠â g & â¬*[i] L â K.â{I}V & f = ⫯*[i] âg | ââg,I,K. â¬*[i] L â K.â¤{I} & ðâ¦g⦠& f = ⫯*[i] âg. @@ -98,7 +98,7 @@ qed-. (* Properties with generic slicing for local environments *******************) lemma frees_lifts: âb,f1,K,T. K ⢠ð *â¦T⦠â f1 â - âf,L. â¬*[b, f] L â K â âU. â¬*[f] T â U â + âf,L. â¬*[b,f] L â K â âU. â¬*[f] T â U â âf2. f ~â f1 â f2 â L ⢠ð *â¦U⦠â f2. #b #f1 #K #T #H lapply (frees_fwd_isfin ⦠H) elim H -f1 -K -T [ #f1 #K #s #Hf1 #_ #f #L #HLK #U #H2 #f2 #H3 @@ -154,7 +154,7 @@ lemma frees_lifts: âb,f1,K,T. K ⢠ð *â¦T⦠â f1 â ] qed-. -lemma frees_lifts_SO: âb,L,K. â¬*[b, ðâ´1âµ] L â K â âT,U. â¬*[1] T â U â +lemma frees_lifts_SO: âb,L,K. â¬*[b,ðâ´1âµ] L â K â âT,U. â¬*[1] T â U â âf. K ⢠ð *â¦T⦠â f â L ⢠ð *â¦U⦠â ⫯f. #b #L #K #HLK #T #U #HTU #f #Hf @(frees_lifts b ⦠Hf ⦠HTU) // (**) (* auto fails *) @@ -163,21 +163,21 @@ qed. (* Forward lemmas with generic slicing for local environments ***************) lemma frees_fwd_coafter: âb,f2,L,U. L ⢠ð *â¦U⦠â f2 â - âf,K. â¬*[b, f] L â K â âT. â¬*[f] T â U â + âf,K. â¬*[b,f] L â K â âT. â¬*[f] T â U â âf1. K ⢠ð *â¦T⦠â f1 â f ~â f1 â f2. /4 width=11 by frees_lifts, frees_mono, coafter_eq_repl_back0/ qed-. (* Inversion lemmas with generic slicing for local environments *************) lemma frees_inv_lifts_ex: âb,f2,L,U. L ⢠ð *â¦U⦠â f2 â - âf,K. â¬*[b, f] L â K â âT. â¬*[f] T â U â + âf,K. â¬*[b,f] L â K â âT. â¬*[f] T â U â ââf1. f ~â f1 â f2 & K ⢠ð *â¦T⦠â f1. #b #f2 #L #U #Hf2 #f #K #HLK #T elim (frees_total K T) /3 width=9 by frees_fwd_coafter, ex2_intro/ qed-. lemma frees_inv_lifts_SO: âb,f,L,U. L ⢠ð *â¦U⦠â f â - âK. â¬*[b, ðâ´1âµ] L â K â âT. â¬*[1] T â U â + âK. â¬*[b,ðâ´1âµ] L â K â âT. â¬*[1] T â U â K ⢠ð *â¦T⦠â ⫱f. #b #f #L #U #H #K #HLK #T #HTU elim(frees_inv_lifts_ex ⦠H ⦠HLK ⦠HTU) -b -L -U #f1 #Hf #Hf1 elim (coafter_inv_nxx ⦠Hf) -Hf @@ -185,7 +185,7 @@ lemma frees_inv_lifts_SO: âb,f,L,U. L ⢠ð *â¦U⦠â f â qed-. lemma frees_inv_lifts: âb,f2,L,U. L ⢠ð *â¦U⦠â f2 â - âf,K. â¬*[b, f] L â K â âT. â¬*[f] T â U â + âf,K. â¬*[b,f] L â K â âT. â¬*[f] T â U â âf1. f ~â f1 â f2 â K ⢠ð *â¦T⦠â f1. #b #f2 #L #U #H #f #K #HLK #T #HTU #f1 #Hf2 elim (frees_inv_lifts_ex ⦠H ⦠HLK ⦠HTU) -b -L -U /3 width=7 by frees_eq_repl_back, coafter_inj/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma index bfafabbdb..51c334d10 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma @@ -21,7 +21,7 @@ include "static_2/static/frees.ma". definition fsle: bi_relation lenv term â λL1,T1,L2,T2. âân1,n2,f1,f2. L1 ⢠ð *â¦T1⦠â f1 & L2 ⢠ð *â¦T2⦠â f2 & - L1 ââ§*[n1, n2] L2 & ⫱*[n1]f1 â ⫱*[n2]f2. + L1 ââ§*[n1,n2] L2 & ⫱*[n1]f1 â ⫱*[n2]f2. interpretation "free variables inclusion (restricted closure)" 'SubSetEq L1 T1 L2 T2 = (fsle L1 T1 L2 T2). @@ -31,8 +31,8 @@ interpretation "free variables inclusion (term)" (* Basic properties *********************************************************) -lemma fsle_sort: âL,s1,s2. â¦L, âs1⦠â â¦L, âs2â¦. +lemma fsle_sort: âL,s1,s2. â¦L,âs1⦠â â¦L,âs2â¦. /3 width=8 by frees_sort, sle_refl, ex4_4_intro/ qed. -lemma fsle_gref: âL,l1,l2. â¦L, §l1⦠â â¦L, §l2â¦. +lemma fsle_gref: âL,l1,l2. â¦L,§l1⦠â â¦L,§l2â¦. /3 width=8 by frees_gref, sle_refl, ex4_4_intro/ qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma index 542d8b10e..1eee58094 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma @@ -20,7 +20,7 @@ include "static_2/static/fsle_length.ma". (* Advanced properties ******************************************************) lemma fsle_lifts_sn: âT1,U1. â¬*[1] T1 â U1 â âL1,L2. |L2| ⤠|L1| â - âT2. â¦L1, T1⦠â â¦L2, T2⦠â â¦L1.â§, U1⦠â â¦L2, T2â¦. + âT2. â¦L1,T1⦠â â¦L2,T2⦠â â¦L1.â§,U1⦠â â¦L2,T2â¦. #T1 #U1 #HTU1 #L1 #L2 #H1L #T2 * #n #m #f #g #Hf #Hg #H2L #Hfg lapply (lveq_length_fwd_dx ⦠H2L ?) // -H1L #H destruct @@ -40,8 +40,8 @@ lapply (frees_lifts_SO (â) (L2.â§) ⦠HTU2 ⦠Hg) @(ex4_4_intro ⦠Hf Hg) /2 width=4 by lveq_void_dx/ (**) (* explict constructor *) qed-. -lemma fsle_lifts_SO_sn: âK1,K2. |K1| = |K2| â âV1,V2. â¦K1, V1⦠â â¦K2, V2⦠â - âW1. â¬*[1] V1 â W1 â âI1,I2. â¦K1.â{I1}, W1⦠â â¦K2.â{I2}V2, #Oâ¦. +lemma fsle_lifts_SO_sn: âK1,K2. |K1| = |K2| â âV1,V2. â¦K1,V1⦠â â¦K2,V2⦠â + âW1. â¬*[1] V1 â W1 â âI1,I2. â¦K1.â{I1},W1⦠â â¦K2.â{I2}V2,#Oâ¦. #K1 #K2 #HK #V1 #V2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #HK12 #Hf12 #W1 #HVW1 #I1 #I2 @@ -49,9 +49,9 @@ elim (lveq_inj_length ⦠HK12) // -HK #H1 #H2 destruct /5 width=12 by frees_lifts_SO, frees_pair, drops_refl, drops_drop, lveq_bind, sle_weak, ex4_4_intro/ qed. -lemma fsle_lifts_SO: âK1,K2. |K1| = |K2| â âT1,T2. â¦K1, T1⦠â â¦K2, T2⦠â +lemma fsle_lifts_SO: âK1,K2. |K1| = |K2| â âT1,T2. â¦K1,T1⦠â â¦K2,T2⦠â âU1,U2. â¬*[1] T1 â U1 â â¬*[1] T2 â U2 â - âI1,I2. â¦K1.â{I1}, U1⦠â â¦K2.â{I2}, U2â¦. + âI1,I2. â¦K1.â{I1},U1⦠â â¦K2.â{I2},U2â¦. #K1 #K2 #HK #T1 #T2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #HK12 #Hf12 #U1 #U2 #HTU1 #HTU2 #I1 #I2 @@ -62,8 +62,8 @@ qed. (* Advanced inversion lemmas ************************************************) lemma fsle_inv_lifts_sn: âT1,U1. â¬*[1] T1 â U1 â - âI1,I2,L1,L2,V1,V2,U2. â¦L1.â{I1}V1,U1⦠â â¦L2.â{I2}V2, U2⦠â - âp. â¦L1, T1⦠â â¦L2, â{p,I2}V2.U2â¦. + âI1,I2,L1,L2,V1,V2,U2. â¦L1.â{I1}V1,U1⦠â â¦L2.â{I2}V2,U2⦠â + âp. â¦L1,T1⦠â â¦L2,â{p,I2}V2.U2â¦. #T1 #U1 #HTU1 #I1 #I2 #L1 #L2 #V1 #V2 #U2 * #n #m #f2 #g2 #Hf2 #Hg2 #HL #Hfg2 #p elim (lveq_inv_pair_pair ⦠HL) -HL #HL #H1 #H2 destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle_fqup.ma index 8056bf243..04162cc18 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle_fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle_fqup.ma @@ -26,8 +26,8 @@ elim (frees_total L T) #f #Hf qed. lemma fsle_shift: âL1,L2. |L1| = |L2| â - âI,T1,T2,V. â¦L1.â§, T1⦠â â¦L2.â{I}V, T2⦠â - âp. â¦L1.â§, T1⦠â â¦L2, â{p,I}V.T2â¦. + âI,T1,T2,V. â¦L1.â§,T1⦠â â¦L2.â{I}V,T2⦠â + âp. â¦L1.â§,T1⦠â â¦L2,â{p,I}V.T2â¦. #L1 #L2 #H1L #I #T1 #T2 #V * #n #m #f2 #g2 #Hf2 #Hg2 #H2L #Hfg2 #p elim (lveq_inj_length ⦠H2L) // -H1L #H1 #H2 destruct @@ -38,8 +38,8 @@ lapply (sor_inv_sle_dx ⦠Hg) #H0g /4 width=10 by frees_bind, lveq_void_sn, sle_tl, sle_trans, ex4_4_intro/ qed. -lemma fsle_bind_dx_sn: âL1,L2,V1,V2. â¦L1, V1⦠â â¦L2, V2⦠â - âp,I,T2. â¦L1, V1⦠â â¦L2, â{p,I}V2.T2â¦. +lemma fsle_bind_dx_sn: âL1,L2,V1,V2. â¦L1,V1⦠â â¦L2,V2⦠â + âp,I,T2. â¦L1,V1⦠â â¦L2,â{p,I}V2.T2â¦. #L1 #L2 #V1 #V2 * #n1 #m1 #f1 #g1 #Hf1 #Hg1 #HL12 #Hfg1 #p #I #T2 elim (frees_total (L2.â§) T2) #g2 #Hg2 elim (sor_isfin_ex g1 (⫱g2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ #g #Hg #_ @@ -47,8 +47,8 @@ elim (sor_isfin_ex g1 (⫱g2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ #g #Hg # /4 width=5 by frees_bind_void, sor_inv_sle_sn, sor_tls, sle_trans/ qed. -lemma fsle_bind_dx_dx: âL1,L2,T1,T2. â¦L1, T1⦠â â¦L2.â§, T2⦠â |L1| ⤠|L2| â - âp,I,V2. â¦L1, T1⦠â â¦L2, â{p,I}V2.T2â¦. +lemma fsle_bind_dx_dx: âL1,L2,T1,T2. â¦L1,T1⦠â â¦L2.â§,T2⦠â |L1| ⤠|L2| â + âp,I,V2. â¦L1,T1⦠â â¦L2,â{p,I}V2.T2â¦. #L1 #L2 #T1 #T2 * #n1 #x1 #f2 #g2 #Hf2 #Hg2 #H #Hfg2 #HL12 #p #I #V2 elim (lveq_inv_void_dx_length ⦠H HL12) -H -HL12 #m1 #HL12 #H1 #H2 destruct <tls_xn in Hfg2; #Hfg2 @@ -58,8 +58,8 @@ elim (sor_isfin_ex g1 (⫱g2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ #g #Hg # /4 width=5 by frees_bind_void, sor_inv_sle_dx, sor_tls, sle_trans/ qed. -lemma fsle_flat_dx_sn: âL1,L2,V1,V2. â¦L1, V1⦠â â¦L2, V2⦠â - âI,T2. â¦L1, V1⦠â â¦L2, â{I}V2.T2â¦. +lemma fsle_flat_dx_sn: âL1,L2,V1,V2. â¦L1,V1⦠â â¦L2,V2⦠â + âI,T2. â¦L1,V1⦠â â¦L2,â{I}V2.T2â¦. #L1 #L2 #V1 #V2 * #n1 #m1 #f1 #g1 #Hf1 #Hg1 #HL12 #Hfg1 #I #T2 elim (frees_total L2 T2) #g2 #Hg2 elim (sor_isfin_ex g1 g2) /2 width=3 by frees_fwd_isfin/ #g #Hg #_ @@ -67,8 +67,8 @@ elim (sor_isfin_ex g1 g2) /2 width=3 by frees_fwd_isfin/ #g #Hg #_ /4 width=5 by frees_flat, sor_inv_sle_sn, sor_tls, sle_trans/ qed. -lemma fsle_flat_dx_dx: âL1,L2,T1,T2. â¦L1, T1⦠â â¦L2, T2⦠â - âI,V2. â¦L1, T1⦠â â¦L2, â{I}V2.T2â¦. +lemma fsle_flat_dx_dx: âL1,L2,T1,T2. â¦L1,T1⦠â â¦L2,T2⦠â + âI,V2. â¦L1,T1⦠â â¦L2,â{I}V2.T2â¦. #L1 #L2 #T1 #T2 * #n1 #m1 #f2 #g2 #Hf2 #Hg2 #HL12 #Hfg2 #I #V2 elim (frees_total L2 V2) #g1 #Hg1 elim (sor_isfin_ex g1 g2) /2 width=3 by frees_fwd_isfin/ #g #Hg #_ @@ -78,8 +78,8 @@ qed. (* Advanced forward lemmas ***************************************************) -lemma fsle_fwd_pair_sn: âI1,I2,L1,L2,V1,V2,T1,T2. â¦L1.â{I1}V1, T1⦠â â¦L2.â{I2}V2, T2⦠â - â¦L1.â§, T1⦠â â¦L2.â{I2}V2, T2â¦. +lemma fsle_fwd_pair_sn: âI1,I2,L1,L2,V1,V2,T1,T2. â¦L1.â{I1}V1,T1⦠â â¦L2.â{I2}V2,T2⦠â + â¦L1.â§,T1⦠â â¦L2.â{I2}V2,T2â¦. #I1 #I2 #L1 #L2 #V1 #V2 #T1 #T2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #HL12 #Hf12 elim (lveq_inv_pair_pair ⦠HL12) -HL12 #HL12 #H1 #H2 destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle_fsle.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle_fsle.ma index d8c0c3adc..580051cea 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle_fsle.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle_fsle.ma @@ -19,10 +19,10 @@ include "static_2/static/fsle_fqup.ma". (* Advanced inversion lemmas ************************************************) -lemma fsle_frees_trans: âL1,L2,T1,T2. â¦L1, T1⦠â â¦L2, T2⦠â +lemma fsle_frees_trans: âL1,L2,T1,T2. â¦L1,T1⦠â â¦L2,T2⦠â âf2. L2 ⢠ð *â¦T2⦠â f2 â âân1,n2,f1. L1 ⢠ð *â¦T1⦠â f1 & - L1 ââ§*[n1, n2] L2 & ⫱*[n1]f1 â ⫱*[n2]f2. + L1 ââ§*[n1,n2] L2 & ⫱*[n1]f1 â ⫱*[n2]f2. #L1 #L2 #T1 #T2 * #n1 #n2 #f1 #g2 #Hf1 #Hg2 #HL #Hn #f2 #Hf2 lapply (frees_mono ⦠Hg2 ⦠Hf2) -Hg2 -Hf2 #Hgf2 lapply (tls_eq_repl n2 ⦠Hgf2) -Hgf2 #Hgf2 @@ -31,7 +31,7 @@ lapply (sle_eq_repl_back2 ⦠Hn ⦠Hgf2) -g2 qed-. lemma fsle_frees_trans_eq: âL1,L2. |L1| = |L2| â - âT1,T2. â¦L1, T1⦠â â¦L2, T2⦠â âf2. L2 ⢠ð *â¦T2⦠â f2 â + âT1,T2. â¦L1,T1⦠â â¦L2,T2⦠â âf2. L2 ⢠ð *â¦T2⦠â f2 â ââf1. L1 ⢠ð *â¦T1⦠â f1 & f1 â f2. #L1 #L2 #H1L #T1 #T2 #H2L #f2 #Hf2 elim (fsle_frees_trans ⦠H2L ⦠Hf2) -T2 #n1 #n2 #f1 #Hf1 #H2L #Hf12 @@ -40,7 +40,7 @@ elim (lveq_inj_length ⦠H2L) // -L2 #H1 #H2 destruct qed-. lemma fsle_inv_frees_eq: âL1,L2. |L1| = |L2| â - âT1,T2. â¦L1, T1⦠â â¦L2, T2⦠â + âT1,T2. â¦L1,T1⦠â â¦L2,T2⦠â âf1. L1 ⢠ð *â¦T1⦠â f1 â âf2. L2 ⢠ð *â¦T2⦠â f2 â f1 â f2. #L1 #L2 #H1L #T1 #T2 #H2L #f1 #Hf1 #f2 #Hf2 @@ -50,8 +50,8 @@ qed-. (* Main properties **********************************************************) -theorem fsle_trans_sn: âL1,L2,T1,T. â¦L1, T1⦠â â¦L2, T⦠â - âT2. â¦L2, T⦠â â¦L2, T2⦠â â¦L1, T1⦠â â¦L2, T2â¦. +theorem fsle_trans_sn: âL1,L2,T1,T. â¦L1,T1⦠â â¦L2,T⦠â + âT2. â¦L2,T⦠â â¦L2,T2⦠â â¦L1,T1⦠â â¦L2,T2â¦. #L1 #L2 #T1 #T * #m1 #m0 #g1 #g0 #Hg1 #Hg0 #Hm #Hg #T2 @@ -62,8 +62,8 @@ lapply (sle_eq_repl_back1 ⦠Hf ⦠Hfg0) -f0 /4 width=10 by sle_tls, sle_trans, ex4_4_intro/ qed-. -theorem fsle_trans_dx: âL1,T1,T. â¦L1, T1⦠â â¦L1, T⦠â - âL2,T2. â¦L1, T⦠â â¦L2, T2⦠â â¦L1, T1⦠â â¦L2, T2â¦. +theorem fsle_trans_dx: âL1,T1,T. â¦L1,T1⦠â â¦L1,T⦠â + âL2,T2. â¦L1,T⦠â â¦L2,T2⦠â â¦L1,T1⦠â â¦L2,T2â¦. #L1 #T1 #T * #m1 #m0 #g1 #g0 #Hg1 #Hg0 #Hm #Hg #L2 #T2 @@ -74,8 +74,8 @@ lapply (sle_eq_repl_back2 ⦠Hg ⦠Hgf0) -g0 /4 width=10 by sle_tls, sle_trans, ex4_4_intro/ qed-. -theorem fsle_trans_rc: âL1,L,T1,T. |L1| = |L| â â¦L1, T1⦠â â¦L, T⦠â - âL2,T2. |L| = |L2| â â¦L, T⦠â â¦L2, T2⦠â â¦L1, T1⦠â â¦L2, T2â¦. +theorem fsle_trans_rc: âL1,L,T1,T. |L1| = |L| â â¦L1,T1⦠â â¦L,T⦠â + âL2,T2. |L| = |L2| â â¦L,T⦠â â¦L2,T2⦠â â¦L1,T1⦠â â¦L2,T2â¦. #L1 #L #T1 #T #HL1 * #m1 #m0 #g1 #g0 #Hg1 #Hg0 #Hm #Hg #L2 #T2 #HL2 @@ -88,8 +88,8 @@ lapply (sle_eq_repl_back2 ⦠Hg ⦠Hgf0) -g0 qed-. theorem fsle_bind_sn_ge: âL1,L2. |L2| ⤠|L1| â - âV1,T1,T. â¦L1, V1⦠â â¦L2, T⦠â â¦L1.â§, T1⦠â â¦L2, T⦠â - âp,I. â¦L1, â{p,I}V1.T1⦠â â¦L2, Tâ¦. + âV1,T1,T. â¦L1,V1⦠â â¦L2,T⦠â â¦L1.â§,T1⦠â â¦L2,T⦠â + âp,I. â¦L1,â{p,I}V1.T1⦠â â¦L2,Tâ¦. #L1 #L2 #HL #V1 #T1 #T * #n1 #x #f1 #g #Hf1 #Hg #H1n1 #H2n1 #H #p #I elim (fsle_frees_trans ⦠H ⦠Hg) -H #n2 #n #f2 #Hf2 #H1n2 #H2n2 elim (lveq_inj_void_sn_ge ⦠H1n1 ⦠H1n2) -H1n2 // #H1 #H2 #H3 destruct @@ -98,8 +98,8 @@ elim (sor_isfin_ex f1 (⫱f2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ #f #Hf # /4 width=12 by frees_bind_void, sor_inv_sle, sor_tls, ex4_4_intro/ qed. -theorem fsle_flat_sn: âL1,L2,V1,T1,T. â¦L1, V1⦠â â¦L2, T⦠â â¦L1, T1⦠â â¦L2, T⦠â - âI. â¦L1, â{I}V1.T1⦠â â¦L2, Tâ¦. +theorem fsle_flat_sn: âL1,L2,V1,T1,T. â¦L1,V1⦠â â¦L2,T⦠â â¦L1,T1⦠â â¦L2,T⦠â + âI. â¦L1,â{I}V1.T1⦠â â¦L2,Tâ¦. #L1 #L2 #V1 #T1 #T * #n1 #x #f1 #g #Hf1 #Hg #H1n1 #H2n1 #H #I elim (fsle_frees_trans ⦠H ⦠Hg) -H #n2 #n #f2 #Hf2 #H1n2 #H2n2 elim (lveq_inj ⦠H1n1 ⦠H1n2) -H1n2 #H1 #H2 destruct @@ -107,9 +107,9 @@ elim (sor_isfin_ex f1 f2) /2 width=3 by frees_fwd_isfin/ #f #Hf #_ /4 width=12 by frees_flat, sor_inv_sle, sor_tls, ex4_4_intro/ qed. -theorem fsle_bind_eq: âL1,L2. |L1| = |L2| â âV1,V2. â¦L1, V1⦠â â¦L2, V2⦠â - âI2,T1,T2. â¦L1.â§, T1⦠â â¦L2.â{I2}V2, T2⦠â - âp,I1. â¦L1, â{p,I1}V1.T1⦠â â¦L2, â{p,I2}V2.T2â¦. +theorem fsle_bind_eq: âL1,L2. |L1| = |L2| â âV1,V2. â¦L1,V1⦠â â¦L2,V2⦠â + âI2,T1,T2. â¦L1.â§,T1⦠â â¦L2.â{I2}V2,T2⦠â + âp,I1. â¦L1,â{p,I1}V1.T1⦠â â¦L2,â{p,I2}V2.T2â¦. #L1 #L2 #HL #V1 #V2 * #n1 #m1 #f1 #g1 #Hf1 #Hg1 #H1L #Hfg1 #I2 #T1 #T2 * #n2 #m2 #f2 #g2 #Hf2 #Hg2 #H2L #Hfg2 #p #I1 @@ -120,9 +120,9 @@ elim (sor_isfin_ex g1 (⫱g2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ #g #Hg # /4 width=15 by frees_bind_void, frees_bind, monotonic_sle_sor, sle_tl, ex4_4_intro/ qed. -theorem fsle_bind: âL1,L2,V1,V2. â¦L1, V1⦠â â¦L2, V2⦠â - âI1,I2,T1,T2. â¦L1.â{I1}V1, T1⦠â â¦L2.â{I2}V2, T2⦠â - âp. â¦L1, â{p,I1}V1.T1⦠â â¦L2, â{p,I2}V2.T2â¦. +theorem fsle_bind: âL1,L2,V1,V2. â¦L1,V1⦠â â¦L2,V2⦠â + âI1,I2,T1,T2. â¦L1.â{I1}V1,T1⦠â â¦L2.â{I2}V2,T2⦠â + âp. â¦L1,â{p,I1}V1.T1⦠â â¦L2,â{p,I2}V2.T2â¦. #L1 #L2 #V1 #V2 * #n1 #m1 #f1 #g1 #Hf1 #Hg1 #H1L #Hfg1 #I1 #I2 #T1 #T2 * #n2 #m2 #f2 #g2 #Hf2 #Hg2 #H2L #Hfg2 #p @@ -133,7 +133,7 @@ elim (sor_isfin_ex g1 (⫱g2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ #g #Hg # /4 width=15 by frees_bind, monotonic_sle_sor, sle_tl, ex4_4_intro/ qed. -theorem fsle_flat: âL1,L2,V1,V2. â¦L1, V1⦠â â¦L2, V2⦠â - âT1,T2. â¦L1, T1⦠â â¦L2, T2⦠â - âI1,I2. â¦L1, â{I1}V1.T1⦠â â¦L2, â{I2}V2.T2â¦. +theorem fsle_flat: âL1,L2,V1,V2. â¦L1,V1⦠â â¦L2,V2⦠â + âT1,T2. â¦L1,T1⦠â â¦L2,T2⦠â + âI1,I2. â¦L1,â{I1}V1.T1⦠â â¦L2,â{I2}V2.T2â¦. /3 width=1 by fsle_flat_sn, fsle_flat_dx_dx, fsle_flat_dx_sn/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle_length.ma index a811b35be..2bf6a6b0b 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle_length.ma @@ -19,14 +19,14 @@ include "static_2/static/fsle.ma". (* Properties with length for local environments ****************************) -lemma fsle_sort_bi: âL1,L2,s1,s2. |L1| = |L2| â â¦L1, âs1⦠â â¦L2, âs2â¦. +lemma fsle_sort_bi: âL1,L2,s1,s2. |L1| = |L2| â â¦L1,âs1⦠â â¦L2,âs2â¦. /3 width=8 by lveq_length_eq, frees_sort, sle_refl, ex4_4_intro/ qed. -lemma fsle_gref_bi: âL1,L2,l1,l2. |L1| = |L2| â â¦L1, §l1⦠â â¦L2, §l2â¦. +lemma fsle_gref_bi: âL1,L2,l1,l2. |L1| = |L2| â â¦L1,§l1⦠â â¦L2,§l2â¦. /3 width=8 by lveq_length_eq, frees_gref, sle_refl, ex4_4_intro/ qed. -lemma fsle_pair_bi: âK1,K2. |K1| = |K2| â âV1,V2. â¦K1, V1⦠â â¦K2, V2⦠â - âI1,I2. â¦K1.â{I1}V1, #O⦠â â¦K2.â{I2}V2, #Oâ¦. +lemma fsle_pair_bi: âK1,K2. |K1| = |K2| â âV1,V2. â¦K1,V1⦠â â¦K2,V2⦠â + âI1,I2. â¦K1.â{I1}V1,#O⦠â â¦K2.â{I2}V2,#Oâ¦. #K1 #K2 #HK #V1 #V2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #HK12 #Hf12 #I1 #I2 @@ -35,6 +35,6 @@ elim (lveq_inj_length ⦠HK12) // -HK #H1 #H2 destruct qed. lemma fsle_unit_bi: âK1,K2. |K1| = |K2| â - âI1,I2. â¦K1.â¤{I1}, #O⦠â â¦K2.â¤{I2}, #Oâ¦. + âI1,I2. â¦K1.â¤{I1},#O⦠â â¦K2.â¤{I2},#Oâ¦. /3 width=8 by frees_unit, lveq_length_eq, sle_refl, ex4_4_intro/ qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma b/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma index d6424d236..d1dc57ece 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma @@ -22,9 +22,9 @@ include "static_2/static/lsubc_drops.ma". (* Basic_1: was: sc3_arity_csubc *) theorem acr_aaa_csubc_lifts: âRR,RS,RP. gcp RR RS RP â gcr RR RS RP RP â - âG,L1,T,A. â¦G, L1⦠⢠T â A â âb,f,L0. â¬*[b, f] L0 â L1 â + âG,L1,T,A. â¦G,L1⦠⢠T â A â âb,f,L0. â¬*[b,f] L0 â L1 â âT0. â¬*[f] T â T0 â âL2. G ⢠L2 â«[RP] L0 â - â¦G, L2, T0⦠ϵ[RP] ãAã. + â¦G,L2,T0⦠ϵ[RP] ãAã. #RR #RS #RP #H1RP #H2RP #G #L1 #T @(fqup_wf_ind_eq (â) ⦠G L1 T) -G -L1 -T #Z #Y #X #IH #G #L1 * [ * | * [ #p ] * ] [ #s #HG #HL #HT #A #HA #b #f #L0 #HL01 #X0 #H0 #L2 #HL20 destruct -IH @@ -91,11 +91,11 @@ qed. (* Basic_1: was: sc3_arity *) lemma acr_aaa: âRR,RS,RP. gcp RR RS RP â gcr RR RS RP RP â - âG,L,T,A. â¦G, L⦠⢠T â A â â¦G, L, T⦠ϵ[RP] ãAã. + âG,L,T,A. â¦G,L⦠⢠T â A â â¦G,L,T⦠ϵ[RP] ãAã. /3 width=9 by drops_refl, lifts_refl, acr_aaa_csubc_lifts/ qed. lemma gcr_aaa: âRR,RS,RP. gcp RR RS RP â gcr RR RS RP RP â - âG,L,T,A. â¦G, L⦠⢠T â A â RP G L T. + âG,L,T,A. â¦G,L⦠⢠T â A â RP G L T. #RR #RS #RP #H1RP #H2RP #G #L #T #A #HT lapply (acr_gcr ⦠H1RP H2RP A) #HA @(s1 ⦠HA) /2 width=4 by acr_aaa/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma b/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma index 5a5d9ee22..10d8fa4b1 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma @@ -63,7 +63,7 @@ record gcr (RR:relation4 genv lenv term term) (RS:relation term) (RP,C:candidate (* the functional construction for candidates *) definition cfun: candidate â candidate â candidate â λC1,C2,G,K,T. âf,L,W,U. - â¬*[â», f] L â K â â¬*[f] T â U â C1 G L W â C2 G L (âW.U). + â¬*[â»,f] L â K â â¬*[f] T â U â C1 G L W â C2 G L (âW.U). (* the reducibility candidate associated to an atomic arity *) rec definition acr (RP:candidate) (A:aarity) on A: candidate â @@ -155,11 +155,11 @@ lemma acr_gcr: âRR,RS,RP. gcp RR RS RP â gcr RR RS RP RP â qed. lemma acr_abst: âRR,RS,RP. gcp RR RS RP â gcr RR RS RP RP â - âp,G,L,W,T,A,B. â¦G, L, W⦠ϵ[RP] ãBã â ( - âb,f,L0,V0,W0,T0. â¬*[b, f] L0 â L â â¬*[f] W â W0 â â¬*[⫯f] T â T0 â - â¦G, L0, V0⦠ϵ[RP] ãBã â â¦G, L0, W0⦠ϵ[RP] ãBã â â¦G, L0.ââW0.V0, T0⦠ϵ[RP] ãAã + âp,G,L,W,T,A,B. â¦G,L,W⦠ϵ[RP] ãBã â ( + âb,f,L0,V0,W0,T0. â¬*[b,f] L0 â L â â¬*[f] W â W0 â â¬*[⫯f] T â T0 â + â¦G,L0,V0⦠ϵ[RP] ãBã â â¦G,L0,W0⦠ϵ[RP] ãBã â â¦G,L0.ââW0.V0,T0⦠ϵ[RP] ãAã ) â - â¦G, L, â{p}W.T⦠ϵ[RP] ãâ¡B.Aã. + â¦G,L,â{p}W.T⦠ϵ[RP] ãâ¡B.Aã. #RR #RS #RP #H1RP #H2RP #p #G #L #W #T #A #B #HW #HA #f #L0 #V0 #X #HL0 #H #HB lapply (acr_gcr ⦠H1RP H2RP A) #HCA lapply (acr_gcr ⦠H1RP H2RP B) #HCB diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma index 7277086ac..9f8404cd0 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma @@ -20,7 +20,7 @@ include "static_2/static/aaa.ma". inductive lsuba (G:genv): relation lenv â | lsuba_atom: lsuba G (â) (â) | lsuba_bind: âI,L1,L2. lsuba G L1 L2 â lsuba G (L1.â{I}) (L2.â{I}) -| lsuba_beta: âL1,L2,W,V,A. â¦G, L1⦠⢠âW.V â A â â¦G, L2⦠⢠W â A â +| lsuba_beta: âL1,L2,W,V,A. â¦G,L1⦠⢠âW.V â A â â¦G,L2⦠⢠W â A â lsuba G L1 L2 â lsuba G (L1.ââW.V) (L2.âW) . @@ -43,7 +43,7 @@ lemma lsuba_inv_atom1: âG,L2. G ⢠â â«â L2 â L2 = â. fact lsuba_inv_bind1_aux: âG,L1,L2. G ⢠L1 â«â L2 â âI,K1. L1 = K1.â{I} â (ââK2. G ⢠K1 â«â K2 & L2 = K2.â{I}) ⨠- ââK2,W,V,A. â¦G, K1⦠⢠âW.V â A & â¦G, K2⦠⢠W â A & + ââK2,W,V,A. â¦G,K1⦠⢠âW.V â A & â¦G,K2⦠⢠W â A & G ⢠K1 â«â K2 & I = BPair Abbr (âW.V) & L2 = K2.âW. #G #L1 #L2 * -L1 -L2 [ #J #K1 #H destruct @@ -54,7 +54,7 @@ qed-. lemma lsuba_inv_bind1: âI,G,K1,L2. G ⢠K1.â{I} â«â L2 â (ââK2. G ⢠K1 â«â K2 & L2 = K2.â{I}) ⨠- ââK2,W,V,A. â¦G, K1⦠⢠âW.V â A & â¦G, K2⦠⢠W â A & G ⢠K1 â«â K2 & + ââK2,W,V,A. â¦G,K1⦠⢠âW.V â A & â¦G,K2⦠⢠W â A & G ⢠K1 â«â K2 & I = BPair Abbr (âW.V) & L2 = K2.âW. /2 width=3 by lsuba_inv_bind1_aux/ qed-. @@ -71,7 +71,7 @@ lemma lsubc_inv_atom2: âG,L1. G ⢠L1 â«â â â L1 = â. fact lsuba_inv_bind2_aux: âG,L1,L2. G ⢠L1 â«â L2 â âI,K2. L2 = K2.â{I} â (ââK1. G ⢠K1 â«â K2 & L1 = K1.â{I}) ⨠- ââK1,V,W, A. â¦G, K1⦠⢠âW.V â A & â¦G, K2⦠⢠W â A & + ââK1,V,W,A. â¦G,K1⦠⢠âW.V â A & â¦G,K2⦠⢠W â A & G ⢠K1 â«â K2 & I = BPair Abst W & L1 = K1.ââW.V. #G #L1 #L2 * -L1 -L2 [ #J #K2 #H destruct @@ -82,7 +82,7 @@ qed-. lemma lsuba_inv_bind2: âI,G,L1,K2. G ⢠L1 â«â K2.â{I} â (ââK1. G ⢠K1 â«â K2 & L1 = K1.â{I}) ⨠- ââK1,V,W,A. â¦G, K1⦠⢠âW.V â A & â¦G, K2⦠⢠W â A & G ⢠K1 â«â K2 & + ââK1,V,W,A. â¦G,K1⦠⢠âW.V â A & â¦G,K2⦠⢠W â A & G ⢠K1 â«â K2 & I = BPair Abst W & L1 = K1.ââW.V. /2 width=3 by lsuba_inv_bind2_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsuba_aaa.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsuba_aaa.ma index d03aecd11..9a42e6bf9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsuba_aaa.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsuba_aaa.ma @@ -19,8 +19,8 @@ include "static_2/static/lsuba.ma". (* Properties with atomic arity assignment **********************************) -lemma lsuba_aaa_conf: âG,L1,V,A. â¦G, L1⦠⢠V â A â - âL2. G ⢠L1 â«â L2 â â¦G, L2⦠⢠V â A. +lemma lsuba_aaa_conf: âG,L1,V,A. â¦G,L1⦠⢠V â A â + âL2. G ⢠L1 â«â L2 â â¦G,L2⦠⢠V â A. #G #L1 #V #A #H elim H -G -L1 -V -A [ // | #I #G #L1 #V #A #HA #IH #L2 #H @@ -36,8 +36,8 @@ lemma lsuba_aaa_conf: âG,L1,V,A. â¦G, L1⦠⢠V â A â ] qed-. -lemma lsuba_aaa_trans: âG,L2,V,A. â¦G, L2⦠⢠V â A â - âL1. G ⢠L1 â«â L2 â â¦G, L1⦠⢠V â A. +lemma lsuba_aaa_trans: âG,L2,V,A. â¦G,L2⦠⢠V â A â + âL1. G ⢠L1 â«â L2 â â¦G,L1⦠⢠V â A. #G #L2 #V #A #H elim H -G -L2 -V -A [ // | #I #G #L2 #V #A #HA #IH #L1 #H diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma index bfec752e7..86d3a1bb9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma @@ -22,8 +22,8 @@ include "static_2/static/lsuba.ma". (* Note: the premise ðâ¦f⦠cannot be removed *) (* Basic_2A1: includes: lsuba_drop_O1_conf *) lemma lsuba_drops_conf_isuni: âG,L1,L2. G ⢠L1 â«â L2 â - âb,f,K1. ðâ¦f⦠â â¬*[b, f] L1 â K1 â - ââK2. G ⢠K1 â«â K2 & â¬*[b, f] L2 â K2. + âb,f,K1. ðâ¦f⦠â â¬*[b,f] L1 â K1 â + ââK2. G ⢠K1 â«â K2 & â¬*[b,f] L2 â K2. #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K1 #Hf #H @@ -46,8 +46,8 @@ qed-. (* Note: the premise ðâ¦f⦠cannot be removed *) (* Basic_2A1: includes: lsuba_drop_O1_trans *) lemma lsuba_drops_trans_isuni: âG,L1,L2. G ⢠L1 â«â L2 â - âb,f,K2. ðâ¦f⦠â â¬*[b, f] L2 â K2 â - ââK1. G ⢠K1 â«â K2 & â¬*[b, f] L1 â K1. + âb,f,K2. ðâ¦f⦠â â¬*[b,f] L2 â K2 â + ââK1. G ⢠K1 â«â K2 & â¬*[b,f] L1 â K1. #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K2 #Hf #H diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma index d7d1c565a..3e1637e7a 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma @@ -21,7 +21,7 @@ include "static_2/static/gcp_cr.ma". inductive lsubc (RP) (G): relation lenv â | lsubc_atom: lsubc RP G (â) (â) | lsubc_bind: âI,L1,L2. lsubc RP G L1 L2 â lsubc RP G (L1.â{I}) (L2.â{I}) -| lsubc_beta: âL1,L2,V,W,A. â¦G, L1, V⦠ϵ[RP] ãAã â â¦G, L1, W⦠ϵ[RP] ãAã â â¦G, L2⦠⢠W â A â +| lsubc_beta: âL1,L2,V,W,A. â¦G,L1,V⦠ϵ[RP] ãAã â â¦G,L1,W⦠ϵ[RP] ãAã â â¦G,L2⦠⢠W â A â lsubc RP G L1 L2 â lsubc RP G (L1. ââW.V) (L2.âW) . @@ -45,7 +45,7 @@ lemma lsubc_inv_atom1: âRP,G,L2. G ⢠â â«[RP] L2 â L2 = â. fact lsubc_inv_bind1_aux: âRP,G,L1,L2. G ⢠L1 â«[RP] L2 â âI,K1. L1 = K1.â{I} â (ââK2. G ⢠K1 â«[RP] K2 & L2 = K2.â{I}) ⨠- ââK2,V,W,A. â¦G, K1, V⦠ϵ[RP] ãAã & â¦G, K1, W⦠ϵ[RP] ãAã & â¦G, K2⦠⢠W â A & + ââK2,V,W,A. â¦G,K1,V⦠ϵ[RP] ãAã & â¦G,K1,W⦠ϵ[RP] ãAã & â¦G,K2⦠⢠W â A & G ⢠K1 â«[RP] K2 & L2 = K2. âW & I = BPair Abbr (âW.V). #RP #G #L1 #L2 * -L1 -L2 @@ -59,7 +59,7 @@ qed-. (* Basic_1: was: csubc_gen_head_r *) lemma lsubc_inv_bind1: âRP,I,G,K1,L2. G ⢠K1.â{I} â«[RP] L2 â (ââK2. G ⢠K1 â«[RP] K2 & L2 = K2.â{I}) ⨠- ââK2,V,W,A. â¦G, K1, V⦠ϵ[RP] ãAã & â¦G, K1, W⦠ϵ[RP] ãAã & â¦G, K2⦠⢠W â A & + ââK2,V,W,A. â¦G,K1,V⦠ϵ[RP] ãAã & â¦G,K1,W⦠ϵ[RP] ãAã & â¦G,K2⦠⢠W â A & G ⢠K1 â«[RP] K2 & L2 = K2.âW & I = BPair Abbr (âW.V). /2 width=3 by lsubc_inv_bind1_aux/ qed-. @@ -78,7 +78,7 @@ lemma lsubc_inv_atom2: âRP,G,L1. G ⢠L1 â«[RP] â â L1 = â. fact lsubc_inv_bind2_aux: âRP,G,L1,L2. G ⢠L1 â«[RP] L2 â âI,K2. L2 = K2.â{I} â (ââK1. G ⢠K1 â«[RP] K2 & L1 = K1. â{I}) ⨠- ââK1,V,W,A. â¦G, K1, V⦠ϵ[RP] ãAã & â¦G, K1, W⦠ϵ[RP] ãAã & â¦G, K2⦠⢠W â A & + ââK1,V,W,A. â¦G,K1,V⦠ϵ[RP] ãAã & â¦G,K1,W⦠ϵ[RP] ãAã & â¦G,K2⦠⢠W â A & G ⢠K1 â«[RP] K2 & L1 = K1.ââW.V & I = BPair Abst W. #RP #G #L1 #L2 * -L1 -L2 @@ -92,7 +92,7 @@ qed-. (* Basic_1: was just: csubc_gen_head_l *) lemma lsubc_inv_bind2: âRP,I,G,L1,K2. G ⢠L1 â«[RP] K2.â{I} â (ââK1. G ⢠K1 â«[RP] K2 & L1 = K1.â{I}) ⨠- ââK1,V,W,A. â¦G, K1, V⦠ϵ[RP] ãAã & â¦G, K1, W⦠ϵ[RP] ãAã & â¦G, K2⦠⢠W â A & + ââK1,V,W,A. â¦G,K1,V⦠ϵ[RP] ãAã & â¦G,K1,W⦠ϵ[RP] ãAã & â¦G,K2⦠⢠W â A & G ⢠K1 â«[RP] K2 & L1 = K1.ââW.V & I = BPair Abst W. /2 width=3 by lsubc_inv_bind2_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma index 9fe4888bf..c4f586513 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma @@ -23,8 +23,8 @@ include "static_2/static/lsubc.ma". (* Basic_1: includes: csubc_drop_conf_O *) (* Basic_2A1: includes: lsubc_drop_O1_trans *) lemma lsubc_drops_trans_isuni: âRP,G,L1,L2. G ⢠L1 â«[RP] L2 â - âb,f,K2. ðâ¦f⦠â â¬*[b, f] L2 â K2 â - ââK1. â¬*[b, f] L1 â K1 & G ⢠K1 â«[RP] K2. + âb,f,K2. ðâ¦f⦠â â¬*[b,f] L2 â K2 â + ââK1. â¬*[b,f] L1 â K1 & G ⢠K1 â«[RP] K2. #RP #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K2 #Hf #H @@ -48,8 +48,8 @@ qed-. (* Basic_1: includes: csubc_drop_conf_rev *) (* Basic_2A1: includes: drop_lsubc_trans *) lemma drops_lsubc_trans: âRR,RS,RP. gcp RR RS RP â - âb,f,G,L1,K1. â¬*[b, f] L1 â K1 â âK2. G ⢠K1 â«[RP] K2 â - ââL2. G ⢠L1 â«[RP] L2 & â¬*[b, f] L2 â K2. + âb,f,G,L1,K1. â¬*[b,f] L1 â K1 â âK2. G ⢠K1 â«[RP] K2 â + ââL2. G ⢠L1 â«[RP] L2 & â¬*[b,f] L2 â K2. #RR #RS #RP #HR #b #f #G #L1 #K1 #H elim H -f -L1 -K1 [ #f #Hf #Y #H lapply (lsubc_inv_atom1 ⦠H) -H #H destruct /4 width=3 by lsubc_atom, drops_atom, ex2_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma index 3c69f7f52..7056a8ec6 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma @@ -36,7 +36,7 @@ interpretation (* Basic inversion lemmas ***************************************************) -fact lsubf_inv_atom1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â L1 = â â +fact lsubf_inv_atom1_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â L1 = â â f1 â¡ f2 ⧠L2 = â. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 [ /2 width=1 by conj/ @@ -47,12 +47,12 @@ fact lsubf_inv_atom1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_atom1: âf1,f2,L2. â¦â, f1⦠â«ð * â¦L2, f2⦠â f1 â¡ f2 ⧠L2 = â. +lemma lsubf_inv_atom1: âf1,f2,L2. â¦â,f1⦠â«ð * â¦L2,f2⦠â f1 â¡ f2 ⧠L2 = â. /2 width=3 by lsubf_inv_atom1_aux/ qed-. -fact lsubf_inv_push1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +fact lsubf_inv_push1_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âg1,I1,K1. f1 = ⫯g1 â L1 = K1.â{I1} â - ââg2,I2,K2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = ⫯g2 & L2 = K2.â{I2}. + ââg2,I2,K2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = ⫯g2 & L2 = K2.â{I2}. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 [ #f1 #f2 #_ #g1 #J1 #K1 #_ #H destruct | #f1 #f2 #I1 #I2 #L1 #L2 #H12 #g1 #J1 #K1 #H1 #H2 destruct @@ -63,17 +63,17 @@ fact lsubf_inv_push1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_push1: âg1,f2,I1,K1,L2. â¦K1.â{I1}, ⫯g1⦠â«ð * â¦L2, f2⦠â - ââg2,I2,K2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = ⫯g2 & L2 = K2.â{I2}. +lemma lsubf_inv_push1: âg1,f2,I1,K1,L2. â¦K1.â{I1},⫯g1⦠â«ð * â¦L2,f2⦠â + ââg2,I2,K2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = ⫯g2 & L2 = K2.â{I2}. /2 width=6 by lsubf_inv_push1_aux/ qed-. -fact lsubf_inv_pair1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +fact lsubf_inv_pair1_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âg1,I,K1,X. f1 = âg1 â L1 = K1.â{I}X â - â¨â¨ ââg2,K2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = âg2 & L2 = K2.â{I}X - | ââg,g0,g2,K2,W,V. â¦K1, g0⦠â«ð * â¦K2, g2⦠& + â¨â¨ ââg2,K2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = âg2 & L2 = K2.â{I}X + | ââg,g0,g2,K2,W,V. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f2 = âg2 & I = Abbr & X = âW.V & L2 = K2.âW - | ââg,g0,g2,J,K2. â¦K1, g0⦠â«ð * â¦K2, g2⦠& + | ââg,g0,g2,J,K2. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦X⦠â g & g0 â g â g1 & f2 = âg2 & L2 = K2.â¤{J}. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 @@ -88,19 +88,19 @@ fact lsubf_inv_pair1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_pair1: âg1,f2,I,K1,L2,X. â¦K1.â{I}X, âg1⦠â«ð * â¦L2, f2⦠â - â¨â¨ ââg2,K2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = âg2 & L2 = K2.â{I}X - | ââg,g0,g2,K2,W,V. â¦K1, g0⦠â«ð * â¦K2, g2⦠& +lemma lsubf_inv_pair1: âg1,f2,I,K1,L2,X. â¦K1.â{I}X,âg1⦠â«ð * â¦L2,f2⦠â + â¨â¨ ââg2,K2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = âg2 & L2 = K2.â{I}X + | ââg,g0,g2,K2,W,V. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f2 = âg2 & I = Abbr & X = âW.V & L2 = K2.âW - | ââg,g0,g2,J,K2. â¦K1, g0⦠â«ð * â¦K2, g2⦠& + | ââg,g0,g2,J,K2. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦X⦠â g & g0 â g â g1 & f2 = âg2 & L2 = K2.â¤{J}. /2 width=5 by lsubf_inv_pair1_aux/ qed-. -fact lsubf_inv_unit1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +fact lsubf_inv_unit1_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âg1,I,K1. f1 = âg1 â L1 = K1.â¤{I} â - ââg2,K2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = âg2 & L2 = K2.â¤{I}. + ââg2,K2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = âg2 & L2 = K2.â¤{I}. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 [ #f1 #f2 #_ #g1 #J #K1 #_ #H destruct | #f1 #f2 #I1 #I2 #L1 #L2 #H12 #g1 #J #K1 #H elim (discr_push_next ⦠H) @@ -111,11 +111,11 @@ fact lsubf_inv_unit1_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_unit1: âg1,f2,I,K1,L2. â¦K1.â¤{I}, âg1⦠â«ð * â¦L2, f2⦠â - ââg2,K2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = âg2 & L2 = K2.â¤{I}. +lemma lsubf_inv_unit1: âg1,f2,I,K1,L2. â¦K1.â¤{I},âg1⦠â«ð * â¦L2,f2⦠â + ââg2,K2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = âg2 & L2 = K2.â¤{I}. /2 width=5 by lsubf_inv_unit1_aux/ qed-. -fact lsubf_inv_atom2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â L2 = â â +fact lsubf_inv_atom2_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â L2 = â â f1 â¡ f2 ⧠L1 = â. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 [ /2 width=1 by conj/ @@ -126,12 +126,12 @@ fact lsubf_inv_atom2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_atom2: âf1,f2,L1. â¦L1, f1⦠â«ð * â¦â, f2⦠â f1 â¡ f2 ⧠L1 = â. +lemma lsubf_inv_atom2: âf1,f2,L1. â¦L1,f1⦠â«ð * â¦â,f2⦠â f1 â¡ f2 ⧠L1 = â. /2 width=3 by lsubf_inv_atom2_aux/ qed-. -fact lsubf_inv_push2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +fact lsubf_inv_push2_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âg2,I2,K2. f2 = ⫯g2 â L2 = K2.â{I2} â - ââg1,I1,K1. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f1 = ⫯g1 & L1 = K1.â{I1}. + ââg1,I1,K1. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f1 = ⫯g1 & L1 = K1.â{I1}. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 [ #f1 #f2 #_ #g2 #J2 #K2 #_ #H destruct | #f1 #f2 #I1 #I2 #L1 #L2 #H12 #g2 #J2 #K2 #H1 #H2 destruct @@ -142,14 +142,14 @@ fact lsubf_inv_push2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_push2: âf1,g2,I2,L1,K2. â¦L1, f1⦠â«ð * â¦K2.â{I2}, ⫯g2⦠â - ââg1,I1,K1. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f1 = ⫯g1 & L1 = K1.â{I1}. +lemma lsubf_inv_push2: âf1,g2,I2,L1,K2. â¦L1,f1⦠â«ð * â¦K2.â{I2},⫯g2⦠â + ââg1,I1,K1. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f1 = ⫯g1 & L1 = K1.â{I1}. /2 width=6 by lsubf_inv_push2_aux/ qed-. -fact lsubf_inv_pair2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +fact lsubf_inv_pair2_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âg2,I,K2,W. f2 = âg2 â L2 = K2.â{I}W â - â¨â¨ ââg1,K1. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f1 = âg1 & L1 = K1.â{I}W - | ââg,g0,g1,K1,V. â¦K1, g0⦠â«ð * â¦K2, g2⦠& + â¨â¨ ââg1,K1. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f1 = âg1 & L1 = K1.â{I}W + | ââg,g0,g1,K1,V. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f1 = âg1 & I = Abst & L1 = K1.ââW.V. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 @@ -163,17 +163,17 @@ fact lsubf_inv_pair2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_pair2: âf1,g2,I,L1,K2,W. â¦L1, f1⦠â«ð * â¦K2.â{I}W, âg2⦠â - â¨â¨ ââg1,K1. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f1 = âg1 & L1 = K1.â{I}W - | ââg,g0,g1,K1,V. â¦K1, g0⦠â«ð * â¦K2, g2⦠& +lemma lsubf_inv_pair2: âf1,g2,I,L1,K2,W. â¦L1,f1⦠â«ð * â¦K2.â{I}W,âg2⦠â + â¨â¨ ââg1,K1. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f1 = âg1 & L1 = K1.â{I}W + | ââg,g0,g1,K1,V. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f1 = âg1 & I = Abst & L1 = K1.ââW.V. /2 width=5 by lsubf_inv_pair2_aux/ qed-. -fact lsubf_inv_unit2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +fact lsubf_inv_unit2_aux: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âg2,I,K2. f2 = âg2 â L2 = K2.â¤{I} â - â¨â¨ ââg1,K1. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f1 = âg1 & L1 = K1.â¤{I} - | ââg,g0,g1,J,K1,V. â¦K1, g0⦠â«ð * â¦K2, g2⦠& + â¨â¨ ââg1,K1. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f1 = âg1 & L1 = K1.â¤{I} + | ââg,g0,g1,J,K1,V. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f1 = âg1 & L1 = K1.â{J}V. #f1 #f2 #L1 #L2 * -f1 -f2 -L1 -L2 @@ -187,27 +187,27 @@ fact lsubf_inv_unit2_aux: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_inv_unit2: âf1,g2,I,L1,K2. â¦L1, f1⦠â«ð * â¦K2.â¤{I}, âg2⦠â - â¨â¨ ââg1,K1. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f1 = âg1 & L1 = K1.â¤{I} - | ââg,g0,g1,J,K1,V. â¦K1, g0⦠â«ð * â¦K2, g2⦠& +lemma lsubf_inv_unit2: âf1,g2,I,L1,K2. â¦L1,f1⦠â«ð * â¦K2.â¤{I},âg2⦠â + â¨â¨ ââg1,K1. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f1 = âg1 & L1 = K1.â¤{I} + | ââg,g0,g1,J,K1,V. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f1 = âg1 & L1 = K1.â{J}V. /2 width=5 by lsubf_inv_unit2_aux/ qed-. (* Advanced inversion lemmas ************************************************) -lemma lsubf_inv_atom: âf1,f2. â¦â, f1⦠â«ð * â¦â, f2⦠â f1 â¡ f2. +lemma lsubf_inv_atom: âf1,f2. â¦â,f1⦠â«ð * â¦â,f2⦠â f1 â¡ f2. #f1 #f2 #H elim (lsubf_inv_atom1 ⦠H) -H // qed-. -lemma lsubf_inv_push_sn: âg1,f2,I1,I2,K1,K2. â¦K1.â{I1}, ⫯g1⦠â«ð * â¦K2.â{I2}, f2⦠â - ââg2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = ⫯g2. +lemma lsubf_inv_push_sn: âg1,f2,I1,I2,K1,K2. â¦K1.â{I1},⫯g1⦠â«ð * â¦K2.â{I2},f2⦠â + ââg2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = ⫯g2. #g1 #f2 #I #K1 #K2 #X #H elim (lsubf_inv_push1 ⦠H) -H #g2 #I #Y #H0 #H2 #H destruct /2 width=3 by ex2_intro/ qed-. -lemma lsubf_inv_bind_sn: âg1,f2,I,K1,K2. â¦K1.â{I}, âg1⦠â«ð * â¦K2.â{I}, f2⦠â - ââg2. â¦K1, g1⦠â«ð * â¦K2, g2⦠& f2 = âg2. +lemma lsubf_inv_bind_sn: âg1,f2,I,K1,K2. â¦K1.â{I},âg1⦠â«ð * â¦K2.â{I},f2⦠â + ââg2. â¦K1,g1⦠â«ð * â¦K2,g2⦠& f2 = âg2. #g1 #f2 * #I [2: #X ] #K1 #K2 #H [ elim (lsubf_inv_pair1 ⦠H) -H * [ #z2 #Y2 #H2 #H #H0 destruct /2 width=3 by ex2_intro/ @@ -219,8 +219,8 @@ lemma lsubf_inv_bind_sn: âg1,f2,I,K1,K2. â¦K1.â{I}, âg1⦠â«ð * â¦K2 ] qed-. -lemma lsubf_inv_beta_sn: âg1,f2,K1,K2,V,W. â¦K1.ââW.V, âg1⦠â«ð * â¦K2.âW, f2⦠â - ââg,g0,g2. â¦K1, g0⦠â«ð * â¦K2, g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f2 = âg2. +lemma lsubf_inv_beta_sn: âg1,f2,K1,K2,V,W. â¦K1.ââW.V,âg1⦠â«ð * â¦K2.âW,f2⦠â + ââg,g0,g2. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f2 = âg2. #g1 #f2 #K1 #K2 #V #W #H elim (lsubf_inv_pair1 ⦠H) -H * [ #z2 #Y2 #_ #_ #H destruct | #z #z0 #z2 #Y2 #X0 #X #H02 #Hz #Hg1 #H #_ #H0 #H1 destruct @@ -229,8 +229,8 @@ lemma lsubf_inv_beta_sn: âg1,f2,K1,K2,V,W. â¦K1.ââW.V, âg1⦠â«ð * ] qed-. -lemma lsubf_inv_unit_sn: âg1,f2,I,J,K1,K2,V. â¦K1.â{I}V, âg1⦠â«ð * â¦K2.â¤{J}, f2⦠â - ââg,g0,g2. â¦K1, g0⦠â«ð * â¦K2, g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f2 = âg2. +lemma lsubf_inv_unit_sn: âg1,f2,I,J,K1,K2,V. â¦K1.â{I}V,âg1⦠â«ð * â¦K2.â¤{J},f2⦠â + ââg,g0,g2. â¦K1,g0⦠â«ð * â¦K2,g2⦠& K1 ⢠ð *â¦V⦠â g & g0 â g â g1 & f2 = âg2. #g1 #f2 #I #J #K1 #K2 #V #H elim (lsubf_inv_pair1 ⦠H) -H * [ #z2 #Y2 #_ #_ #H destruct | #z #z0 #z2 #Y2 #X0 #X #_ #_ #_ #_ #_ #_ #H destruct @@ -250,14 +250,14 @@ qed-. (* Basic forward lemmas *****************************************************) lemma lsubf_fwd_bind_tl: âf1,f2,I,L1,L2. - â¦L1.â{I}, f1⦠â«ð * â¦L2.â{I}, f2⦠â â¦L1, ⫱f1⦠â«ð * â¦L2, ⫱f2â¦. + â¦L1.â{I},f1⦠â«ð * â¦L2.â{I},f2⦠â â¦L1,⫱f1⦠â«ð * â¦L2,⫱f2â¦. #f1 #f2 #I #L1 #L2 #H elim (pn_split f1) * #g1 #H0 destruct [ elim (lsubf_inv_push_sn ⦠H) | elim (lsubf_inv_bind_sn ⦠H) ] -H #g2 #H12 #H destruct // qed-. -lemma lsubf_fwd_isid_dx: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ðâ¦f2⦠â ðâ¦f1â¦. +lemma lsubf_fwd_isid_dx: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â ðâ¦f2⦠â ðâ¦f1â¦. #f1 #f2 #L1 #L2 #H elim H -f1 -f2 -L1 -L2 [ /2 width=3 by isid_eq_repl_fwd/ | /4 width=3 by isid_inv_push, isid_push/ @@ -267,7 +267,7 @@ lemma lsubf_fwd_isid_dx: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_fwd_isid_sn: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ðâ¦f1⦠â ðâ¦f2â¦. +lemma lsubf_fwd_isid_sn: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â ðâ¦f1⦠â ðâ¦f2â¦. #f1 #f2 #L1 #L2 #H elim H -f1 -f2 -L1 -L2 [ /2 width=3 by isid_eq_repl_back/ | /4 width=3 by isid_inv_push, isid_push/ @@ -277,22 +277,22 @@ lemma lsubf_fwd_isid_sn: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â ] qed-. -lemma lsubf_fwd_sle: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â f2 â f1. +lemma lsubf_fwd_sle: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â f2 â f1. #f1 #f2 #L1 #L2 #H elim H -f1 -f2 -L1 -L2 /3 width=5 by sor_inv_sle_sn_trans, sle_next, sle_push, sle_refl_eq, eq_sym/ qed-. (* Basic properties *********************************************************) -axiom lsubf_eq_repl_back1: âf2,L1,L2. eq_repl_back ⦠(λf1. â¦L1, f1⦠â«ð * â¦L2, f2â¦). +axiom lsubf_eq_repl_back1: âf2,L1,L2. eq_repl_back ⦠(λf1. â¦L1,f1⦠â«ð * â¦L2,f2â¦). -lemma lsubf_eq_repl_fwd1: âf2,L1,L2. eq_repl_fwd ⦠(λf1. â¦L1, f1⦠â«ð * â¦L2, f2â¦). +lemma lsubf_eq_repl_fwd1: âf2,L1,L2. eq_repl_fwd ⦠(λf1. â¦L1,f1⦠â«ð * â¦L2,f2â¦). #f2 #L1 #L2 @eq_repl_sym /2 width=3 by lsubf_eq_repl_back1/ qed-. -axiom lsubf_eq_repl_back2: âf1,L1,L2. eq_repl_back ⦠(λf2. â¦L1, f1⦠â«ð * â¦L2, f2â¦). +axiom lsubf_eq_repl_back2: âf1,L1,L2. eq_repl_back ⦠(λf2. â¦L1,f1⦠â«ð * â¦L2,f2â¦). -lemma lsubf_eq_repl_fwd2: âf1,L1,L2. eq_repl_fwd ⦠(λf2. â¦L1, f1⦠â«ð * â¦L2, f2â¦). +lemma lsubf_eq_repl_fwd2: âf1,L1,L2. eq_repl_fwd ⦠(λf2. â¦L1,f1⦠â«ð * â¦L2,f2â¦). #f1 #L1 #L2 @eq_repl_sym /2 width=3 by lsubf_eq_repl_back2/ qed-. @@ -302,19 +302,19 @@ lemma lsubf_refl: bi_reflexive ⦠lsubf. /2 width=1 by lsubf_push, lsubf_bind/ qed. -lemma lsubf_refl_eq: âf1,f2,L. f1 â¡ f2 â â¦L, f1⦠â«ð * â¦L, f2â¦. +lemma lsubf_refl_eq: âf1,f2,L. f1 â¡ f2 â â¦L,f1⦠â«ð * â¦L,f2â¦. /2 width=3 by lsubf_eq_repl_back2/ qed. -lemma lsubf_bind_tl_dx: âg1,f2,I,L1,L2. â¦L1, g1⦠â«ð * â¦L2, ⫱f2⦠â - ââf1. â¦L1.â{I}, f1⦠â«ð * â¦L2.â{I}, f2⦠& g1 = ⫱f1. +lemma lsubf_bind_tl_dx: âg1,f2,I,L1,L2. â¦L1,g1⦠â«ð * â¦L2,⫱f2⦠â + ââf1. â¦L1.â{I},f1⦠â«ð * â¦L2.â{I},f2⦠& g1 = ⫱f1. #g1 #f2 #I #L1 #L2 #H elim (pn_split f2) * #g2 #H2 destruct @ex2_intro [1,2,4,5: /2 width=2 by lsubf_push, lsubf_bind/ ] // (**) (* constructor needed *) qed-. lemma lsubf_beta_tl_dx: âf,f0,g1,L1,V. L1 ⢠ð *â¦V⦠â f â f0 â f â g1 â - âf2,L2,W. â¦L1, f0⦠â«ð * â¦L2, ⫱f2⦠â - ââf1. â¦L1.ââW.V, f1⦠â«ð * â¦L2.âW, f2⦠& ⫱f1 â g1. + âf2,L2,W. â¦L1,f0⦠â«ð * â¦L2,⫱f2⦠â + ââf1. â¦L1.ââW.V,f1⦠â«ð * â¦L2.âW,f2⦠& ⫱f1 â g1. #f #f0 #g1 #L1 #V #Hf #Hg1 #f2 elim (pn_split f2) * #x2 #H2 #L2 #W #HL12 destruct [ /3 width=4 by lsubf_push, sor_inv_sle_sn, ex2_intro/ @@ -323,9 +323,9 @@ elim (pn_split f2) * #x2 #H2 #L2 #W #HL12 destruct qed-. (* Note: this might be moved *) -lemma lsubf_inv_sor_dx: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +lemma lsubf_inv_sor_dx: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â âf2l,f2r. f2lâf2r â f2 â - ââf1l,f1r. â¦L1, f1l⦠â«ð * â¦L2, f2l⦠& â¦L1, f1r⦠â«ð * â¦L2, f2r⦠& f1lâf1r â f1. + ââf1l,f1r. â¦L1,f1l⦠â«ð * â¦L2,f2l⦠& â¦L1,f1r⦠â«ð * â¦L2,f2r⦠& f1lâf1r â f1. #f1 #f2 #L1 #L2 #H elim H -f1 -f2 -L1 -L2 [ /3 width=7 by sor_eq_repl_fwd3, ex3_2_intro/ | #g1 #g2 #I1 #I2 #L1 #L2 #_ #IH #f2l #f2r #H diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubf_frees.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubf_frees.ma index 7a39036b5..713f79c7d 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubf_frees.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubf_frees.ma @@ -19,7 +19,7 @@ include "static_2/static/lsubf.ma". (* Properties with context-sensitive free variables *************************) lemma lsubf_frees_trans: âf2,L2,T. L2 ⢠ð *â¦T⦠â f2 â - âf1,L1. â¦L1, f1⦠â«ð * â¦L2, f2⦠â L1 ⢠ð *â¦T⦠â f1. + âf1,L1. â¦L1,f1⦠â«ð * â¦L2,f2⦠â L1 ⢠ð *â¦T⦠â f1. #f2 #L2 #T #H elim H -f2 -L2 -T [ /3 width=5 by lsubf_fwd_isid_dx, frees_sort/ | #f2 #i #Hf2 #g1 #Y1 #H diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubf.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubf.ma index 79f33abda..bed259cf5 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubf.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubf.ma @@ -19,9 +19,9 @@ include "static_2/static/lsubf.ma". (* Main properties **********************************************************) -theorem lsubf_sor: âK,L,g1,f1. â¦K, g1⦠â«ð * â¦L, f1⦠â - âg2,f2. â¦K, g2⦠â«ð * â¦L, f2⦠â - âg. g1 â g2 â g â âf. f1 â f2 â f â â¦K, g⦠â«ð * â¦L, fâ¦. +theorem lsubf_sor: âK,L,g1,f1. â¦K,g1⦠â«ð * â¦L,f1⦠â + âg2,f2. â¦K,g2⦠â«ð * â¦L,f2⦠â + âg. g1 â g2 â g â âf. f1 â f2 â f â â¦K,g⦠â«ð * â¦L,fâ¦. #K elim K -K [ #L #g1 #f1 #H1 #g2 #f2 #H2 #g #Hg #f #Hf elim (lsubf_inv_atom1 ⦠H1) -H1 #H1 #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubr.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubr.ma index a021ca5a4..0b0124fee 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubr.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubf_lsubr.ma @@ -19,7 +19,7 @@ include "static_2/static/lsubf_lsubf.ma". (* Forward lemmas with restricted refinement for local environments *********) -lemma lsubf_fwd_lsubr_isdiv: âf1,f2,L1,L2. â¦L1, f1⦠â«ð * â¦L2, f2⦠â +lemma lsubf_fwd_lsubr_isdiv: âf1,f2,L1,L2. â¦L1,f1⦠â«ð * â¦L2,f2⦠â ðâ¦f1⦠â ðâ¦f2⦠â L1 â« L2. #f1 #f2 #L1 #L2 #H elim H -f1 -f2 -L1 -L2 /4 width=3 by lsubr_bind, isdiv_inv_next/ @@ -33,7 +33,7 @@ qed-. (* Properties with restricted refinement for local environments *************) lemma lsubr_lsubf_isid: âL1,L2. L1 â« L2 â - âf1,f2. ðâ¦f1⦠â ðâ¦f2⦠â â¦L1, f1⦠â«ð * â¦L2, f2â¦. + âf1,f2. ðâ¦f1⦠â ðâ¦f2⦠â â¦L1,f1⦠â«ð * â¦L2,f2â¦. #L1 #L2 #H elim H -L1 -L2 [ /3 width=1 by lsubf_atom, isid_inv_eq_repl/ | #I #L1 #L2 | #L1 #L2 #V #W | #I1 #I2 #L1 #L2 #V @@ -45,7 +45,7 @@ elim (isid_inv_gen ⦠Hf2) -Hf2 #g2 #Hg2 #H destruct qed. lemma lsubr_lsubf: âf2,L2,T. L2 ⢠ð *â¦T⦠â f2 â âL1. L1 â« L2 â - âf1. L1 ⢠ð *â¦T⦠â f1 â â¦L1, f1⦠â«ð * â¦L2, f2â¦. + âf1. L1 ⢠ð *â¦T⦠â f1 â â¦L1,f1⦠â«ð * â¦L2,f2â¦. #f2 #L2 #T #H elim H -f2 -L2 -T [ #f2 #L2 #s #Hf2 #L1 #HL12 #f1 #Hf1 lapply (frees_inv_sort ⦠Hf1) -Hf1 /2 width=1 by lsubr_lsubf_isid/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma index 9257f34dc..4009cdd29 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma @@ -21,10 +21,10 @@ include "static_2/static/lsubr.ma". (* Basic_2A1: includes: lsubr_fwd_drop2_pair *) lemma lsubr_fwd_drops2_bind: âL1,L2. L1 â« L2 â - âb,f,I,K2. ðâ¦f⦠â â¬*[b, f] L2 â K2.â{I} â - â¨â¨ ââK1. K1 â« K2 & â¬*[b, f] L1 â K1.â{I} - | ââK1,W,V. K1 â« K2 & â¬*[b, f] L1 â K1.ââW.V & I = BPair Abst W - | ââJ1,J2,K1,V. K1 â« K2 & â¬*[b, f] L1 â K1.â{J1}V & I = BUnit J2. + âb,f,I,K2. ðâ¦f⦠â â¬*[b,f] L2 â K2.â{I} â + â¨â¨ ââK1. K1 â« K2 & â¬*[b,f] L1 â K1.â{I} + | ââK1,W,V. K1 â« K2 & â¬*[b,f] L1 â K1.ââW.V & I = BPair Abst W + | ââJ1,J2,K1,V. K1 â« K2 & â¬*[b,f] L1 â K1.â{J1}V & I = BUnit J2. #L1 #L2 #H elim H -L1 -L2 [ #b #f #I #K2 #_ #H elim (drops_inv_atom1 ⦠H) -H #H destruct @@ -42,8 +42,8 @@ qed-. (* Basic_2A1: includes: lsubr_fwd_drop2_abbr *) lemma lsubr_fwd_drops2_abbr: âL1,L2. L1 â« L2 â - âb,f,K2,V. ðâ¦f⦠â â¬*[b, f] L2 â K2.âV â - ââK1. K1 â« K2 & â¬*[b, f] L1 â K1.âV. + âb,f,K2,V. ðâ¦f⦠â â¬*[b,f] L2 â K2.âV â + ââK1. K1 â« K2 & â¬*[b,f] L1 â K1.âV. #L1 #L2 #HL12 #b #f #K2 #V #Hf #HLK2 elim (lsubr_fwd_drops2_bind ⦠HL12 ⦠Hf HLK2) -L2 -Hf // * [ #K1 #W #V #_ #_ #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma index 6cb56dcaf..8388e6875 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma @@ -79,7 +79,7 @@ lemma tdeq_rex_conf (R): s_r_confluent1 ⦠cdeq (rex R). qed-. lemma tdeq_rex_div (R): âT1,T2. T1 â T2 â - âL1,L2. L1 ⪤[R, T2] L2 â L1 ⪤[R, T1] L2. + âL1,L2. L1 ⪤[R,T2] L2 â L1 ⪤[R,T1] L2. /3 width=5 by tdeq_rex_conf, tdeq_sym/ qed-. lemma tdeq_rdeq_conf: s_r_confluent1 ⦠cdeq rdeq. @@ -100,7 +100,7 @@ lemma rdeq_pair: âI,L1,L2,V1,V2. L1 â[V1] L2 â V1 â V2 â L1.â{I}V1 â[#0] L2.â{I}V2. /2 width=1 by rex_pair/ qed. (* -lemma rdeq_unit: âf,I,L1,L2. ðâ¦f⦠â L1 ⪤[cdeq_ext, cfull, f] L2 â +lemma rdeq_unit: âf,I,L1,L2. ðâ¦f⦠â L1 ⪤[cdeq_ext,cfull,f] L2 â L1.â¤{I} â[#0] L2.â¤{I}. /2 width=3 by rex_unit/ qed. *) @@ -130,7 +130,7 @@ lemma rdeq_inv_zero: âY1,Y2. Y1 â[#0] Y2 â â¨â¨ â§â§ Y1 = â & Y2 = â | ââI,L1,L2,V1,V2. L1 â[V1] L2 & V1 â V2 & Y1 = L1.â{I}V1 & Y2 = L2.â{I}V2 - | ââf,I,L1,L2. ðâ¦f⦠& L1 ⪤[cdeq_ext h o, cfull, f] L2 & + | ââf,I,L1,L2. ðâ¦f⦠& L1 ⪤[cdeq_ext h o,cfull,f] L2 & Y1 = L1.â¤{I} & Y2 = L2.â¤{I}. #Y1 #Y2 #H elim (rex_inv_zero ⦠H) -H * /3 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex4_4_intro, conj/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma index f2ea3b894..6246d21a2 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma @@ -32,7 +32,7 @@ lemma rdeq_inv_lifts_dx: f_dropable_dx cdeq. /2 width=5 by rex_dropable_dx/ qed-. lemma rdeq_inv_lifts_bi: âL1,L2,U. L1 â[U] L2 â âb,f. ðâ¦f⦠â - âK1,K2. â¬*[b, f] L1 â K1 â â¬*[b, f] L2 â K2 â + âK1,K2. â¬*[b,f] L1 â K1 â â¬*[b,f] L2 â K2 â âT. â¬*[f] T â U â K1 â[T] K2. /2 width=10 by rex_inv_lifts_bi/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma index 66fd1b753..bbd8a3821 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma @@ -21,9 +21,9 @@ include "static_2/static/rdeq_rdeq.ma". (* Properties with extended structural successor for closures ***************) -lemma fqu_tdeq_conf: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â[b] â¦G2, L2, T1⦠â +lemma fqu_tdeq_conf: âb,G1,G2,L1,L2,U1,T1. â¦G1,L1,U1⦠â[b] â¦G2,L2,T1⦠â âU2. U1 â U2 â - ââL,T2. â¦G1, L1, U2⦠â[b] â¦G2, L, T2⦠& L2 â[T1] L & T1 â T2. + ââL,T2. â¦G1,L1,U2⦠â[b] â¦G2,L,T2⦠& L2 â[T1] L & T1 â T2. #b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -G1 -G2 -L1 -L2 -U1 -T1 [ #I #G #L #W #X #H >(tdeq_inv_lref1 ⦠H) -X /2 width=5 by fqu_lref_O, ex3_2_intro/ @@ -45,18 +45,18 @@ lemma fqu_tdeq_conf: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â[b] â¦G2, L2, ] qed-. -lemma tdeq_fqu_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â[b] â¦G2, L2, T1⦠â +lemma tdeq_fqu_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1,L1,U1⦠â[b] â¦G2,L2,T1⦠â âU2. U2 â U1 â - ââL,T2. â¦G1, L1, U2⦠â[b] â¦G2, L, T2⦠& T2 â T1 & L â[T1] L2. + ââL,T2. â¦G1,L1,U2⦠â[b] â¦G2,L,T2⦠& T2 â T1 & L â[T1] L2. #b #G1 #G2 #L1 #L2 #U1 #T1 #H12 #U2 #HU21 elim (fqu_tdeq_conf ⦠H12 U2) -H12 /3 width=5 by rdeq_sym, tdeq_sym, ex3_2_intro/ qed-. (* Basic_2A1: uses: lleq_fqu_trans *) -lemma rdeq_fqu_trans: âb,G1,G2,L2,K2,T,U. â¦G1, L2, T⦠â[b] â¦G2, K2, U⦠â +lemma rdeq_fqu_trans: âb,G1,G2,L2,K2,T,U. â¦G1,L2,T⦠â[b] â¦G2,K2,U⦠â âL1. L1 â[T] L2 â - ââK1,U0. â¦G1, L1, T⦠â[b] â¦G2, K1, U0⦠& U0 â U & K1 â[U] K2. + ââK1,U0. â¦G1,L1,T⦠â[b] â¦G2,K1,U0⦠& U0 â U & K1 â[U] K2. #b #G1 #G2 #L2 #K2 #T #U #H elim H -G1 -G2 -L2 -K2 -T -U [ #I #G #L2 #V2 #L1 #H elim (rdeq_inv_zero_pair_dx ⦠H) -H #K1 #V1 #HV1 #HV12 #H destruct @@ -80,9 +80,9 @@ qed-. (* Properties with optional structural successor for closures ***************) -lemma tdeq_fquq_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â⸮[b] â¦G2, L2, T1⦠â +lemma tdeq_fquq_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1,L1,U1⦠â⸮[b] â¦G2,L2,T1⦠â âU2. U2 â U1 â - ââL,T2. â¦G1, L1, U2⦠â⸮[b] â¦G2, L, T2⦠& T2 â T1 & L â[T1] L2. + ââL,T2. â¦G1,L1,U2⦠â⸮[b] â¦G2,L,T2⦠& T2 â T1 & L â[T1] L2. #b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -H [ #H #U2 #HU21 elim (tdeq_fqu_trans ⦠H ⦠HU21) -U1 /3 width=5 by fqu_fquq, ex3_2_intro/ @@ -91,9 +91,9 @@ lemma tdeq_fquq_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â⸮[b] â¦G2, qed-. (* Basic_2A1: was just: lleq_fquq_trans *) -lemma rdeq_fquq_trans: âb,G1,G2,L2,K2,T,U. â¦G1, L2, T⦠â⸮[b] â¦G2, K2, U⦠â +lemma rdeq_fquq_trans: âb,G1,G2,L2,K2,T,U. â¦G1,L2,T⦠â⸮[b] â¦G2,K2,U⦠â âL1. L1 â[T] L2 â - ââK1,U0. â¦G1, L1, T⦠â⸮[b] â¦G2, K1, U0⦠& U0 â U & K1 â[U] K2. + ââK1,U0. â¦G1,L1,T⦠â⸮[b] â¦G2,K1,U0⦠& U0 â U & K1 â[U] K2. #b #G1 #G2 #L2 #K2 #T #U #H elim H -H [ #H #L1 #HL12 elim (rdeq_fqu_trans ⦠H ⦠HL12) -L2 /3 width=5 by fqu_fquq, ex3_2_intro/ | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/ @@ -103,9 +103,9 @@ qed-. (* Properties with plus-iterated structural successor for closures **********) (* Basic_2A1: was just: lleq_fqup_trans *) -lemma rdeq_fqup_trans: âb,G1,G2,L2,K2,T,U. â¦G1, L2, T⦠â+[b] â¦G2, K2, U⦠â +lemma rdeq_fqup_trans: âb,G1,G2,L2,K2,T,U. â¦G1,L2,T⦠â+[b] â¦G2,K2,U⦠â âL1. L1 â[T] L2 â - ââK1,U0. â¦G1, L1, T⦠â+[b] â¦G2, K1, U0⦠& U0 â U & K1 â[U] K2. + ââK1,U0. â¦G1,L1,T⦠â+[b] â¦G2,K1,U0⦠& U0 â U & K1 â[U] K2. #b #G1 #G2 #L2 #K2 #T #U #H @(fqup_ind ⦠H) -G2 -K2 -U [ #G2 #K2 #U #HTU #L1 #HL12 elim (rdeq_fqu_trans ⦠HTU ⦠HL12) -L2 /3 width=5 by fqu_fqup, ex3_2_intro/ @@ -118,9 +118,9 @@ lemma rdeq_fqup_trans: âb,G1,G2,L2,K2,T,U. â¦G1, L2, T⦠â+[b] â¦G2, K2, ] qed-. -lemma tdeq_fqup_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â+[b] â¦G2, L2, T1⦠â +lemma tdeq_fqup_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1,L1,U1⦠â+[b] â¦G2,L2,T1⦠â âU2. U2 â U1 â - ââL,T2. â¦G1, L1, U2⦠â+[b] â¦G2, L, T2⦠& T2 â T1 & L â[T1] L2. + ââL,T2. â¦G1,L1,U2⦠â+[b] â¦G2,L,T2⦠& T2 â T1 & L â[T1] L2. #b #G1 #G2 #L1 #L2 #U1 #T1 #H @(fqup_ind_dx ⦠H) -G1 -L1 -U1 [ #G1 #L1 #U1 #H #U2 #HU21 elim (tdeq_fqu_trans ⦠H ⦠HU21) -U1 /3 width=5 by fqu_fqup, ex3_2_intro/ @@ -136,9 +136,9 @@ qed-. (* Properties with star-iterated structural successor for closures **********) -lemma tdeq_fqus_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â*[b] â¦G2, L2, T1⦠â +lemma tdeq_fqus_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1,L1,U1⦠â*[b] â¦G2,L2,T1⦠â âU2. U2 â U1 â - ââL,T2. â¦G1, L1, U2⦠â*[b] â¦G2, L, T2⦠& T2 â T1 & L â[T1] L2. + ââL,T2. â¦G1,L1,U2⦠â*[b] â¦G2,L,T2⦠& T2 â T1 & L â[T1] L2. #b #G1 #G2 #L1 #L2 #U1 #T1 #H #U2 #HU21 elim(fqus_inv_fqup ⦠H) -H [ #H elim (tdeq_fqup_trans ⦠H ⦠HU21) -U1 /3 width=5 by fqup_fqus, ex3_2_intro/ | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/ @@ -146,9 +146,9 @@ lemma tdeq_fqus_trans: âb,G1,G2,L1,L2,U1,T1. â¦G1, L1, U1⦠â*[b] â¦G2, L qed-. (* Basic_2A1: was just: lleq_fqus_trans *) -lemma rdeq_fqus_trans: âb,G1,G2,L2,K2,T,U. â¦G1, L2, T⦠â*[b] â¦G2, K2, U⦠â +lemma rdeq_fqus_trans: âb,G1,G2,L2,K2,T,U. â¦G1,L2,T⦠â*[b] â¦G2,K2,U⦠â âL1. L1 â[T] L2 â - ââK1,U0. â¦G1, L1, T⦠â*[b] â¦G2, K1, U0⦠& U0 â U & K1 â[U] K2. + ââK1,U0. â¦G1,L1,T⦠â*[b] â¦G2,K1,U0⦠& U0 â U & K1 â[U] K2. #b #G1 #G2 #L2 #K2 #T #U #H #L1 #HL12 elim(fqus_inv_fqup ⦠H) -H [ #H elim (rdeq_fqup_trans ⦠H ⦠HL12) -L2 /3 width=5 by fqup_fqus, ex3_2_intro/ | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma index c5b0e5f31..967c4c0e6 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma @@ -44,7 +44,7 @@ lemma rdeq_unit_length: âL1,L2. |L1| = |L2| â (* Basic_2A1: uses: lleq_lift_le lleq_lift_ge *) lemma rdeq_lifts_bi: âL1,L2. |L1| = |L2| â âK1,K2,T. K1 â[T] K2 â - âb,f. â¬*[b, f] L1 â K1 â â¬*[b, f] L2 â K2 â + âb,f. â¬*[b,f] L1 â K1 â â¬*[b,f] L2 â K2 â âU. â¬*[f] T â U â L1 â[U] L2. /3 width=9 by rex_lifts_bi, tdeq_lifts_sn/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/req.ma b/matita/matita/contribs/lambdadelta/static_2/static/req.ma index 13965b92d..46e436d68 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/req.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/req.ma @@ -69,7 +69,7 @@ lemma req_inv_lref_bind_dx: âI2,K2,L1,i. L1 â¡[#âi] K2.â{I2} â (* Basic_2A1: was: llpx_sn_lrefl *) (* Basic_2A1: this should have been lleq_fwd_llpx_sn *) lemma req_fwd_rex: âR. c_reflexive ⦠R â - âL1,L2,T. L1 â¡[T] L2 â L1 ⪤[R, T] L2. + âL1,L2,T. L1 â¡[T] L2 â L1 ⪤[R,T] L2. #R #HR #L1 #L2 #T * #f #Hf #HL12 /4 width=7 by sex_co, cext2_co, ex2_intro/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma index 0eae38683..76f25cd40 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma @@ -21,6 +21,6 @@ include "static_2/static/req.ma". (* Basic_2A1: uses: lleq_inv_lift_le lleq_inv_lift_be lleq_inv_lift_ge *) lemma req_inv_lifts_bi: âL1,L2,U. L1 â¡[U] L2 â âb,f. ðâ¦f⦠â - âK1,K2. â¬*[b, f] L1 â K1 â â¬*[b, f] L2 â K2 â + âK1,K2. â¬*[b,f] L1 â K1 â â¬*[b,f] L2 â K2 â âT. â¬*[f] T â U â K1 â¡[T] K2. /2 width=10 by rex_inv_lifts_bi/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/req_fsle.ma b/matita/matita/contribs/lambdadelta/static_2/static/req_fsle.ma index d91c9905b..efafbb903 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/req_fsle.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/req_fsle.ma @@ -29,5 +29,5 @@ qed. (* Forward lemmas with free variables inclusion for restricted closures *****) lemma req_rex_trans: âR. req_transitive R â - âL1,L,T. L1 â¡[T] L â âL2. L ⪤[R, T] L2 â L1 ⪤[R, T] L2. + âL1,L,T. L1 â¡[T] L â âL2. L ⪤[R,T] L2 â L1 ⪤[R,T] L2. /4 width=16 by req_fsle_comp, rex_trans_fsle, rex_trans_next/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex.ma index 515e24bef..0848e8503 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex.ma @@ -21,7 +21,7 @@ include "static_2/static/frees.ma". (* GENERIC EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ****) definition rex (R) (T): relation lenv â - λL1,L2. ââf. L1 ⢠ð *â¦T⦠â f & L1 ⪤[cext2 R, cfull, f] L2. + λL1,L2. ââf. L1 ⢠ð *â¦T⦠â f & L1 ⪤[cext2 R,cfull,f] L2. interpretation "generic extension on referred entries (local environment)" 'Relation R T L1 L2 = (rex R T L1 L2). @@ -30,32 +30,32 @@ definition R_confluent2_rex: relation4 (relation3 lenv term term) (relation3 lenv term term) ⦠â λR1,R2,RP1,RP2. âL0,T0,T1. R1 L0 T0 T1 â âT2. R2 L0 T0 T2 â - âL1. L0 ⪤[RP1, T0] L1 â âL2. L0 ⪤[RP2, T0] L2 â + âL1. L0 ⪤[RP1,T0] L1 â âL2. L0 ⪤[RP2,T0] L2 â ââT. R2 L1 T1 T & R1 L2 T2 T. definition rex_confluent: relation ⦠â λR1,R2. - âK1,K,V1. K1 ⪤[R1, V1] K â âV. R1 K1 V1 V â - âK2. K ⪤[R2, V] K2 â K ⪤[R2, V1] K2. + âK1,K,V1. K1 ⪤[R1,V1] K â âV. R1 K1 V1 V â + âK2. K ⪤[R2,V] K2 â K ⪤[R2,V1] K2. definition rex_transitive: relation3 ? (relation3 ?? term) ⦠â λR1,R2,R3. - âK1,K,V1. K1 ⪤[R1, V1] K â + âK1,K,V1. K1 ⪤[R1,V1] K â âV. R1 K1 V1 V â âV2. R2 K V V2 â R3 K1 V1 V2. (* Basic inversion lemmas ***************************************************) -lemma rex_inv_atom_sn (R): âY2,T. â ⪤[R, T] Y2 â Y2 = â. +lemma rex_inv_atom_sn (R): âY2,T. â ⪤[R,T] Y2 â Y2 = â. #R #Y2 #T * /2 width=4 by sex_inv_atom1/ qed-. -lemma rex_inv_atom_dx (R): âY1,T. Y1 ⪤[R, T] â â Y1 = â. +lemma rex_inv_atom_dx (R): âY1,T. Y1 ⪤[R,T] â â Y1 = â. #R #I #Y1 * /2 width=4 by sex_inv_atom2/ qed-. -lemma rex_inv_sort (R): âY1,Y2,s. Y1 ⪤[R, âs] Y2 â +lemma rex_inv_sort (R): âY1,Y2,s. Y1 ⪤[R,âs] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI1,I2,L1,L2. L1 ⪤[R, âs] L2 & + | ââI1,I2,L1,L2. L1 ⪤[R,âs] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. #R * [ | #Y1 #I1 ] #Y2 #s * #f #H1 #H2 [ lapply (sex_inv_atom1 ⦠H2) -H2 /3 width=1 by or_introl, conj/ @@ -66,11 +66,11 @@ lemma rex_inv_sort (R): âY1,Y2,s. Y1 ⪤[R, âs] Y2 â ] qed-. -lemma rex_inv_zero (R): âY1,Y2. Y1 ⪤[R, #0] Y2 â +lemma rex_inv_zero (R): âY1,Y2. Y1 ⪤[R,#0] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI,L1,L2,V1,V2. L1 ⪤[R, V1] L2 & R L1 V1 V2 & + | ââI,L1,L2,V1,V2. L1 ⪤[R,V1] L2 & R L1 V1 V2 & Y1 = L1.â{I}V1 & Y2 = L2.â{I}V2 - | ââf,I,L1,L2. ðâ¦f⦠& L1 ⪤[cext2 R, cfull, f] L2 & + | ââf,I,L1,L2. ðâ¦f⦠& L1 ⪤[cext2 R,cfull,f] L2 & Y1 = L1.â¤{I} & Y2 = L2.â¤{I}. #R * [ | #Y1 * #I1 [ | #X ] ] #Y2 * #f #H1 #H2 [ lapply (sex_inv_atom1 ⦠H2) -H2 /3 width=1 by or3_intro0, conj/ @@ -84,9 +84,9 @@ lemma rex_inv_zero (R): âY1,Y2. Y1 ⪤[R, #0] Y2 â ] qed-. -lemma rex_inv_lref (R): âY1,Y2,i. Y1 ⪤[R, #âi] Y2 â +lemma rex_inv_lref (R): âY1,Y2,i. Y1 ⪤[R,#âi] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI1,I2,L1,L2. L1 ⪤[R, #i] L2 & + | ââI1,I2,L1,L2. L1 ⪤[R,#i] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. #R * [ | #Y1 #I1 ] #Y2 #i * #f #H1 #H2 [ lapply (sex_inv_atom1 ⦠H2) -H2 /3 width=1 by or_introl, conj/ @@ -96,9 +96,9 @@ lemma rex_inv_lref (R): âY1,Y2,i. Y1 ⪤[R, #âi] Y2 â ] qed-. -lemma rex_inv_gref (R): âY1,Y2,l. Y1 ⪤[R, §l] Y2 â +lemma rex_inv_gref (R): âY1,Y2,l. Y1 ⪤[R,§l] Y2 â â¨â¨ Y1 = â ⧠Y2 = â - | ââI1,I2,L1,L2. L1 ⪤[R, §l] L2 & + | ââI1,I2,L1,L2. L1 ⪤[R,§l] L2 & Y1 = L1.â{I1} & Y2 = L2.â{I2}. #R * [ | #Y1 #I1 ] #Y2 #l * #f #H1 #H2 [ lapply (sex_inv_atom1 ⦠H2) -H2 /3 width=1 by or_introl, conj/ @@ -110,39 +110,39 @@ lemma rex_inv_gref (R): âY1,Y2,l. Y1 ⪤[R, §l] Y2 â qed-. (* Basic_2A1: uses: llpx_sn_inv_bind llpx_sn_inv_bind_O *) -lemma rex_inv_bind (R): âp,I,L1,L2,V1,V2,T. L1 ⪤[R, â{p,I}V1.T] L2 â R L1 V1 V2 â - â§â§ L1 ⪤[R, V1] L2 & L1.â{I}V1 ⪤[R, T] L2.â{I}V2. +lemma rex_inv_bind (R): âp,I,L1,L2,V1,V2,T. L1 ⪤[R,â{p,I}V1.T] L2 â R L1 V1 V2 â + â§â§ L1 ⪤[R,V1] L2 & L1.â{I}V1 ⪤[R,T] L2.â{I}V2. #R #p #I #L1 #L2 #V1 #V2 #T * #f #Hf #HL #HV elim (frees_inv_bind ⦠Hf) -Hf /6 width=6 by sle_sex_trans, sex_inv_tl, ext2_pair, sor_inv_sle_dx, sor_inv_sle_sn, ex2_intro, conj/ qed-. (* Basic_2A1: uses: llpx_sn_inv_flat *) -lemma rex_inv_flat (R): âI,L1,L2,V,T. L1 ⪤[R, â{I}V.T] L2 â - â§â§ L1 ⪤[R, V] L2 & L1 ⪤[R, T] L2. +lemma rex_inv_flat (R): âI,L1,L2,V,T. L1 ⪤[R,â{I}V.T] L2 â + â§â§ L1 ⪤[R,V] L2 & L1 ⪤[R,T] L2. #R #I #L1 #L2 #V #T * #f #Hf #HL elim (frees_inv_flat ⦠Hf) -Hf /5 width=6 by sle_sex_trans, sor_inv_sle_dx, sor_inv_sle_sn, ex2_intro, conj/ qed-. (* Advanced inversion lemmas ************************************************) -lemma rex_inv_sort_bind_sn (R): âI1,K1,L2,s. K1.â{I1} ⪤[R, âs] L2 â - ââI2,K2. K1 ⪤[R, âs] K2 & L2 = K2.â{I2}. +lemma rex_inv_sort_bind_sn (R): âI1,K1,L2,s. K1.â{I1} ⪤[R,âs] L2 â + ââI2,K2. K1 ⪤[R,âs] K2 & L2 = K2.â{I2}. #R #I1 #K1 #L2 #s #H elim (rex_inv_sort ⦠H) -H * [ #H destruct | #Z1 #I2 #Y1 #K2 #Hs #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rex_inv_sort_bind_dx (R): âI2,K2,L1,s. L1 ⪤[R, âs] K2.â{I2} â - ââI1,K1. K1 ⪤[R, âs] K2 & L1 = K1.â{I1}. +lemma rex_inv_sort_bind_dx (R): âI2,K2,L1,s. L1 ⪤[R,âs] K2.â{I2} â + ââI1,K1. K1 ⪤[R,âs] K2 & L1 = K1.â{I1}. #R #I2 #K2 #L1 #s #H elim (rex_inv_sort ⦠H) -H * [ #_ #H destruct | #I1 #Z2 #K1 #Y2 #Hs #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rex_inv_zero_pair_sn (R): âI,L2,K1,V1. K1.â{I}V1 ⪤[R, #0] L2 â - ââK2,V2. K1 ⪤[R, V1] K2 & R K1 V1 V2 & +lemma rex_inv_zero_pair_sn (R): âI,L2,K1,V1. K1.â{I}V1 ⪤[R,#0] L2 â + ââK2,V2. K1 ⪤[R,V1] K2 & R K1 V1 V2 & L2 = K2.â{I}V2. #R #I #L2 #K1 #V1 #H elim (rex_inv_zero ⦠H) -H * [ #H destruct @@ -152,8 +152,8 @@ lemma rex_inv_zero_pair_sn (R): âI,L2,K1,V1. K1.â{I}V1 ⪤[R, #0] L2 â ] qed-. -lemma rex_inv_zero_pair_dx (R): âI,L1,K2,V2. L1 ⪤[R, #0] K2.â{I}V2 â - ââK1,V1. K1 ⪤[R, V1] K2 & R K1 V1 V2 & +lemma rex_inv_zero_pair_dx (R): âI,L1,K2,V2. L1 ⪤[R,#0] K2.â{I}V2 â + ââK1,V1. K1 ⪤[R,V1] K2 & R K1 V1 V2 & L1 = K1.â{I}V1. #R #I #L1 #K2 #V2 #H elim (rex_inv_zero ⦠H) -H * [ #_ #H destruct @@ -163,8 +163,8 @@ lemma rex_inv_zero_pair_dx (R): âI,L1,K2,V2. L1 ⪤[R, #0] K2.â{I}V2 â ] qed-. -lemma rex_inv_zero_unit_sn (R): âI,K1,L2. K1.â¤{I} ⪤[R, #0] L2 â - ââf,K2. ðâ¦f⦠& K1 ⪤[cext2 R, cfull, f] K2 & +lemma rex_inv_zero_unit_sn (R): âI,K1,L2. K1.â¤{I} ⪤[R,#0] L2 â + ââf,K2. ðâ¦f⦠& K1 ⪤[cext2 R,cfull,f] K2 & L2 = K2.â¤{I}. #R #I #K1 #L2 #H elim (rex_inv_zero ⦠H) -H * [ #H destruct @@ -173,8 +173,8 @@ lemma rex_inv_zero_unit_sn (R): âI,K1,L2. K1.â¤{I} ⪤[R, #0] L2 â ] qed-. -lemma rex_inv_zero_unit_dx (R): âI,L1,K2. L1 ⪤[R, #0] K2.â¤{I} â - ââf,K1. ðâ¦f⦠& K1 ⪤[cext2 R, cfull, f] K2 & +lemma rex_inv_zero_unit_dx (R): âI,L1,K2. L1 ⪤[R,#0] K2.â¤{I} â + ââf,K1. ðâ¦f⦠& K1 ⪤[cext2 R,cfull,f] K2 & L1 = K1.â¤{I}. #R #I #L1 #K2 #H elim (rex_inv_zero ⦠H) -H * [ #_ #H destruct @@ -183,32 +183,32 @@ lemma rex_inv_zero_unit_dx (R): âI,L1,K2. L1 ⪤[R, #0] K2.â¤{I} â ] qed-. -lemma rex_inv_lref_bind_sn (R): âI1,K1,L2,i. K1.â{I1} ⪤[R, #âi] L2 â - ââI2,K2. K1 ⪤[R, #i] K2 & L2 = K2.â{I2}. +lemma rex_inv_lref_bind_sn (R): âI1,K1,L2,i. K1.â{I1} ⪤[R,#âi] L2 â + ââI2,K2. K1 ⪤[R,#i] K2 & L2 = K2.â{I2}. #R #I1 #K1 #L2 #i #H elim (rex_inv_lref ⦠H) -H * [ #H destruct | #Z1 #I2 #Y1 #K2 #Hi #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rex_inv_lref_bind_dx (R): âI2,K2,L1,i. L1 ⪤[R, #âi] K2.â{I2} â - ââI1,K1. K1 ⪤[R, #i] K2 & L1 = K1.â{I1}. +lemma rex_inv_lref_bind_dx (R): âI2,K2,L1,i. L1 ⪤[R,#âi] K2.â{I2} â + ââI1,K1. K1 ⪤[R,#i] K2 & L1 = K1.â{I1}. #R #I2 #K2 #L1 #i #H elim (rex_inv_lref ⦠H) -H * [ #_ #H destruct | #I1 #Z2 #K1 #Y2 #Hi #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rex_inv_gref_bind_sn (R): âI1,K1,L2,l. K1.â{I1} ⪤[R, §l] L2 â - ââI2,K2. K1 ⪤[R, §l] K2 & L2 = K2.â{I2}. +lemma rex_inv_gref_bind_sn (R): âI1,K1,L2,l. K1.â{I1} ⪤[R,§l] L2 â + ââI2,K2. K1 ⪤[R,§l] K2 & L2 = K2.â{I2}. #R #I1 #K1 #L2 #l #H elim (rex_inv_gref ⦠H) -H * [ #H destruct | #Z1 #I2 #Y1 #K2 #Hl #H1 #H2 destruct /2 width=4 by ex2_2_intro/ ] qed-. -lemma rex_inv_gref_bind_dx (R): âI2,K2,L1,l. L1 ⪤[R, §l] K2.â{I2} â - ââI1,K1. K1 ⪤[R, §l] K2 & L1 = K1.â{I1}. +lemma rex_inv_gref_bind_dx (R): âI2,K2,L1,l. L1 ⪤[R,§l] K2.â{I2} â + ââI1,K1. K1 ⪤[R,§l] K2 & L1 = K1.â{I1}. #R #I2 #K2 #L1 #l #H elim (rex_inv_gref ⦠H) -H * [ #_ #H destruct | #I1 #Z2 #K1 #Y2 #Hl #H1 #H2 destruct /2 width=4 by ex2_2_intro/ @@ -218,30 +218,30 @@ qed-. (* Basic forward lemmas *****************************************************) lemma rex_fwd_zero_pair (R): âI,K1,K2,V1,V2. - K1.â{I}V1 ⪤[R, #0] K2.â{I}V2 â K1 ⪤[R, V1] K2. + K1.â{I}V1 ⪤[R,#0] K2.â{I}V2 â K1 ⪤[R,V1] K2. #R #I #K1 #K2 #V1 #V2 #H elim (rex_inv_zero_pair_sn ⦠H) -H #Y #X #HK12 #_ #H destruct // qed-. (* Basic_2A1: uses: llpx_sn_fwd_pair_sn llpx_sn_fwd_bind_sn llpx_sn_fwd_flat_sn *) -lemma rex_fwd_pair_sn (R): âI,L1,L2,V,T. L1 ⪤[R, â¡{I}V.T] L2 â L1 ⪤[R, V] L2. +lemma rex_fwd_pair_sn (R): âI,L1,L2,V,T. L1 ⪤[R,â¡{I}V.T] L2 â L1 ⪤[R,V] L2. #R * [ #p ] #I #L1 #L2 #V #T * #f #Hf #HL [ elim (frees_inv_bind ⦠Hf) | elim (frees_inv_flat ⦠Hf) ] -Hf /4 width=6 by sle_sex_trans, sor_inv_sle_sn, ex2_intro/ qed-. (* Basic_2A1: uses: llpx_sn_fwd_bind_dx llpx_sn_fwd_bind_O_dx *) -lemma rex_fwd_bind_dx (R): âp,I,L1,L2,V1,V2,T. L1 ⪤[R, â{p,I}V1.T] L2 â - R L1 V1 V2 â L1.â{I}V1 ⪤[R, T] L2.â{I}V2. +lemma rex_fwd_bind_dx (R): âp,I,L1,L2,V1,V2,T. L1 ⪤[R,â{p,I}V1.T] L2 â + R L1 V1 V2 â L1.â{I}V1 ⪤[R,T] L2.â{I}V2. #R #p #I #L1 #L2 #V1 #V2 #T #H #HV elim (rex_inv_bind ⦠H HV) -H -HV // qed-. (* Basic_2A1: uses: llpx_sn_fwd_flat_dx *) -lemma rex_fwd_flat_dx (R): âI,L1,L2,V,T. L1 ⪤[R, â{I}V.T] L2 â L1 ⪤[R, T] L2. +lemma rex_fwd_flat_dx (R): âI,L1,L2,V,T. L1 ⪤[R,â{I}V.T] L2 â L1 ⪤[R,T] L2. #R #I #L1 #L2 #V #T #H elim (rex_inv_flat ⦠H) -H // qed-. -lemma rex_fwd_dx (R): âI2,L1,K2,T. L1 ⪤[R, T] K2.â{I2} â +lemma rex_fwd_dx (R): âI2,L1,K2,T. L1 ⪤[R,T] K2.â{I2} â ââI1,K1. L1 = K1.â{I1}. #R #I2 #L1 #K2 #T * #f elim (pn_split f) * #g #Hg #_ #Hf destruct [ elim (sex_inv_push2 ⦠Hf) | elim (sex_inv_next2 ⦠Hf) ] -Hf #I1 #K1 #_ #_ #H destruct @@ -250,63 +250,63 @@ qed-. (* Basic properties *********************************************************) -lemma rex_atom (R): âI. â ⪤[R, âª{I}] â. +lemma rex_atom (R): âI. â ⪤[R,âª{I}] â. #R * /3 width=3 by frees_sort, frees_atom, frees_gref, sex_atom, ex2_intro/ qed. lemma rex_sort (R): âI1,I2,L1,L2,s. - L1 ⪤[R, âs] L2 â L1.â{I1} ⪤[R, âs] L2.â{I2}. + L1 ⪤[R,âs] L2 â L1.â{I1} ⪤[R,âs] L2.â{I2}. #R #I1 #I2 #L1 #L2 #s * #f #Hf #H12 lapply (frees_inv_sort ⦠Hf) -Hf /4 width=3 by frees_sort, sex_push, isid_push, ex2_intro/ qed. -lemma rex_pair (R): âI,L1,L2,V1,V2. L1 ⪤[R, V1] L2 â - R L1 V1 V2 â L1.â{I}V1 ⪤[R, #0] L2.â{I}V2. +lemma rex_pair (R): âI,L1,L2,V1,V2. L1 ⪤[R,V1] L2 â + R L1 V1 V2 â L1.â{I}V1 ⪤[R,#0] L2.â{I}V2. #R #I1 #I2 #L1 #L2 #V1 * /4 width=3 by ext2_pair, frees_pair, sex_next, ex2_intro/ qed. -lemma rex_unit (R): âf,I,L1,L2. ðâ¦f⦠â L1 ⪤[cext2 R, cfull, f] L2 â - L1.â¤{I} ⪤[R, #0] L2.â¤{I}. +lemma rex_unit (R): âf,I,L1,L2. ðâ¦f⦠â L1 ⪤[cext2 R,cfull,f] L2 â + L1.â¤{I} ⪤[R,#0] L2.â¤{I}. /4 width=3 by frees_unit, sex_next, ext2_unit, ex2_intro/ qed. lemma rex_lref (R): âI1,I2,L1,L2,i. - L1 ⪤[R, #i] L2 â L1.â{I1} ⪤[R, #âi] L2.â{I2}. + L1 ⪤[R,#i] L2 â L1.â{I1} ⪤[R,#âi] L2.â{I2}. #R #I1 #I2 #L1 #L2 #i * /3 width=3 by sex_push, frees_lref, ex2_intro/ qed. lemma rex_gref (R): âI1,I2,L1,L2,l. - L1 ⪤[R, §l] L2 â L1.â{I1} ⪤[R, §l] L2.â{I2}. + L1 ⪤[R,§l] L2 â L1.â{I1} ⪤[R,§l] L2.â{I2}. #R #I1 #I2 #L1 #L2 #l * #f #Hf #H12 lapply (frees_inv_gref ⦠Hf) -Hf /4 width=3 by frees_gref, sex_push, isid_push, ex2_intro/ qed. lemma rex_bind_repl_dx (R): âI,I1,L1,L2,T. - L1.â{I} ⪤[R, T] L2.â{I1} â + L1.â{I} ⪤[R,T] L2.â{I1} â âI2. cext2 R L1 I I2 â - L1.â{I} ⪤[R, T] L2.â{I2}. + L1.â{I} ⪤[R,T] L2.â{I2}. #R #I #I1 #L1 #L2 #T * #f #Hf #HL12 #I2 #HR /3 width=5 by sex_pair_repl, ex2_intro/ qed-. (* Basic_2A1: uses: llpx_sn_co *) lemma rex_co (R1) (R2): (âL,T1,T2. R1 L T1 T2 â R2 L T1 T2) â - âL1,L2,T. L1 ⪤[R1, T] L2 â L1 ⪤[R2, T] L2. + âL1,L2,T. L1 ⪤[R1,T] L2 â L1 ⪤[R2,T] L2. #R1 #R2 #HR #L1 #L2 #T * /5 width=7 by sex_co, cext2_co, ex2_intro/ qed-. lemma rex_isid (R1) (R2): âL1,L2,T1,T2. (âf. L1 ⢠ð *â¦T1⦠â f â ðâ¦fâ¦) â (âf. ðâ¦f⦠â L1 ⢠ð *â¦T2⦠â f) â - L1 ⪤[R1, T1] L2 â L1 ⪤[R2, T2] L2. + L1 ⪤[R1,T1] L2 â L1 ⪤[R2,T2] L2. #R1 #R2 #L1 #L2 #T1 #T2 #H1 #H2 * /4 width=7 by sex_co_isid, ex2_intro/ qed-. lemma rex_unit_sn (R1) (R2): - âI,K1,L2. K1.â¤{I} ⪤[R1, #0] L2 â K1.â¤{I} ⪤[R2, #0] L2. + âI,K1,L2. K1.â¤{I} ⪤[R1,#0] L2 â K1.â¤{I} ⪤[R2,#0] L2. #R1 #R2 #I #K1 #L2 #H elim (rex_inv_zero_unit_sn ⦠H) -H #f #K2 #Hf #HK12 #H destruct /3 width=7 by rex_unit, sex_co_isid/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma index 60e335d57..5a0466800 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma @@ -20,19 +20,19 @@ include "static_2/static/rex.ma". (* GENERIC EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ****) definition f_dedropable_sn: predicate (relation3 lenv term term) â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â - âK2,T. K1 ⪤[R, T] K2 â âU. â¬*[f] T â U â - ââL2. L1 ⪤[R, U] L2 & â¬*[b, f] L2 â K2 & L1 â¡[f] L2. + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â + âK2,T. K1 ⪤[R,T] K2 â âU. â¬*[f] T â U â + ââL2. L1 ⪤[R,U] L2 & â¬*[b,f] L2 â K2 & L1 â¡[f] L2. definition f_dropable_sn: predicate (relation3 lenv term term) â - λR. âb,f,L1,K1. â¬*[b, f] L1 â K1 â ðâ¦f⦠â - âL2,U. L1 ⪤[R, U] L2 â âT. â¬*[f] T â U â - ââK2. K1 ⪤[R, T] K2 & â¬*[b, f] L2 â K2. + λR. âb,f,L1,K1. â¬*[b,f] L1 â K1 â ðâ¦f⦠â + âL2,U. L1 ⪤[R,U] L2 â âT. â¬*[f] T â U â + ââK2. K1 ⪤[R,T] K2 & â¬*[b,f] L2 â K2. definition f_dropable_dx: predicate (relation3 lenv term term) â - λR. âL1,L2,U. L1 ⪤[R, U] L2 â - âb,f,K2. â¬*[b, f] L2 â K2 â ðâ¦f⦠â âT. â¬*[f] T â U â - ââK1. â¬*[b, f] L1 â K1 & K1 ⪤[R, T] K2. + λR. âL1,L2,U. L1 ⪤[R,U] L2 â + âb,f,K2. â¬*[b,f] L2 â K2 â ðâ¦f⦠â âT. â¬*[f] T â U â + ââK1. â¬*[b,f] L1 â K1 & K1 ⪤[R,T] K2. definition f_transitive_next: relation3 ⦠â λR1,R2,R3. âf,L,T. L ⢠ð *â¦T⦠â f â @@ -87,48 +87,48 @@ elim (sex_co_dropable_dx ⦠HL12 ⦠HLK2 ⦠H2f) -L2 qed-. (* Basic_2A1: uses: llpx_sn_inv_lift_O *) -lemma rex_inv_lifts_bi: âR,L1,L2,U. L1 ⪤[R, U] L2 â âb,f. ðâ¦f⦠â - âK1,K2. â¬*[b, f] L1 â K1 â â¬*[b, f] L2 â K2 â - âT. â¬*[f] T â U â K1 ⪤[R, T] K2. +lemma rex_inv_lifts_bi: âR,L1,L2,U. L1 ⪤[R,U] L2 â âb,f. ðâ¦f⦠â + âK1,K2. â¬*[b,f] L1 â K1 â â¬*[b,f] L2 â K2 â + âT. â¬*[f] T â U â K1 ⪤[R,T] K2. #R #L1 #L2 #U #HL12 #b #f #Hf #K1 #K2 #HLK1 #HLK2 #T #HTU elim (rex_dropable_sn ⦠HLK1 ⦠HL12 ⦠HTU) -L1 -U // #Y #HK12 #HY lapply (drops_mono ⦠HY ⦠HLK2) -b -f -L2 #H destruct // qed-. -lemma rex_inv_lref_pair_sn: âR,L1,L2,i. L1 ⪤[R, #i] L2 â âI,K1,V1. â¬*[i] L1 â K1.â{I}V1 â - ââK2,V2. â¬*[i] L2 â K2.â{I}V2 & K1 ⪤[R, V1] K2 & R K1 V1 V2. +lemma rex_inv_lref_pair_sn: âR,L1,L2,i. L1 ⪤[R,#i] L2 â âI,K1,V1. â¬*[i] L1 â K1.â{I}V1 â + ââK2,V2. â¬*[i] L2 â K2.â{I}V2 & K1 ⪤[R,V1] K2 & R K1 V1 V2. #R #L1 #L2 #i #HL12 #I #K1 #V1 #HLK1 elim (rex_dropable_sn ⦠HLK1 ⦠HL12 (#0)) -HLK1 -HL12 // #Y #HY #HLK2 elim (rex_inv_zero_pair_sn ⦠HY) -HY #K2 #V2 #HK12 #HV12 #H destruct /2 width=5 by ex3_2_intro/ qed-. -lemma rex_inv_lref_pair_dx: âR,L1,L2,i. L1 ⪤[R, #i] L2 â âI,K2,V2. â¬*[i] L2 â K2.â{I}V2 â - ââK1,V1. â¬*[i] L1 â K1.â{I}V1 & K1 ⪤[R, V1] K2 & R K1 V1 V2. +lemma rex_inv_lref_pair_dx: âR,L1,L2,i. L1 ⪤[R,#i] L2 â âI,K2,V2. â¬*[i] L2 â K2.â{I}V2 â + ââK1,V1. â¬*[i] L1 â K1.â{I}V1 & K1 ⪤[R,V1] K2 & R K1 V1 V2. #R #L1 #L2 #i #HL12 #I #K2 #V2 #HLK2 elim (rex_dropable_dx ⦠HL12 ⦠HLK2 ⦠(#0)) -HLK2 -HL12 // #Y #HLK1 #HY elim (rex_inv_zero_pair_dx ⦠HY) -HY #K1 #V1 #HK12 #HV12 #H destruct /2 width=5 by ex3_2_intro/ qed-. lemma rex_inv_lref_pair_bi (R) (L1) (L2) (i): - L1 ⪤[R, #i] L2 â + L1 ⪤[R,#i] L2 â âI1,K1,V1. â¬*[i] L1 â K1.â{I1}V1 â âI2,K2,V2. â¬*[i] L2 â K2.â{I2}V2 â - â§â§ K1 ⪤[R, V1] K2 & R K1 V1 V2 & I1 = I2. + â§â§ K1 ⪤[R,V1] K2 & R K1 V1 V2 & I1 = I2. #R #L1 #L2 #i #H12 #I1 #K1 #V1 #H1 #I2 #K2 #V2 #H2 elim (rex_inv_lref_pair_sn ⦠H12 ⦠H1) -L1 #Y2 #X2 #HLY2 #HK12 #HV12 lapply (drops_mono ⦠HLY2 ⦠H2) -HLY2 -H2 #H destruct /2 width=1 by and3_intro/ qed-. -lemma rex_inv_lref_unit_sn: âR,L1,L2,i. L1 ⪤[R, #i] L2 â âI,K1. â¬*[i] L1 â K1.â¤{I} â - ââf,K2. â¬*[i] L2 â K2.â¤{I} & K1 ⪤[cext2 R, cfull, f] K2 & ðâ¦fâ¦. +lemma rex_inv_lref_unit_sn: âR,L1,L2,i. L1 ⪤[R,#i] L2 â âI,K1. â¬*[i] L1 â K1.â¤{I} â + ââf,K2. â¬*[i] L2 â K2.â¤{I} & K1 ⪤[cext2 R,cfull,f] K2 & ðâ¦fâ¦. #R #L1 #L2 #i #HL12 #I #K1 #HLK1 elim (rex_dropable_sn ⦠HLK1 ⦠HL12 (#0)) -HLK1 -HL12 // #Y #HY #HLK2 elim (rex_inv_zero_unit_sn ⦠HY) -HY #f #K2 #Hf #HK12 #H destruct /2 width=5 by ex3_2_intro/ qed-. -lemma rex_inv_lref_unit_dx: âR,L1,L2,i. L1 ⪤[R, #i] L2 â âI,K2. â¬*[i] L2 â K2.â¤{I} â - ââf,K1. â¬*[i] L1 â K1.â¤{I} & K1 ⪤[cext2 R, cfull, f] K2 & ðâ¦fâ¦. +lemma rex_inv_lref_unit_dx: âR,L1,L2,i. L1 ⪤[R,#i] L2 â âI,K2. â¬*[i] L2 â K2.â¤{I} â + ââf,K1. â¬*[i] L1 â K1.â¤{I} & K1 ⪤[cext2 R,cfull,f] K2 & ðâ¦fâ¦. #R #L1 #L2 #i #HL12 #I #K2 #HLK2 elim (rex_dropable_dx ⦠HL12 ⦠HLK2 ⦠(#0)) -HLK2 -HL12 // #Y #HLK1 #HY elim (rex_inv_zero_unit_dx ⦠HY) -HY #f #K2 #Hf #HK12 #H destruct /2 width=5 by ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_fqup.ma index c45914f34..5c7e82b33 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_fqup.ma @@ -20,13 +20,13 @@ include "static_2/static/rex.ma". (* Advanced properties ******************************************************) (* Basic_2A1: uses: llpx_sn_refl *) -lemma rex_refl: âR. (âL. reflexive ⦠(R L)) â âL,T. L ⪤[R, T] L. +lemma rex_refl: âR. (âL. reflexive ⦠(R L)) â âL,T. L ⪤[R,T] L. #R #HR #L #T elim (frees_total L T) /4 width=3 by sex_refl, ext2_refl, ex2_intro/ qed. lemma rex_pair_refl: âR. (âL. reflexive ⦠(R L)) â - âL,V1,V2. R L V1 V2 â âI,T. L.â{I}V1 ⪤[R, T] L.â{I}V2. + âL,V1,V2. R L V1 V2 â âI,T. L.â{I}V1 ⪤[R,T] L.â{I}V2. #R #HR #L #V1 #V2 #HV12 #I #T elim (frees_total (L.â{I}V1) T) #f #Hf elim (pn_split f) * #g #H destruct @@ -35,15 +35,15 @@ qed. (* Advanced inversion lemmas ************************************************) -lemma rex_inv_bind_void: âR,p,I,L1,L2,V,T. L1 ⪤[R, â{p,I}V.T] L2 â - L1 ⪤[R, V] L2 ⧠L1.⧠⪤[R, T] L2.â§. +lemma rex_inv_bind_void: âR,p,I,L1,L2,V,T. L1 ⪤[R,â{p,I}V.T] L2 â + L1 ⪤[R,V] L2 ⧠L1.⧠⪤[R,T] L2.â§. #R #p #I #L1 #L2 #V #T * #f #Hf #HL elim (frees_inv_bind_void ⦠Hf) -Hf /6 width=6 by sle_sex_trans, sex_inv_tl, sor_inv_sle_dx, sor_inv_sle_sn, ex2_intro, conj/ qed-. (* Advanced forward lemmas **************************************************) -lemma rex_fwd_bind_dx_void: âR,p,I,L1,L2,V,T. L1 ⪤[R, â{p,I}V.T] L2 â - L1.⧠⪤[R, T] L2.â§. +lemma rex_fwd_bind_dx_void: âR,p,I,L1,L2,V,T. L1 ⪤[R,â{p,I}V.T] L2 â + L1.⧠⪤[R,T] L2.â§. #R #p #I #L1 #L2 #V #T #H elim (rex_inv_bind_void ⦠H) -H // qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_fsle.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_fsle.ma index 24f68014d..1a2829da3 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_fsle.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_fsle.ma @@ -20,19 +20,19 @@ include "static_2/static/rex_rex.ma". (* GENERIC EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ****) definition R_fsge_compatible: predicate (relation3 â¦) â λRN. - âL,T1,T2. RN L T1 T2 â â¦L, T2⦠â â¦L, T1â¦. + âL,T1,T2. RN L T1 T2 â â¦L,T2⦠â â¦L,T1â¦. definition rex_fsge_compatible: predicate (relation3 â¦) â λRN. - âL1,L2,T. L1 ⪤[RN, T] L2 â â¦L2, T⦠â â¦L1, Tâ¦. + âL1,L2,T. L1 ⪤[RN,T] L2 â â¦L2,T⦠â â¦L1,Tâ¦. definition rex_fsle_compatible: predicate (relation3 â¦) â λRN. - âL1,L2,T. L1 ⪤[RN, T] L2 â â¦L1, T⦠â â¦L2, Tâ¦. + âL1,L2,T. L1 ⪤[RN,T] L2 â â¦L1,T⦠â â¦L2,Tâ¦. (* Basic inversions with free variables inclusion for restricted closures ***) lemma frees_sex_conf: âR. rex_fsge_compatible R â âL1,T,f1. L1 ⢠ð *â¦T⦠â f1 â - âL2. L1 ⪤[cext2 R, cfull, f1] L2 â + âL2. L1 ⪤[cext2 R,cfull,f1] L2 â ââf2. L2 ⢠ð *â¦T⦠â f2 & f2 â f1. #R #HR #L1 #T #f1 #Hf1 #L2 #H1L lapply (HR L1 L2 T ?) /2 width=3 by ex2_intro/ #H2L @@ -41,9 +41,9 @@ qed-. (* Properties with free variables inclusion for restricted closures *********) -(* Note: we just need lveq_inv_refl: âL,n1,n2. L ââ§*[n1, n2] L â â§â§ 0 = n1 & 0 = n2 *) -lemma fsge_rex_trans: âR,L1,T1,T2. â¦L1, T1⦠â â¦L1, T2⦠â - âL2. L1 ⪤[R, T2] L2 â L1 ⪤[R, T1] L2. +(* Note: we just need lveq_inv_refl: âL, n1, n2. L ââ§*[n1, n2] L â â§â§ 0 = n1 & 0 = n2 *) +lemma fsge_rex_trans: âR,L1,T1,T2. â¦L1,T1⦠â â¦L1,T2⦠â + âL2. L1 ⪤[R,T2] L2 â L1 ⪤[R,T1] L2. #R #L1 #T1 #T2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #Hn #Hf #L2 #HL12 elim (lveq_inj_length ⦠Hn ?) // #H1 #H2 destruct /4 width=5 by rex_inv_frees, sle_sex_trans, ex2_intro/ @@ -60,8 +60,8 @@ qed-. lemma rex_pair_sn_split: âR1,R2. (âL. reflexive ⦠(R1 L)) â (âL. reflexive ⦠(R2 L)) â rex_fsge_compatible R1 â - âL1,L2,V. L1 ⪤[R1, V] L2 â âI,T. - ââL. L1 ⪤[R1, â¡{I}V.T] L & L ⪤[R2, V] L2. + âL1,L2,V. L1 ⪤[R1,V] L2 â âI,T. + ââL. L1 ⪤[R1,â¡{I}V.T] L & L ⪤[R2,V] L2. #R1 #R2 #HR1 #HR2 #HR #L1 #L2 #V * #f #Hf #HL12 * [ #p ] #I #T [ elim (frees_total L1 (â{p,I}V.T)) #g #Hg elim (frees_inv_bind ⦠Hg) #y1 #y2 #H #_ #Hy @@ -79,8 +79,8 @@ qed-. lemma rex_flat_dx_split: âR1,R2. (âL. reflexive ⦠(R1 L)) â (âL. reflexive ⦠(R2 L)) â rex_fsge_compatible R1 â - âL1,L2,T. L1 ⪤[R1, T] L2 â âI,V. - ââL. L1 ⪤[R1, â{I}V.T] L & L ⪤[R2, T] L2. + âL1,L2,T. L1 ⪤[R1,T] L2 â âI,V. + ââL. L1 ⪤[R1,â{I}V.T] L & L ⪤[R2,T] L2. #R1 #R2 #HR1 #HR2 #HR #L1 #L2 #T * #f #Hf #HL12 #I #V elim (frees_total L1 (â{I}V.T)) #g #Hg elim (frees_inv_flat ⦠Hg) #y1 #y2 #_ #H #Hy @@ -95,8 +95,8 @@ qed-. lemma rex_bind_dx_split: âR1,R2. (âL. reflexive ⦠(R1 L)) â (âL. reflexive ⦠(R2 L)) â rex_fsge_compatible R1 â - âI,L1,L2,V1,T. L1.â{I}V1 ⪤[R1, T] L2 â âp. - ââL,V. L1 ⪤[R1, â{p,I}V1.T] L & L.â{I}V ⪤[R2, T] L2 & R1 L1 V1 V. + âI,L1,L2,V1,T. L1.â{I}V1 ⪤[R1,T] L2 â âp. + ââL,V. L1 ⪤[R1,â{p,I}V1.T] L & L.â{I}V ⪤[R2,T] L2 & R1 L1 V1 V. #R1 #R2 #HR1 #HR2 #HR #I #L1 #L2 #V1 #T * #f #Hf #HL12 #p elim (frees_total L1 (â{p,I}V1.T)) #g #Hg elim (frees_inv_bind ⦠Hg) #y1 #y2 #_ #H #Hy @@ -115,8 +115,8 @@ qed-. lemma rex_bind_dx_split_void: âR1,R2. (âL. reflexive ⦠(R1 L)) â (âL. reflexive ⦠(R2 L)) â rex_fsge_compatible R1 â - âL1,L2,T. L1.⧠⪤[R1, T] L2 â âp,I,V. - ââL. L1 ⪤[R1, â{p,I}V.T] L & L.⧠⪤[R2, T] L2. + âL1,L2,T. L1.⧠⪤[R1,T] L2 â âp,I,V. + ââL. L1 ⪤[R1,â{p,I}V.T] L & L.⧠⪤[R2,T] L2. #R1 #R2 #HR1 #HR2 #HR #L1 #L2 #T * #f #Hf #HL12 #p #I #V elim (frees_total L1 (â{p,I}V.T)) #g #Hg elim (frees_inv_bind_void ⦠Hg) #y1 #y2 #_ #H #Hy @@ -166,8 +166,8 @@ qed-. theorem rex_trans_fsle: âR1,R2,R3. rex_fsle_compatible R1 â f_transitive_next R1 R2 R3 â - âL1,L,T. L1 ⪤[R1, T] L â - âL2. L ⪤[R2, T] L2 â L1 ⪤[R3, T] L2. + âL1,L,T. L1 ⪤[R1,T] L â + âL2. L ⪤[R2,T] L2 â L1 ⪤[R3,T] L2. #R1 #R2 #R3 #H1R #H2R #L1 #L #T #H lapply (H1R ⦠H) -H1R #H0 cases H -H #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL2 diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma index e279e159d..e91111142 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma @@ -20,14 +20,14 @@ include "static_2/static/rex_drops.ma". (* Forward lemmas with length for local environments ************************) (* Basic_2A1: uses: llpx_sn_fwd_length *) -lemma rex_fwd_length (R): âL1,L2,T. L1 ⪤[R, T] L2 â |L1| = |L2|. +lemma rex_fwd_length (R): âL1,L2,T. L1 ⪤[R,T] L2 â |L1| = |L2|. #R #L1 #L2 #T * /2 width=4 by sex_fwd_length/ qed-. (* Properties with length for local environments ****************************) (* Basic_2A1: uses: llpx_sn_sort *) -lemma rex_sort_length (R): âL1,L2. |L1| = |L2| â âs. L1 ⪤[R, âs] L2. +lemma rex_sort_length (R): âL1,L2. |L1| = |L2| â âs. L1 ⪤[R,âs] L2. #R #L1 elim L1 -L1 [ #Y #H #s >(length_inv_zero_sn ⦠H) -H // | #K1 #I1 #IH #Y #H #s @@ -37,7 +37,7 @@ lemma rex_sort_length (R): âL1,L2. |L1| = |L2| â âs. L1 ⪤[R, âs] L2. qed. (* Basic_2A1: uses: llpx_sn_gref *) -lemma rex_gref_length (R): âL1,L2. |L1| = |L2| â âl. L1 ⪤[R, §l] L2. +lemma rex_gref_length (R): âL1,L2. |L1| = |L2| â âl. L1 ⪤[R,§l] L2. #R #L1 elim L1 -L1 [ #Y #H #s >(length_inv_zero_sn ⦠H) -H // | #K1 #I1 #IH #Y #H #s @@ -46,14 +46,14 @@ lemma rex_gref_length (R): âL1,L2. |L1| = |L2| â âl. L1 ⪤[R, §l] L2. ] qed. -lemma rex_unit_length (R): âL1,L2. |L1| = |L2| â âI. L1.â¤{I} ⪤[R, #0] L2.â¤{I}. +lemma rex_unit_length (R): âL1,L2. |L1| = |L2| â âI. L1.â¤{I} ⪤[R,#0] L2.â¤{I}. /3 width=3 by rex_unit, sex_length_isid/ qed. (* Basic_2A1: uses: llpx_sn_lift_le llpx_sn_lift_ge *) lemma rex_lifts_bi (R): d_liftable2_sn ⦠lifts R â - âL1,L2. |L1| = |L2| â âK1,K2,T. K1 ⪤[R, T] K2 â - âb,f. â¬*[b, f] L1 â K1 â â¬*[b, f] L2 â K2 â - âU. â¬*[f] T â U â L1 ⪤[R, U] L2. + âL1,L2. |L1| = |L2| â âK1,K2,T. K1 ⪤[R,T] K2 â + âb,f. â¬*[b,f] L1 â K1 â â¬*[b,f] L2 â K2 â + âU. â¬*[f] T â U â L1 ⪤[R,U] L2. #R #HR #L1 #L2 #HL12 #K1 #K2 #T * #f1 #Hf1 #HK12 #b #f #HLK1 #HLK2 #U #HTU elim (frees_total L1 U) #f2 #Hf2 lapply (frees_fwd_coafter ⦠Hf2 ⦠HLK1 ⦠HTU ⦠Hf1) -HTU #Hf @@ -62,9 +62,9 @@ qed-. (* Inversion lemmas with length for local environment ***********************) -lemma rex_inv_zero_length (R): âY1,Y2. Y1 ⪤[R, #0] Y2 â +lemma rex_inv_zero_length (R): âY1,Y2. Y1 ⪤[R,#0] Y2 â â¨â¨ â§â§ Y1 = â & Y2 = â - | ââI,L1,L2,V1,V2. L1 ⪤[R, V1] L2 & R L1 V1 V2 & + | ââI,L1,L2,V1,V2. L1 ⪤[R,V1] L2 & R L1 V1 V2 & Y1 = L1.â{I}V1 & Y2 = L2.â{I}V2 | ââI,L1,L2. |L1| = |L2| & Y1 = L1.â¤{I} & Y2 = L2.â¤{I}. #R #Y1 #Y2 #H elim (rex_inv_zero ⦠H) -H * diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_lex.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_lex.ma index ffaebbc2e..d031d93c4 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_lex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_lex.ma @@ -20,7 +20,7 @@ include "static_2/static/req.ma". (* Properties with generic extension of a context-sensitive relation ********) -lemma rex_lex: âR,L1,L2. L1 ⪤[R] L2 â âT. L1 ⪤[R, T] L2. +lemma rex_lex: âR,L1,L2. L1 ⪤[R] L2 â âT. L1 ⪤[R,T] L2. #R #L1 #L2 * #f #Hf #HL12 #T elim (frees_total L1 T) #g #Hg /4 width=5 by sex_sdj, sdj_isid_sn, ex2_intro/ @@ -30,7 +30,7 @@ qed. lemma rex_inv_lex_req: âR. c_reflexive ⦠R â rex_fsge_compatible R â - âL1,L2,T. L1 ⪤[R, T] L2 â + âL1,L2,T. L1 ⪤[R,T] L2 â ââL. L1 ⪤[R] L & L â¡[T] L2. #R #H1R #H2R #L1 #L2 #T * #f1 #Hf1 #HL elim (sex_sdj_split ⦠ceq_ext ⦠HL ðð ?) -HL diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_rex.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_rex.ma index 08a4f192c..7bbf5d895 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_rex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_rex.ma @@ -20,8 +20,8 @@ include "static_2/static/rex.ma". (* Advanced inversion lemmas ************************************************) -lemma rex_inv_frees: âR,L1,L2,T. L1 ⪤[R, T] L2 â - âf. L1 ⢠ð *â¦T⦠â f â L1 ⪤[cext2 R, cfull, f] L2. +lemma rex_inv_frees: âR,L1,L2,T. L1 ⪤[R,T] L2 â + âf. L1 ⢠ð *â¦T⦠â f â L1 ⪤[cext2 R,cfull,f] L2. #R #L1 #L2 #T * /3 width=6 by frees_mono, sex_eq_repl_back/ qed-. @@ -29,7 +29,7 @@ qed-. (* Basic_2A1: uses: llpx_sn_dec *) lemma rex_dec: âR. (âL,T1,T2. Decidable (R L T1 T2)) â - âL1,L2,T. Decidable (L1 ⪤[R, T] L2). + âL1,L2,T. Decidable (L1 ⪤[R,T] L2). #R #HR #L1 #L2 #T elim (frees_total L1 T) #f #Hf elim (sex_dec (cext2 R) cfull ⦠L1 L2 f) @@ -40,8 +40,8 @@ qed-. (* Basic_2A1: uses: llpx_sn_bind llpx_sn_bind_O *) theorem rex_bind: âR,p,I,L1,L2,V1,V2,T. - L1 ⪤[R, V1] L2 â L1.â{I}V1 ⪤[R, T] L2.â{I}V2 â - L1 ⪤[R, â{p,I}V1.T] L2. + L1 ⪤[R,V1] L2 â L1.â{I}V1 ⪤[R,T] L2.â{I}V2 â + L1 ⪤[R,â{p,I}V1.T] L2. #R #p #I #L1 #L2 #V1 #V2 #T * #f1 #HV #Hf1 * #f2 #HT #Hf2 lapply (sex_fwd_bind ⦠Hf2) -Hf2 #Hf2 elim (sor_isfin_ex f1 (⫱f2)) /3 width=7 by frees_fwd_isfin, frees_bind, sex_join, isfin_tl, ex2_intro/ @@ -49,15 +49,15 @@ qed. (* Basic_2A1: llpx_sn_flat *) theorem rex_flat: âR,I,L1,L2,V,T. - L1 ⪤[R, V] L2 â L1 ⪤[R, T] L2 â - L1 ⪤[R, â{I}V.T] L2. + L1 ⪤[R,V] L2 â L1 ⪤[R,T] L2 â + L1 ⪤[R,â{I}V.T] L2. #R #I #L1 #L2 #V #T * #f1 #HV #Hf1 * #f2 #HT #Hf2 elim (sor_isfin_ex f1 f2) /3 width=7 by frees_fwd_isfin, frees_flat, sex_join, ex2_intro/ qed. theorem rex_bind_void: âR,p,I,L1,L2,V,T. - L1 ⪤[R, V] L2 â L1.⧠⪤[R, T] L2.⧠â - L1 ⪤[R, â{p,I}V.T] L2. + L1 ⪤[R,V] L2 â L1.⧠⪤[R,T] L2.⧠â + L1 ⪤[R,â{p,I}V.T] L2. #R #p #I #L1 #L2 #V #T * #f1 #HV #Hf1 * #f2 #HT #Hf2 lapply (sex_fwd_bind ⦠Hf2) -Hf2 #Hf2 elim (sor_isfin_ex f1 (⫱f2)) /3 width=7 by frees_fwd_isfin, frees_bind_void, sex_join, isfin_tl, ex2_intro/ @@ -67,23 +67,23 @@ qed. (* Basic_2A1: uses: nllpx_sn_inv_bind nllpx_sn_inv_bind_O *) lemma rnex_inv_bind: âR. (âL,T1,T2. Decidable (R L T1 T2)) â - âp,I,L1,L2,V,T. (L1 ⪤[R, â{p,I}V.T] L2 â â¥) â - (L1 ⪤[R, V] L2 â â¥) ⨠(L1.â{I}V ⪤[R, T] L2.â{I}V â â¥). + âp,I,L1,L2,V,T. (L1 ⪤[R,â{p,I}V.T] L2 â â¥) â + (L1 ⪤[R,V] L2 â â¥) ⨠(L1.â{I}V ⪤[R,T] L2.â{I}V â â¥). #R #HR #p #I #L1 #L2 #V #T #H elim (rex_dec ⦠HR L1 L2 V) /4 width=2 by rex_bind, or_intror, or_introl/ qed-. (* Basic_2A1: uses: nllpx_sn_inv_flat *) lemma rnex_inv_flat: âR. (âL,T1,T2. Decidable (R L T1 T2)) â - âI,L1,L2,V,T. (L1 ⪤[R, â{I}V.T] L2 â â¥) â - (L1 ⪤[R, V] L2 â â¥) ⨠(L1 ⪤[R, T] L2 â â¥). + âI,L1,L2,V,T. (L1 ⪤[R,â{I}V.T] L2 â â¥) â + (L1 ⪤[R,V] L2 â â¥) ⨠(L1 ⪤[R,T] L2 â â¥). #R #HR #I #L1 #L2 #V #T #H elim (rex_dec ⦠HR L1 L2 V) /4 width=1 by rex_flat, or_intror, or_introl/ qed-. lemma rnex_inv_bind_void: âR. (âL,T1,T2. Decidable (R L T1 T2)) â - âp,I,L1,L2,V,T. (L1 ⪤[R, â{p,I}V.T] L2 â â¥) â - (L1 ⪤[R, V] L2 â â¥) ⨠(L1.⧠⪤[R, T] L2.⧠â â¥). + âp,I,L1,L2,V,T. (L1 ⪤[R,â{p,I}V.T] L2 â â¥) â + (L1 ⪤[R,V] L2 â â¥) ⨠(L1.⧠⪤[R,T] L2.⧠â â¥). #R #HR #p #I #L1 #L2 #V #T #H elim (rex_dec ⦠HR L1 L2 V) /4 width=2 by rex_bind_void, or_intror, or_introl/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/cl_restricted_weight.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/cl_restricted_weight.ma index 31c3f7adc..bc5b92945 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/cl_restricted_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/cl_restricted_weight.ma @@ -24,27 +24,27 @@ interpretation "weight (restricted closure)" 'Weight L T = (rfw L T). (* Basic properties *********************************************************) (* Basic_1: was: flt_shift *) -lemma rfw_shift: âp,I,K,V,T. â¯{K.â{I}V, T} < â¯{K, â{p,I}V.T}. +lemma rfw_shift: âp,I,K,V,T. â¯{K.â{I}V,T} < â¯{K,â{p,I}V.T}. normalize /2 width=1 by monotonic_le_plus_r/ qed. -lemma rfw_clear: âp,I1,I2,K,V,T. â¯{K.â¤{I1}, T} < â¯{K, â{p,I2}V.T}. +lemma rfw_clear: âp,I1,I2,K,V,T. â¯{K.â¤{I1},T} < â¯{K,â{p,I2}V.T}. normalize /4 width=1 by monotonic_le_plus_r, le_S_S/ qed. -lemma rfw_tpair_sn: âI,L,V,T. â¯{L, V} < â¯{L, â¡{I}V.T}. +lemma rfw_tpair_sn: âI,L,V,T. â¯{L,V} < â¯{L,â¡{I}V.T}. normalize in ⢠(?â?â?â?â?%%); // qed. -lemma rfw_tpair_dx: âI,L,V,T. â¯{L, T} < â¯{L, â¡{I}V.T}. +lemma rfw_tpair_dx: âI,L,V,T. â¯{L,T} < â¯{L,â¡{I}V.T}. normalize in ⢠(?â?â?â?â?%%); // qed. -lemma rfw_lpair_sn: âI,L,V,T. â¯{L, V} < â¯{L.â{I}V, T}. +lemma rfw_lpair_sn: âI,L,V,T. â¯{L,V} < â¯{L.â{I}V,T}. normalize /3 width=1 by monotonic_lt_plus_l, monotonic_le_plus_r/ qed. -lemma rfw_lpair_dx: âI,L,V,T. â¯{L, T} < â¯{L.â{I}V, T}. +lemma rfw_lpair_dx: âI,L,V,T. â¯{L,T} < â¯{L.â{I}V,T}. normalize /3 width=1 by monotonic_lt_plus_l, monotonic_le_plus_r/ qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/cl_weight.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/cl_weight.ma index a51094adc..af52e35b1 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/cl_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/cl_weight.ma @@ -26,23 +26,23 @@ interpretation "weight (closure)" 'Weight G L T = (fw G L T). (* Basic properties *********************************************************) (* Basic_1: was: flt_shift *) -lemma fw_shift: âp,I,G,K,V,T. â¯{G, K.â{I}V, T} < â¯{G, K, â{p,I}V.T}. +lemma fw_shift: âp,I,G,K,V,T. â¯{G,K.â{I}V,T} < â¯{G,K,â{p,I}V.T}. normalize /2 width=1 by monotonic_le_plus_r/ qed. -lemma fw_clear: âp,I1,I2,G,K,V,T. â¯{G, K.â¤{I1}, T} < â¯{G, K, â{p,I2}V.T}. +lemma fw_clear: âp,I1,I2,G,K,V,T. â¯{G,K.â¤{I1},T} < â¯{G,K,â{p,I2}V.T}. normalize /4 width=1 by monotonic_le_plus_r, le_S_S/ qed. -lemma fw_tpair_sn: âI,G,L,V,T. â¯{G, L, V} < â¯{G, L, â¡{I}V.T}. +lemma fw_tpair_sn: âI,G,L,V,T. â¯{G,L,V} < â¯{G,L,â¡{I}V.T}. normalize in ⢠(?â?â?â?â?â?%%); // qed. -lemma fw_tpair_dx: âI,G,L,V,T. â¯{G, L, T} < â¯{G, L, â¡{I}V.T}. +lemma fw_tpair_dx: âI,G,L,V,T. â¯{G,L,T} < â¯{G,L,â¡{I}V.T}. normalize in ⢠(?â?â?â?â?â?%%); // qed. -lemma fw_lpair_sn: âI,G,L,V,T. â¯{G, L, V} < â¯{G, L.â{I}V, T}. +lemma fw_lpair_sn: âI,G,L,V,T. â¯{G,L,V} < â¯{G,L.â{I}V,T}. normalize /3 width=1 by monotonic_lt_plus_l, monotonic_le_plus_r/ qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/item_sd.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/item_sd.ma deleted file mode 100644 index 8a9ae7183..000000000 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/item_sd.ma +++ /dev/null @@ -1,124 +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 "static_2/syntax/item_sh.ma". - -(* SORT DEGREE **************************************************************) - -(* sort degree specification *) -record sd (h:sh): Type[0] â { - deg : relation nat; (* degree of the sort *) - deg_total: âs. âd. deg s d; (* functional relation axioms *) - deg_mono : âs,d1,d2. deg s d1 â deg s d2 â d1 = d2; - deg_next : âs,d. deg s d â deg (next h s) (âd) (* compatibility condition *) -}. - -(* Notable specifications ***************************************************) - -definition deg_O: relation nat â λs,d. d = 0. - -definition sd_O: âh. sd h â λh. mk_sd h deg_O â¦. -/2 width=2 by le_n_O_to_eq, le_n, ex_intro/ defined. - -(* Basic_2A1: includes: deg_SO_pos *) -inductive deg_SO (h:sh) (s:nat) (s0:nat): predicate nat â -| deg_SO_succ : ân. (next h)^n s0 = s â deg_SO h s s0 (ân) -| deg_SO_zero: ((ân. (next h)^n s0 = s) â â¥) â deg_SO h s s0 0 -. - -fact deg_SO_inv_succ_aux: âh,s,s0,n0. deg_SO h s s0 n0 â ân. n0 = ân â - (next h)^n s0 = s. -#h #s #s0 #n0 * -n0 -[ #n #Hn #x #H destruct // -| #_ #x #H destruct -] -qed-. - -(* Basic_2A1: was: deg_SO_inv_pos *) -lemma deg_SO_inv_succ: âh,s,s0,n. deg_SO h s s0 (ân) â (next h)^n s0 = s. -/2 width=3 by deg_SO_inv_succ_aux/ qed-. - -lemma deg_SO_refl: âh,s. deg_SO h s s 1. -#h #s @(deg_SO_succ ⦠0 ?) // -qed. - -lemma deg_SO_gt: âh,s1,s2. s1 < s2 â deg_SO h s1 s2 0. -#h #s1 #s2 #HK12 @deg_SO_zero * #n elim n -n normalize -[ #H destruct - elim (lt_refl_false ⦠HK12) -| #n #_ #H - lapply (next_lt h ((next h)^n s2)) >H -H #H - lapply (transitive_lt ⦠H HK12) -s1 #H1 - lapply (nexts_le h s2 n) #H2 - lapply (le_to_lt_to_lt ⦠H2 H1) -h -n #H - elim (lt_refl_false ⦠H) -] -qed. - -definition sd_SO: âh. nat â sd h â λh,s. mk_sd h (deg_SO h s) â¦. -[ #s0 - lapply (nexts_dec h s0 s) * - [ * /3 width=2 by deg_SO_succ, ex_intro/ | /4 width=2 by deg_SO_zero, ex_intro/ ] -| #K0 #d1 #d2 * [ #n1 ] #H1 * [1,3: #n2 ] #H2 // - [ < H2 in H1; -H2 #H - lapply (nexts_inj ⦠H) -H #H destruct // - | elim H1 /2 width=2 by ex_intro/ - | elim H2 /2 width=2 by ex_intro/ - ] -| #s0 #n * - [ #d #H destruct elim d -d normalize - /2 width=1 by deg_SO_gt, deg_SO_succ, next_lt/ - | #H1 @deg_SO_zero * #d #H2 destruct - @H1 -H1 @(ex_intro ⦠(âd)) /2 width=1 by sym_eq/ (**) (* explicit constructor *) - ] -] -defined. - -rec definition sd_d (h:sh) (s:nat) (d:nat) on d : sd h â - match d with - [ O â sd_O h - | S d â match d with - [ O â sd_SO h s - | _ â sd_d h (next h s) d - ] - ]. - -(* Basic inversion lemmas ***************************************************) - -lemma deg_inv_pred: âh,o,s,d. deg h o (next h s) (âd) â deg h o s (ââd). -#h #o #s #d #H1 -elim (deg_total h o s) #n #H0 -lapply (deg_next ⦠H0) #H2 -lapply (deg_mono ⦠H1 H2) -H1 -H2 #H >H >S_pred /2 width=2 by ltn_to_ltO/ -qed-. - -lemma deg_inv_prec: âh,o,s,n,d. deg h o ((next h)^n s) (âd) â deg h o s (â(d+n)). -#h #o #s #n elim n -n normalize /3 width=1 by deg_inv_pred/ -qed-. - -(* Basic properties *********************************************************) - -lemma deg_iter: âh,o,s,d,n. deg h o s d â deg h o ((next h)^n s) (d-n). -#h #o #s #d #n elim n -n normalize /3 width=1 by deg_next/ -qed. - -lemma deg_next_SO: âh,o,s,d. deg h o s (âd) â deg h o (next h s) d. -/2 width=1 by deg_next/ qed-. - -lemma sd_d_SS: âh,s,d. sd_d h s (ââd) = sd_d h (next h s) (âd). -// qed. - -lemma sd_d_correct: âh,d,s. deg h (sd_d h s d) s d. -#h #d elim d -d // #d elim d -d /3 width=1 by deg_inv_pred/ -qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/item_sh.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/item_sh.ma deleted file mode 100644 index 9e0b03f73..000000000 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/item_sh.ma +++ /dev/null @@ -1,44 +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/lib/arith.ma". - -(* SORT HIERARCHY ***********************************************************) - -(* sort hierarchy specification *) -record sh: Type[0] â { - next : nat â nat; (* next sort in the hierarchy *) - next_lt: âs. s < next s (* strict monotonicity condition *) -}. - -definition sh_N: sh â mk_sh S â¦. -// defined. - -(* Basic properties *********************************************************) - -lemma nexts_le: âh,s,n. s ⤠(next h)^n s. -#h #s #n elim n -n // normalize #n #IH -lapply (next_lt h ((next h)^n s)) #H -lapply (le_to_lt_to_lt ⦠IH H) -IH -H /2 width=2 by lt_to_le/ -qed. - -lemma nexts_lt: âh,s,n. s < (next h)^(ân) s. -#h #s #n normalize -lapply (nexts_le h s n) #H -@(le_to_lt_to_lt ⦠H) // -qed. - -axiom nexts_dec: âh,s1,s2. Decidable (ân. (next h)^n s1 = s2). - -axiom nexts_inj: âh,s,n1,n2. (next h)^n1 s = (next h)^n2 s â n1 = n2. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma index 855978783..e6d2fcbfc 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma @@ -32,7 +32,7 @@ interpretation "equivalence up to exclusion binders (local environment)" (* Basic properties *********************************************************) -lemma lveq_refl: âL. L ââ§*[0, 0] L. +lemma lveq_refl: âL. L ââ§*[0,0] L. #L elim L -L /2 width=1 by lveq_atom, lveq_bind/ qed. @@ -43,10 +43,10 @@ qed-. (* Basic inversion lemmas ***************************************************) -fact lveq_inv_zero_aux: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +fact lveq_inv_zero_aux: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â 0 = n1 â 0 = n2 â â¨â¨ â§â§ â = L1 & â = L2 - | ââI1,I2,K1,K2. K1 ââ§*[0, 0] K2 & K1.â{I1} = L1 & K2.â{I2} = L2. + | ââI1,I2,K1,K2. K1 ââ§*[0,0] K2 & K1.â{I1} = L1 & K2.â{I2} = L2. #L1 #L2 #n1 #n2 * -L1 -L2 -n1 -n2 [1: /3 width=1 by or_introl, conj/ |2: /3 width=7 by ex3_4_intro, or_intror/ @@ -54,14 +54,14 @@ fact lveq_inv_zero_aux: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â ] qed-. -lemma lveq_inv_zero: âL1,L2. L1 ââ§*[0, 0] L2 â +lemma lveq_inv_zero: âL1,L2. L1 ââ§*[0,0] L2 â â¨â¨ â§â§ â = L1 & â = L2 - | ââI1,I2,K1,K2. K1 ââ§*[0, 0] K2 & K1.â{I1} = L1 & K2.â{I2} = L2. + | ââI1,I2,K1,K2. K1 ââ§*[0,0] K2 & K1.â{I1} = L1 & K2.â{I2} = L2. /2 width=5 by lveq_inv_zero_aux/ qed-. -fact lveq_inv_succ_sn_aux: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +fact lveq_inv_succ_sn_aux: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â âm1. âm1 = n1 â - ââK1. K1 ââ§*[m1, 0] L2 & K1.⧠= L1 & 0 = n2. + ââK1. K1 ââ§*[m1,0] L2 & K1.⧠= L1 & 0 = n2. #L1 #L2 #n1 #n2 * -L1 -L2 -n1 -n2 [1: #m #H destruct |2: #I1 #I2 #K1 #K2 #_ #m #H destruct @@ -69,18 +69,18 @@ fact lveq_inv_succ_sn_aux: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â ] qed-. -lemma lveq_inv_succ_sn: âL1,K2,n1,n2. L1 ââ§*[ân1, n2] K2 â - ââK1. K1 ââ§*[n1, 0] K2 & K1.⧠= L1 & 0 = n2. +lemma lveq_inv_succ_sn: âL1,K2,n1,n2. L1 ââ§*[ân1,n2] K2 â + ââK1. K1 ââ§*[n1,0] K2 & K1.⧠= L1 & 0 = n2. /2 width=3 by lveq_inv_succ_sn_aux/ qed-. -lemma lveq_inv_succ_dx: âK1,L2,n1,n2. K1 ââ§*[n1, ân2] L2 â - ââK2. K1 ââ§*[0, n2] K2 & K2.⧠= L2 & 0 = n1. +lemma lveq_inv_succ_dx: âK1,L2,n1,n2. K1 ââ§*[n1,ân2] L2 â + ââK2. K1 ââ§*[0,n2] K2 & K2.⧠= L2 & 0 = n1. #K1 #L2 #n1 #n2 #H lapply (lveq_sym ⦠H) -H #H elim (lveq_inv_succ_sn ⦠H) -H /3 width=3 by lveq_sym, ex3_intro/ qed-. -fact lveq_inv_succ_aux: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +fact lveq_inv_succ_aux: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â âm1,m2. âm1 = n1 â âm2 = n2 â â¥. #L1 #L2 #n1 #n2 * -L1 -L2 -n1 -n2 [1: #m1 #m2 #H1 #H2 destruct @@ -89,17 +89,17 @@ fact lveq_inv_succ_aux: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â ] qed-. -lemma lveq_inv_succ: âL1,L2,n1,n2. L1 ââ§*[ân1, ân2] L2 â â¥. +lemma lveq_inv_succ: âL1,L2,n1,n2. L1 ââ§*[ân1,ân2] L2 â â¥. /2 width=9 by lveq_inv_succ_aux/ qed-. (* Advanced inversion lemmas ************************************************) -lemma lveq_inv_bind: âI1,I2,K1,K2. K1.â{I1} ââ§*[0, 0] K2.â{I2} â K1 ââ§*[0, 0] K2. +lemma lveq_inv_bind: âI1,I2,K1,K2. K1.â{I1} ââ§*[0,0] K2.â{I2} â K1 ââ§*[0,0] K2. #I1 #I2 #K1 #K2 #H elim (lveq_inv_zero ⦠H) -H * [| #Z1 #Z2 #Y1 #Y2 #HY ] #H1 #H2 destruct // qed-. -lemma lveq_inv_atom_atom: ân1,n2. â ââ§*[n1, n2] â â â§â§ 0 = n1 & 0 = n2. +lemma lveq_inv_atom_atom: ân1,n2. â ââ§*[n1,n2] â â â§â§ 0 = n1 & 0 = n2. * [2: #n1 ] * [2,4: #n2 ] #H [ elim (lveq_inv_succ ⦠H) | elim (lveq_inv_succ_dx ⦠H) -H #Y #_ #H1 #H2 destruct @@ -108,8 +108,8 @@ lemma lveq_inv_atom_atom: ân1,n2. â ââ§*[n1, n2] â â â§â§ 0 = n1 & ] qed-. -lemma lveq_inv_bind_atom: âI1,K1,n1,n2. K1.â{I1} ââ§*[n1, n2] â â - ââm1. K1 ââ§*[m1, 0] â & BUnit Void = I1 & âm1 = n1 & 0 = n2. +lemma lveq_inv_bind_atom: âI1,K1,n1,n2. K1.â{I1} ââ§*[n1,n2] â â + ââm1. K1 ââ§*[m1,0] â & BUnit Void = I1 & âm1 = n1 & 0 = n2. #I1 #K1 * [2: #n1 ] * [2,4: #n2 ] #H [ elim (lveq_inv_succ ⦠H) | elim (lveq_inv_succ_dx ⦠H) -H #Y #_ #H1 #H2 destruct @@ -121,16 +121,16 @@ lemma lveq_inv_bind_atom: âI1,K1,n1,n2. K1.â{I1} ââ§*[n1, n2] â â ] qed-. -lemma lveq_inv_atom_bind: âI2,K2,n1,n2. â ââ§*[n1, n2] K2.â{I2} â - ââm2. â ââ§*[0, m2] K2 & BUnit Void = I2 & 0 = n1 & âm2 = n2. +lemma lveq_inv_atom_bind: âI2,K2,n1,n2. â ââ§*[n1,n2] K2.â{I2} â + ââm2. â ââ§*[0,m2] K2 & BUnit Void = I2 & 0 = n1 & âm2 = n2. #I2 #K2 #n1 #n2 #H lapply (lveq_sym ⦠H) -H #H elim (lveq_inv_bind_atom ⦠H) -H /3 width=3 by lveq_sym, ex4_intro/ qed-. -lemma lveq_inv_pair_pair: âI1,I2,K1,K2,V1,V2,n1,n2. K1.â{I1}V1 ââ§*[n1, n2] K2.â{I2}V2 â - â§â§ K1 ââ§*[0, 0] K2 & 0 = n1 & 0 = n2. +lemma lveq_inv_pair_pair: âI1,I2,K1,K2,V1,V2,n1,n2. K1.â{I1}V1 ââ§*[n1,n2] K2.â{I2}V2 â + â§â§ K1 ââ§*[0,0] K2 & 0 = n1 & 0 = n2. #I1 #I2 #K1 #K2 #V1 #V2 * [2: #n1 ] * [2,4: #n2 ] #H [ elim (lveq_inv_succ ⦠H) | elim (lveq_inv_succ_dx ⦠H) -H #Y #_ #H1 #H2 destruct @@ -142,14 +142,14 @@ lemma lveq_inv_pair_pair: âI1,I2,K1,K2,V1,V2,n1,n2. K1.â{I1}V1 ââ§*[n1, n ] qed-. -lemma lveq_inv_void_succ_sn: âL1,L2,n1,n2. L1.⧠ââ§*[ân1, n2] L2 â - â§â§ L1 â â§*[n1, 0] L2 & 0 = n2. +lemma lveq_inv_void_succ_sn: âL1,L2,n1,n2. L1.⧠ââ§*[ân1,n2] L2 â + â§â§ L1 â â§*[n1,0] L2 & 0 = n2. #L1 #L2 #n1 #n2 #H elim (lveq_inv_succ_sn ⦠H) -H #Y #HY #H1 #H2 destruct /2 width=1 by conj/ qed-. -lemma lveq_inv_void_succ_dx: âL1,L2,n1,n2. L1 ââ§*[n1, ân2] L2.⧠â - â§â§ L1 â â§*[0, n2] L2 & 0 = n1. +lemma lveq_inv_void_succ_dx: âL1,L2,n1,n2. L1 ââ§*[n1,ân2] L2.⧠â + â§â§ L1 â â§*[0,n2] L2 & 0 = n1. #L1 #L2 #n1 #n2 #H lapply (lveq_sym ⦠H) -H #H elim (lveq_inv_void_succ_sn ⦠H) -H @@ -158,19 +158,19 @@ qed-. (* Advanced forward lemmas **************************************************) -lemma lveq_fwd_gen: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +lemma lveq_fwd_gen: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â â¨â¨ 0 = n1 | 0 = n2. #L1 #L2 * [2: #n1 ] * [2,4: #n2 ] #H [ elim (lveq_inv_succ ⦠H) ] /2 width=1 by or_introl, or_intror/ qed-. -lemma lveq_fwd_pair_sn: âI1,K1,L2,V1,n1,n2. K1.â{I1}V1 ââ§*[n1, n2] L2 â 0 = n1. +lemma lveq_fwd_pair_sn: âI1,K1,L2,V1,n1,n2. K1.â{I1}V1 ââ§*[n1,n2] L2 â 0 = n1. #I1 #K1 #L2 #V1 * [2: #n1 ] // * [2: #n2 ] #H [ elim (lveq_inv_succ ⦠H) | elim (lveq_inv_succ_sn ⦠H) -H #Y #_ #H1 #H2 destruct ] qed-. -lemma lveq_fwd_pair_dx: âI2,L1,K2,V2,n1,n2. L1 ââ§*[n1, n2] K2.â{I2}V2 â 0 = n2. +lemma lveq_fwd_pair_dx: âI2,L1,K2,V2,n1,n2. L1 ââ§*[n1,n2] K2.â{I2}V2 â 0 = n2. /3 width=6 by lveq_fwd_pair_sn, lveq_sym/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_length.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_length.ma index 104d2b8b9..8ae0a99be 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_length.ma @@ -19,7 +19,7 @@ include "static_2/syntax/lveq.ma". (* Properties with length for local environments ****************************) -lemma lveq_length_eq: âL1,L2. |L1| = |L2| â L1 ââ§*[0, 0] L2. +lemma lveq_length_eq: âL1,L2. |L1| = |L2| â L1 ââ§*[0,0] L2. #L1 elim L1 -L1 [ #Y2 #H >(length_inv_zero_sn ⦠H) -Y2 /2 width=3 by lveq_atom, ex_intro/ | #K1 #I1 #IH #Y2 #H @@ -30,69 +30,69 @@ qed. (* Forward lemmas with length for local environments ************************) -lemma lveq_fwd_length_le_sn: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â n1 ⤠|L1|. +lemma lveq_fwd_length_le_sn: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â n1 ⤠|L1|. #L1 #L2 #n1 #n2 #H elim H -L1 -L2 -n1 -n2 normalize /2 width=1 by le_S_S/ qed-. -lemma lveq_fwd_length_le_dx: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â n2 ⤠|L2|. +lemma lveq_fwd_length_le_dx: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â n2 ⤠|L2|. #L1 #L2 #n1 #n2 #H elim H -L1 -L2 -n1 -n2 normalize /2 width=1 by le_S_S/ qed-. -lemma lveq_fwd_length: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +lemma lveq_fwd_length: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â â§â§ |L1|-|L2| = n1 & |L2|-|L1| = n2. #L1 #L2 #n1 #n2 #H elim H -L1 -L2 -n1 -n2 /2 width=1 by conj/ #K1 #K2 #n #_ * #H1 #H2 >length_bind /3 width=1 by minus_Sn_m, conj/ qed-. -lemma lveq_length_fwd_sn: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â |L1| ⤠|L2| â 0 = n1. +lemma lveq_length_fwd_sn: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â |L1| ⤠|L2| â 0 = n1. #L1 #L2 #n1 #n2 #H #HL elim (lveq_fwd_length ⦠H) -H >(eq_minus_O ⦠HL) // qed-. -lemma lveq_length_fwd_dx: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â |L2| ⤠|L1| â 0 = n2. +lemma lveq_length_fwd_dx: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â |L2| ⤠|L1| â 0 = n2. #L1 #L2 #n1 #n2 #H #HL elim (lveq_fwd_length ⦠H) -H >(eq_minus_O ⦠HL) // qed-. -lemma lveq_inj_length: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +lemma lveq_inj_length: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â |L1| = |L2| â â§â§ 0 = n1 & 0 = n2. #L1 #L2 #n1 #n2 #H #HL elim (lveq_fwd_length ⦠H) -H >HL -HL /2 width=1 by conj/ qed-. -lemma lveq_fwd_length_plus: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +lemma lveq_fwd_length_plus: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â |L1| + n2 = |L2| + n1. #L1 #L2 #n1 #n2 #H elim H -L1 -L2 -n1 -n2 normalize /2 width=2 by injective_plus_r/ qed-. -lemma lveq_fwd_length_eq: âL1,L2. L1 ââ§*[0, 0] L2 â |L1| = |L2|. +lemma lveq_fwd_length_eq: âL1,L2. L1 ââ§*[0,0] L2 â |L1| = |L2|. /3 width=2 by lveq_fwd_length_plus, injective_plus_l/ qed-. -lemma lveq_fwd_length_minus: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â +lemma lveq_fwd_length_minus: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â |L1| - n1 = |L2| - n2. /3 width=3 by lveq_fwd_length_plus, lveq_fwd_length_le_dx, lveq_fwd_length_le_sn, plus_to_minus_2/ qed-. lemma lveq_fwd_abst_bind_length_le: âI1,I2,L1,L2,V1,n1,n2. - L1.â{I1}V1 ââ§*[n1, n2] L2.â{I2} â |L1| ⤠|L2|. + L1.â{I1}V1 ââ§*[n1,n2] L2.â{I2} â |L1| ⤠|L2|. #I1 #I2 #L1 #L2 #V1 #n1 #n2 #HL lapply (lveq_fwd_pair_sn ⦠HL) #H destruct elim (lveq_fwd_length ⦠HL) -HL >length_bind >length_bind // qed-. lemma lveq_fwd_bind_abst_length_le: âI1,I2,L1,L2,V2,n1,n2. - L1.â{I1} ââ§*[n1, n2] L2.â{I2}V2 â |L2| ⤠|L1|. + L1.â{I1} ââ§*[n1,n2] L2.â{I2}V2 â |L2| ⤠|L1|. /3 width=6 by lveq_fwd_abst_bind_length_le, lveq_sym/ qed-. (* Inversion lemmas with length for local environments **********************) -lemma lveq_inv_void_dx_length: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2.⧠â |L1| ⤠|L2| â - ââm2. L1 â â§*[n1, m2] L2 & 0 = n1 & âm2 = n2. +lemma lveq_inv_void_dx_length: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2.⧠â |L1| ⤠|L2| â + ââm2. L1 â â§*[n1,m2] L2 & 0 = n1 & âm2 = n2. #L1 #L2 #n1 #n2 #H #HL12 lapply (lveq_fwd_length_plus ⦠H) normalize >plus_n_Sm #H0 lapply (plus2_inv_le_sn ⦠H0 HL12) -H0 -HL12 #H0 @@ -100,8 +100,8 @@ elim (le_inv_S1 ⦠H0) -H0 #m2 #_ #H0 destruct elim (lveq_inv_void_succ_dx ⦠H) -H /2 width=3 by ex3_intro/ qed-. -lemma lveq_inv_void_sn_length: âL1,L2,n1,n2. L1.⧠ââ§*[n1, n2] L2 â |L2| ⤠|L1| â - ââm1. L1 â â§*[m1, n2] L2 & âm1 = n1 & 0 = n2. +lemma lveq_inv_void_sn_length: âL1,L2,n1,n2. L1.⧠ââ§*[n1,n2] L2 â |L2| ⤠|L1| â + ââm1. L1 â â§*[m1,n2] L2 & âm1 = n1 & 0 = n2. #L1 #L2 #n1 #n2 #H #HL lapply (lveq_sym ⦠H) -H #H elim (lveq_inv_void_dx_length ⦠H HL) -H -HL diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_lveq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_lveq.ma index 8ac40a55f..c0c8cf1ab 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_lveq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq_lveq.ma @@ -18,16 +18,16 @@ include "static_2/syntax/lveq_length.ma". (* Main inversion lemmas ****************************************************) -theorem lveq_inv_bind: âK1,K2. K1 ââ§*[0, 0] K2 â - âI1,I2,m1,m2. K1.â{I1} ââ§*[m1, m2] K2.â{I2} â +theorem lveq_inv_bind: âK1,K2. K1 ââ§*[0,0] K2 â + âI1,I2,m1,m2. K1.â{I1} ââ§*[m1,m2] K2.â{I2} â â§â§ 0 = m1 & 0 = m2. #K1 #K2 #HK #I1 #I2 #m1 #m2 #H lapply (lveq_fwd_length_eq ⦠HK) -HK #HK elim (lveq_inj_length ⦠H) -H normalize /3 width=1 by conj, eq_f/ qed-. -theorem lveq_inj: âL1,L2,n1,n2. L1 ââ§*[n1, n2] L2 â - âm1,m2. L1 ââ§*[m1, m2] L2 â +theorem lveq_inj: âL1,L2,n1,n2. L1 ââ§*[n1,n2] L2 â + âm1,m2. L1 ââ§*[m1,m2] L2 â â§â§ n1 = m1 & n2 = m2. #L1 #L2 #n1 #n2 #Hn #m1 #m2 #Hm elim (lveq_fwd_length ⦠Hn) -Hn #H1 #H2 destruct @@ -36,8 +36,8 @@ elim (lveq_fwd_length ⦠Hm) -Hm #H1 #H2 destruct qed-. theorem lveq_inj_void_sn_ge: âK1,K2. |K2| ⤠|K1| â - ân1,n2. K1 ââ§*[n1, n2] K2 â - âm1,m2. K1.⧠ââ§*[m1, m2] K2 â + ân1,n2. K1 ââ§*[n1,n2] K2 â + âm1,m2. K1.⧠ââ§*[m1,m2] K2 â â§â§ ân1 = m1 & 0 = m2 & 0 = n2. #L1 #L2 #HL #n1 #n2 #Hn #m1 #m2 #Hm elim (lveq_fwd_length ⦠Hn) -Hn #H1 #H2 destruct @@ -47,7 +47,7 @@ elim (lveq_fwd_length ⦠Hm) -Hm #H1 #H2 destruct qed-. theorem lveq_inj_void_dx_le: âK1,K2. |K1| ⤠|K2| â - ân1,n2. K1 ââ§*[n1, n2] K2 â - âm1,m2. K1 ââ§*[m1, m2] K2.⧠â + ân1,n2. K1 ââ§*[n1,n2] K2 â + âm1,m2. K1 ââ§*[m1,m2] K2.⧠â â§â§ ân2 = m2 & 0 = m1 & 0 = n1. /3 width=5 by lveq_inj_void_sn_ge, lveq_sym/ qed-. (* auto: 2x lveq_sym *) diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/sd.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/sd.ma new file mode 100644 index 000000000..8a9ae7183 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/sd.ma @@ -0,0 +1,124 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "static_2/syntax/item_sh.ma". + +(* SORT DEGREE **************************************************************) + +(* sort degree specification *) +record sd (h:sh): Type[0] â { + deg : relation nat; (* degree of the sort *) + deg_total: âs. âd. deg s d; (* functional relation axioms *) + deg_mono : âs,d1,d2. deg s d1 â deg s d2 â d1 = d2; + deg_next : âs,d. deg s d â deg (next h s) (âd) (* compatibility condition *) +}. + +(* Notable specifications ***************************************************) + +definition deg_O: relation nat â λs,d. d = 0. + +definition sd_O: âh. sd h â λh. mk_sd h deg_O â¦. +/2 width=2 by le_n_O_to_eq, le_n, ex_intro/ defined. + +(* Basic_2A1: includes: deg_SO_pos *) +inductive deg_SO (h:sh) (s:nat) (s0:nat): predicate nat â +| deg_SO_succ : ân. (next h)^n s0 = s â deg_SO h s s0 (ân) +| deg_SO_zero: ((ân. (next h)^n s0 = s) â â¥) â deg_SO h s s0 0 +. + +fact deg_SO_inv_succ_aux: âh,s,s0,n0. deg_SO h s s0 n0 â ân. n0 = ân â + (next h)^n s0 = s. +#h #s #s0 #n0 * -n0 +[ #n #Hn #x #H destruct // +| #_ #x #H destruct +] +qed-. + +(* Basic_2A1: was: deg_SO_inv_pos *) +lemma deg_SO_inv_succ: âh,s,s0,n. deg_SO h s s0 (ân) â (next h)^n s0 = s. +/2 width=3 by deg_SO_inv_succ_aux/ qed-. + +lemma deg_SO_refl: âh,s. deg_SO h s s 1. +#h #s @(deg_SO_succ ⦠0 ?) // +qed. + +lemma deg_SO_gt: âh,s1,s2. s1 < s2 â deg_SO h s1 s2 0. +#h #s1 #s2 #HK12 @deg_SO_zero * #n elim n -n normalize +[ #H destruct + elim (lt_refl_false ⦠HK12) +| #n #_ #H + lapply (next_lt h ((next h)^n s2)) >H -H #H + lapply (transitive_lt ⦠H HK12) -s1 #H1 + lapply (nexts_le h s2 n) #H2 + lapply (le_to_lt_to_lt ⦠H2 H1) -h -n #H + elim (lt_refl_false ⦠H) +] +qed. + +definition sd_SO: âh. nat â sd h â λh,s. mk_sd h (deg_SO h s) â¦. +[ #s0 + lapply (nexts_dec h s0 s) * + [ * /3 width=2 by deg_SO_succ, ex_intro/ | /4 width=2 by deg_SO_zero, ex_intro/ ] +| #K0 #d1 #d2 * [ #n1 ] #H1 * [1,3: #n2 ] #H2 // + [ < H2 in H1; -H2 #H + lapply (nexts_inj ⦠H) -H #H destruct // + | elim H1 /2 width=2 by ex_intro/ + | elim H2 /2 width=2 by ex_intro/ + ] +| #s0 #n * + [ #d #H destruct elim d -d normalize + /2 width=1 by deg_SO_gt, deg_SO_succ, next_lt/ + | #H1 @deg_SO_zero * #d #H2 destruct + @H1 -H1 @(ex_intro ⦠(âd)) /2 width=1 by sym_eq/ (**) (* explicit constructor *) + ] +] +defined. + +rec definition sd_d (h:sh) (s:nat) (d:nat) on d : sd h â + match d with + [ O â sd_O h + | S d â match d with + [ O â sd_SO h s + | _ â sd_d h (next h s) d + ] + ]. + +(* Basic inversion lemmas ***************************************************) + +lemma deg_inv_pred: âh,o,s,d. deg h o (next h s) (âd) â deg h o s (ââd). +#h #o #s #d #H1 +elim (deg_total h o s) #n #H0 +lapply (deg_next ⦠H0) #H2 +lapply (deg_mono ⦠H1 H2) -H1 -H2 #H >H >S_pred /2 width=2 by ltn_to_ltO/ +qed-. + +lemma deg_inv_prec: âh,o,s,n,d. deg h o ((next h)^n s) (âd) â deg h o s (â(d+n)). +#h #o #s #n elim n -n normalize /3 width=1 by deg_inv_pred/ +qed-. + +(* Basic properties *********************************************************) + +lemma deg_iter: âh,o,s,d,n. deg h o s d â deg h o ((next h)^n s) (d-n). +#h #o #s #d #n elim n -n normalize /3 width=1 by deg_next/ +qed. + +lemma deg_next_SO: âh,o,s,d. deg h o s (âd) â deg h o (next h s) d. +/2 width=1 by deg_next/ qed-. + +lemma sd_d_SS: âh,s,d. sd_d h s (ââd) = sd_d h (next h s) (âd). +// qed. + +lemma sd_d_correct: âh,d,s. deg h (sd_d h s d) s d. +#h #d elim d -d // #d elim d -d /3 width=1 by deg_inv_pred/ +qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma new file mode 100644 index 000000000..bb7aacd2c --- /dev/null +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/sh.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 "ground_2/lib/arith.ma". +include "static_2/notation/functions/upspoon_2.ma". + +(* SORT HIERARCHY ***********************************************************) + +(* sort hierarchy specification *) +record sh: Type[0] â { + next: nat â nat (* next sort in the hierarchy *) +}. + +interpretation "next sort (sort hierarchy)" + 'UpSpoon h s = (next h s). diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/sh_lt.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/sh_lt.ma new file mode 100644 index 000000000..459d4d16b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/sh_lt.ma @@ -0,0 +1,36 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "static_2/syntax/sort.ma". + +(* SORT HIERARCHY ***********************************************************) + +record is_lt (h): Prop â +{ + next_lt: âs. s < ⫯[h]s (* strict monotonicity condition *) +}. + +(* Basic properties *********************************************************) + +lemma nexts_le (h): is_lt h â âs,n. s ⤠(next h)^n s. +#h #Hh #s #n elim n -n [ // ] normalize #n #IH +lapply (next_lt ⦠Hh ((next h)^n s)) #H +lapply (le_to_lt_to_lt ⦠IH H) -IH -H /2 width=2 by lt_to_le/ +qed. + +lemma nexts_lt (h): is_lt h â âs,n. s < (next h)^(ân) s. +#h #Hh #s #n normalize +lapply (nexts_le ⦠Hh s n) #H +@(le_to_lt_to_lt ⦠H) /2 width=1 by next_lt/ +qed.