]> matita.cs.unibo.it Git - helm.git/commitdiff
- notation for the exclusion binder in local envirinments
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 20 Apr 2017 15:19:53 +0000 (15:19 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 20 Apr 2017 15:19:53 +0000 (15:19 +0000)
- advances on lfsx

12 files changed:
matita/matita/contribs/lambdadelta/basic_2/etc/notation/dxpair2_3.etc [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/names.txt
matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxabbr_2.ma
matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxabst_2.ma
matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxbind1_2.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxbind2_3.ma
matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxvoid_1.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/functions/snbind1_2.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/functions/snvoid_1.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfsx_lfsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpx_lfdeq.ma
matita/matita/contribs/lambdadelta/basic_2/static/lfxs_lfxs.ma

diff --git a/matita/matita/contribs/lambdadelta/basic_2/etc/notation/dxpair2_3.etc b/matita/matita/contribs/lambdadelta/basic_2/etc/notation/dxpair2_3.etc
new file mode 100644 (file)
index 0000000..77e894d
--- /dev/null
@@ -0,0 +1,3 @@
+notation > "hvbox( L . break ②{ term 46 I } break term 47 T1 )"
+ non associative with precedence 46
+ for @{ 'DxBind2 $L $I $T1 }.
index a1cb0e0d1ffd934e32782e0975d176485bed39f4..fbf3612a6a7e8a7eaa03b618b5c878efa4b5c686 100644 (file)
@@ -44,11 +44,13 @@ F: boolean false
 T: boolean true
 
 a: application
-b: binder
+b: generic binder with one argument 
 d: abbreviation
-f: flat
-l: abstraction
+f: generic flat with one argument
+l: typed abstraction
 n: native type annotation
+u: generic binder with zero argument
+x: exclusion
 
 NAMING CONVENTIONS FOR TRANSFORMATIONS AND RELATED FORMS
 
index 80ba76465c8bc72485d1919d59e0a490d10332f6..5f6319bd20c0d7364d348bfbde231cea38b45b73 100644 (file)
@@ -15,5 +15,5 @@
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
 notation "hvbox( L . break ⓓ T1 )"
- left associative with precedence 48
+ left associative with precedence 49
  for @{ 'DxAbbr $L $T1 }.
index 5455e678e33fce6a4dd8ebfb25f706b66c313920..b3d909641fcfde2dcae19acb9f0deb841f92c7d2 100644 (file)
@@ -15,5 +15,5 @@
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
 notation "hvbox( L . break ⓛ T1 )"
- left associative with precedence 49
+ left associative with precedence 50
  for @{ 'DxAbst $L $T1 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxbind1_2.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxbind1_2.ma
new file mode 100644 (file)
index 0000000..e4f48e7
--- /dev/null
@@ -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( L . break ⓤ { term 46 I } )"
+ non associative with precedence 46
+ for @{ 'DxBind1 $L $I }.
index b276334f1909e6a9d07256b838e1040b5acc9d75..fc371c28579cde20d2ca9b72f6498adbc7cb28ce 100644 (file)
 
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
-notation > "hvbox( L . break ②{ term 46 I } break term 47 T1 )"
- non associative with precedence 46
- for @{ 'DxBind2 $L $I $T1 }.
-
 notation "hvbox( L . break ⓑ { term 46 I } break term 48 T1 )"
  non associative with precedence 47
  for @{ 'DxBind2 $L $I $T1 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxvoid_1.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/constructors/dxvoid_1.ma
new file mode 100644 (file)
index 0000000..34ad27e
--- /dev/null
@@ -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( L . ⓧ )"
+ non associative with precedence 48
+ for @{ 'DxVoid $L }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/functions/snbind1_2.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/functions/snbind1_2.ma
new file mode 100644 (file)
index 0000000..aaaf813
--- /dev/null
@@ -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 I } . break term 55 L )"
+ non associative with precedence 55
+ for @{ 'SnBind1 $I $L }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/functions/snvoid_1.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/functions/snvoid_1.ma
new file mode 100644 (file)
index 0000000..36522d2
--- /dev/null
@@ -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 55 L )"
+ non associative with precedence 55
+ for @{ 'SnVoid $L }.
index 9664ec0a3256d559b960a7c2c2afa4f593d2f26b..3d547a49cb67dbde8ad4736fd1b5014db1a02909 100644 (file)
@@ -44,7 +44,7 @@ lemma lfsx_fwd_pair_sn: ∀h,o,I,G,L,V,T. G ⊢ ⬈*[h, o, ②{I}V.T] 𝐒⦃L
 #h #o #I #G #L #V #T #H @(lfsx_ind … H) -L
 #L1 #_ #IHL1 @lfsx_intro
 #L2 #H #HnL12 elim (lfpx_pair_sn_split … o I … T H) -H
-/6 width=4 by lfsx_lfdeq_trans, lfdeq_trans, lfdeq_fwd_pair_sn/
+/6 width=3 by lfsx_lfdeq_trans, lfdeq_trans, lfdeq_fwd_pair_sn/
 qed-.
 
 (* Basic_2A1: uses: lsx_fwd_flat_dx *)
@@ -53,7 +53,7 @@ lemma lfsx_fwd_flat_dx: ∀h,o,I,G,L,V,T. G ⊢ ⬈*[h, o, ⓕ{I}V.T] 𝐒⦃L
 #h #o #I #G #L #V #T #H @(lfsx_ind … H) -L
 #L1 #_ #IHL1 @lfsx_intro
 #L2 #H #HnL12 elim (lfpx_flat_dx_split … o I … V … H) -H
-/6 width=4 by lfsx_lfdeq_trans, lfdeq_trans, lfdeq_fwd_flat_dx/
+/6 width=3 by lfsx_lfdeq_trans, lfdeq_trans, lfdeq_fwd_flat_dx/
 qed-.
 
 (* Advanced inversion lemmas ************************************************)
index ea1e66badc87d580cf86da7a66e0b48b138b2f77..ec9343106fa87fbc96c8321c5c72b6995a177ae5 100644 (file)
@@ -30,6 +30,10 @@ lemma lfpx_flat_dx_split: ∀h,o,I,G,L1,L2,V,T. ⦃G, L1⦄ ⊢ ⬈[h, T] L2 →
                           ∃∃L. ⦃G, L1⦄ ⊢ ⬈[h, ⓕ{I}V.T] L & L ≡[h, o, T] L2.
 /3 width=5 by lfpx_frees_conf, lfxs_flat_dx_split/ qed-.
 
+lemma lfpx_bind_dx_split: ∀h,o,p,I,G,L1,L2,V1,T. ⦃G, L1.ⓑ{I}V1⦄ ⊢ ⬈[h, T] L2 →
+                          ∃∃L,V. ⦃G, L1⦄ ⊢ ⬈[h, ⓑ{p,I}V1.T] L & L.ⓑ{I}V ≡[h, o, T] L2 & ⦃G, L1⦄ ⊢ V1 ⬈[h] V.
+/3 width=5 by lfpx_frees_conf, lfxs_bind_dx_split/ qed-.
+
 lemma cpx_tdeq_conf_lexs: ∀h,o,G. R_confluent2_lfxs … (cpx h G) (cdeq h o) (cpx h G) (cdeq h o).
 #h #o #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
 [ #G #L0 #s0 #X0 #H0 #L1 #HL01 #L2 #HL02
index 78b1c526b359932c807b480cd7f903a91e6396ec..4cf5505ccbce0d2aa2a09af987392592d932b7ba 100644 (file)
@@ -70,6 +70,25 @@ elim (HR … Hf … H) -HR -Hf -H
 /4 width=7 by sle_lexs_trans, ex2_intro/
 qed-.
 
+lemma lfxs_bind_dx_split: ∀R1,R2. (∀L. reflexive … (R1 L)) → (∀L. reflexive … (R2 L)) →
+                          lexs_frees_confluent … R1 cfull →
+                          ∀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
+lapply(frees_mono … H … Hf) -H #H2
+lapply (tl_eq_repl … H2) -H2 #H2
+lapply (sor_eq_repl_back2 … Hy … H2) -y2 #Hy
+lapply (sor_inv_sle_dx … Hy) -y1 #Hfg
+lapply (sle_inv_tl_sn … Hfg) -Hfg #Hfg
+elim (lexs_sle_split … HR1 HR2 … HL12 … Hfg) -HL12 #Y #H #HL2
+lapply (sle_lexs_trans … H … Hfg) // #H0
+elim (lexs_inv_next1 … H) -H #L #V #HL1 #HV0 #H destruct
+elim (HR … Hf … H0) -HR -Hf -H0
+/4 width=7 by sle_lexs_trans, ex3_2_intro, ex2_intro/
+qed-.
+
 (* Main properties **********************************************************)
 
 (* Basic_2A1: uses: llpx_sn_bind llpx_sn_bind_O *)