]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/static_2/static/frees.ma
more additions and corrections for the article
[helm.git] / matita / matita / contribs / lambdadelta / static_2 / static / frees.ma
index 054003f831a0538deb8b716e7e22b3de61ae5321..a312c25256552dbf99cd59ef32a61603f7a5cded 100644 (file)
@@ -13,7 +13,7 @@
 (**************************************************************************)
 
 include "ground_2/relocation/rtmap_sor.ma".
-include "static_2/notation/relations/freestar_3.ma".
+include "static_2/notation/relations/freeplus_3.ma".
 include "static_2/syntax/lenv.ma".
 
 (* CONTEXT-SENSITIVE FREE VARIABLES *****************************************)
@@ -35,11 +35,11 @@ inductive frees: relation3 lenv term rtmap โ‰
 
 interpretation
    "context-sensitive free variables (term)"
-   'FreeStar L T f = (frees L T f).
+   'FreePlus L T f = (frees L T f).
 
 (* Basic inversion lemmas ***************************************************)
 
-fact frees_inv_sort_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€x. X = โ‹†x โ†’ ๐ˆโฆƒfโฆ„.
+fact frees_inv_sort_aux: โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€x. X = โ‹†x โ†’ ๐ˆโฆƒfโฆ„.
 #L #X #f #H elim H -f -L -X //
 [ #f #i #_ #x #H destruct
 | #f #_ #L #V #_ #_ #x #H destruct
@@ -50,11 +50,12 @@ fact frees_inv_sort_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€x. X = โ‹†x 
 ]
 qed-.
 
-lemma frees_inv_sort: โˆ€f,L,s. L โŠข ๐…*โฆƒโ‹†sโฆ„ โ‰˜ f โ†’ ๐ˆโฆƒfโฆ„.
+lemma frees_inv_sort: โˆ€f,L,s. L โŠข ๐…+โฆƒโ‹†sโฆ„ โ‰˜ f โ†’ ๐ˆโฆƒfโฆ„.
 /2 width=5 by frees_inv_sort_aux/ qed-.
 
-fact frees_inv_atom_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€i. L = โ‹† โ†’ X = #i โ†’
-                         โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โซฏ*[i]โ†‘g.
+fact frees_inv_atom_aux:
+     โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€i. L = โ‹† โ†’ X = #i โ†’
+     โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โซฏ*[i]โ†‘g.
 #f #L #X #H elim H -f -L -X
 [ #f #L #s #_ #j #_ #H destruct
 | #f #i #Hf #j #_ #H destruct /2 width=3 by ex2_intro/
@@ -67,11 +68,12 @@ fact frees_inv_atom_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€i. L = โ‹† 
 ]
 qed-.
 
-lemma frees_inv_atom: โˆ€f,i. โ‹† โŠข ๐…*โฆƒ#iโฆ„ โ‰˜ f โ†’ โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โซฏ*[i]โ†‘g.
+lemma frees_inv_atom: โˆ€f,i. โ‹† โŠข ๐…+โฆƒ#iโฆ„ โ‰˜ f โ†’ โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โซฏ*[i]โ†‘g.
 /2 width=5 by frees_inv_atom_aux/ qed-.
 
-fact frees_inv_pair_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K,V. L = K.โ“‘{I}V โ†’ X = #0 โ†’
-                         โˆƒโˆƒg. K โŠข ๐…*โฆƒVโฆ„ โ‰˜ g & f = โ†‘g.
+fact frees_inv_pair_aux:
+     โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K,V. L = K.โ“‘{I}V โ†’ X = #0 โ†’
+     โˆƒโˆƒg. K โŠข ๐…+โฆƒVโฆ„ โ‰˜ g & f = โ†‘g.
 #f #L #X * -f -L -X
 [ #f #L #s #_ #Z #Y #X #_ #H destruct
 | #f #i #_ #Z #Y #X #H destruct
@@ -84,11 +86,12 @@ fact frees_inv_pair_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K,V. L = K.
 ]
 qed-.
 
-lemma frees_inv_pair: โˆ€f,I,K,V. K.โ“‘{I}V โŠข ๐…*โฆƒ#0โฆ„ โ‰˜ f โ†’ โˆƒโˆƒg. K โŠข ๐…*โฆƒVโฆ„ โ‰˜ g & f = โ†‘g.
+lemma frees_inv_pair: โˆ€f,I,K,V. K.โ“‘{I}V โŠข ๐…+โฆƒ#0โฆ„ โ‰˜ f โ†’ โˆƒโˆƒg. K โŠข ๐…+โฆƒVโฆ„ โ‰˜ g & f = โ†‘g.
 /2 width=6 by frees_inv_pair_aux/ qed-.
 
-fact frees_inv_unit_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K. L = K.โ“ค{I} โ†’ X = #0 โ†’
-                         โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โ†‘g.
+fact frees_inv_unit_aux:
+     โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K. L = K.โ“ค{I} โ†’ X = #0 โ†’
+     โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โ†‘g.
 #f #L #X * -f -L -X
 [ #f #L #s #_ #Z #Y #_ #H destruct
 | #f #i #_ #Z #Y #H destruct
@@ -101,11 +104,12 @@ fact frees_inv_unit_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K. L = K.
 ]
 qed-.
 
-lemma frees_inv_unit: โˆ€f,I,K. K.โ“ค{I} โŠข ๐…*โฆƒ#0โฆ„ โ‰˜ f โ†’ โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โ†‘g.
+lemma frees_inv_unit: โˆ€f,I,K. K.โ“ค{I} โŠข ๐…+โฆƒ#0โฆ„ โ‰˜ f โ†’ โˆƒโˆƒg. ๐ˆโฆƒgโฆ„ & f = โ†‘g.
 /2 width=7 by frees_inv_unit_aux/ qed-.
 
-fact frees_inv_lref_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K,j. L = K.โ“˜{I} โ†’ X = #(โ†‘j) โ†’
-                         โˆƒโˆƒg. K โŠข ๐…*โฆƒ#jโฆ„ โ‰˜ g & f = โซฏg.
+fact frees_inv_lref_aux:
+     โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K,j. L = K.โ“˜{I} โ†’ X = #(โ†‘j) โ†’
+     โˆƒโˆƒg. K โŠข ๐…+โฆƒ#jโฆ„ โ‰˜ g & f = โซฏg.
 #f #L #X * -f -L -X
 [ #f #L #s #_ #Z #Y #j #_ #H destruct
 | #f #i #_ #Z #Y #j #H destruct
@@ -118,11 +122,12 @@ fact frees_inv_lref_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,K,j. L = K.
 ]
 qed-.
 
-lemma frees_inv_lref: โˆ€f,I,K,i. K.โ“˜{I} โŠข ๐…*โฆƒ#(โ†‘i)โฆ„ โ‰˜ f โ†’
-                      โˆƒโˆƒg. K โŠข ๐…*โฆƒ#iโฆ„ โ‰˜ g & f = โซฏg.
+lemma frees_inv_lref:
+      โˆ€f,I,K,i. K.โ“˜{I} โŠข ๐…+โฆƒ#(โ†‘i)โฆ„ โ‰˜ f โ†’
+      โˆƒโˆƒg. K โŠข ๐…+โฆƒ#iโฆ„ โ‰˜ g & f = โซฏg.
 /2 width=6 by frees_inv_lref_aux/ qed-.
 
-fact frees_inv_gref_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€x. X = ยงx โ†’ ๐ˆโฆƒfโฆ„.
+fact frees_inv_gref_aux: โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€x. X = ยงx โ†’ ๐ˆโฆƒfโฆ„.
 #f #L #X #H elim H -f -L -X //
 [ #f #i #_ #x #H destruct
 | #f #_ #L #V #_ #_ #x #H destruct
@@ -133,11 +138,12 @@ fact frees_inv_gref_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€x. X = ยงx 
 ]
 qed-.
 
-lemma frees_inv_gref: โˆ€f,L,l. L โŠข ๐…*โฆƒยงlโฆ„ โ‰˜ f โ†’ ๐ˆโฆƒfโฆ„.
+lemma frees_inv_gref: โˆ€f,L,l. L โŠข ๐…+โฆƒยงlโฆ„ โ‰˜ f โ†’ ๐ˆโฆƒfโฆ„.
 /2 width=5 by frees_inv_gref_aux/ qed-.
 
-fact frees_inv_bind_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€p,I,V,T. X = โ“‘{p,I}V.T โ†’
-                         โˆƒโˆƒf1,f2. L โŠข ๐…*โฆƒVโฆ„ โ‰˜ f1 & L.โ“‘{I}V โŠข ๐…*โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ โซฑf2 โ‰˜ f.
+fact frees_inv_bind_aux:
+     โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€p,I,V,T. X = โ“‘{p,I}V.T โ†’
+     โˆƒโˆƒf1,f2. L โŠข ๐…+โฆƒVโฆ„ โ‰˜ f1 & L.โ“‘{I}V โŠข ๐…+โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ โซฑf2 โ‰˜ f.
 #f #L #X * -f -L -X
 [ #f #L #s #_ #q #J #W #U #H destruct
 | #f #i #_ #q #J #W #U #H destruct
@@ -150,12 +156,13 @@ fact frees_inv_bind_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€p,I,V,T. X =
 ]
 qed-.
 
-lemma frees_inv_bind: โˆ€f,p,I,L,V,T. L โŠข ๐…*โฆƒโ“‘{p,I}V.Tโฆ„ โ‰˜ f โ†’
-                      โˆƒโˆƒf1,f2. L โŠข ๐…*โฆƒVโฆ„ โ‰˜ f1 & L.โ“‘{I}V โŠข ๐…*โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ โซฑf2 โ‰˜ f.
+lemma frees_inv_bind:
+      โˆ€f,p,I,L,V,T. L โŠข ๐…+โฆƒโ“‘{p,I}V.Tโฆ„ โ‰˜ f โ†’
+      โˆƒโˆƒf1,f2. L โŠข ๐…+โฆƒVโฆ„ โ‰˜ f1 & L.โ“‘{I}V โŠข ๐…+โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ โซฑf2 โ‰˜ f.
 /2 width=4 by frees_inv_bind_aux/ qed-.
 
-fact frees_inv_flat_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,V,T. X = โ“•{I}V.T โ†’
-                         โˆƒโˆƒf1,f2. L โŠข ๐…*โฆƒVโฆ„ โ‰˜ f1 & L โŠข ๐…*โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ f2 โ‰˜ f.
+fact frees_inv_flat_aux: โˆ€f,L,X. L โŠข ๐…+โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,V,T. X = โ“•{I}V.T โ†’
+                         โˆƒโˆƒf1,f2. L โŠข ๐…+โฆƒVโฆ„ โ‰˜ f1 & L โŠข ๐…+โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ f2 โ‰˜ f.
 #f #L #X * -f -L -X
 [ #f #L #s #_ #J #W #U #H destruct
 | #f #i #_ #J #W #U #H destruct
@@ -168,13 +175,14 @@ fact frees_inv_flat_aux: โˆ€f,L,X. L โŠข ๐…*โฆƒXโฆ„ โ‰˜ f โ†’ โˆ€I,V,T. X = 
 ]
 qed-.
 
-lemma frees_inv_flat: โˆ€f,I,L,V,T. L โŠข ๐…*โฆƒโ“•{I}V.Tโฆ„ โ‰˜ f โ†’
-                      โˆƒโˆƒf1,f2. L โŠข ๐…*โฆƒVโฆ„ โ‰˜ f1 & L โŠข ๐…*โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ f2 โ‰˜ f.
+lemma frees_inv_flat:
+      โˆ€f,I,L,V,T. L โŠข ๐…+โฆƒโ“•{I}V.Tโฆ„ โ‰˜ f โ†’
+      โˆƒโˆƒf1,f2. L โŠข ๐…+โฆƒVโฆ„ โ‰˜ f1 & L โŠข ๐…+โฆƒTโฆ„ โ‰˜ f2 & f1 โ‹“ f2 โ‰˜ f.
 /2 width=4 by frees_inv_flat_aux/ qed-.
 
 (* Basic properties ********************************************************)
 
-lemma frees_eq_repl_back: โˆ€L,T. eq_repl_back โ€ฆ (ฮปf. L โŠข ๐…*โฆƒTโฆ„ โ‰˜ f).
+lemma frees_eq_repl_back: โˆ€L,T. eq_repl_back โ€ฆ (ฮปf. L โŠข ๐…+โฆƒTโฆ„ โ‰˜ f).
 #L #T #f1 #H elim H -f1 -L -T
 [ /3 width=3 by frees_sort, isid_eq_repl_back/
 | #f1 #i #Hf1 #g2 #H
@@ -195,11 +203,11 @@ lemma frees_eq_repl_back: โˆ€L,T. eq_repl_back โ€ฆ (ฮปf. L โŠข ๐…*โฆƒTโฆ„ โ‰˜
 ]
 qed-.
 
-lemma frees_eq_repl_fwd: โˆ€L,T. eq_repl_fwd โ€ฆ (ฮปf. L โŠข ๐…*โฆƒTโฆ„ โ‰˜ f).
+lemma frees_eq_repl_fwd: โˆ€L,T. eq_repl_fwd โ€ฆ (ฮปf. L โŠข ๐…+โฆƒTโฆ„ โ‰˜ f).
 #L #T @eq_repl_sym /2 width=3 by frees_eq_repl_back/
 qed-.
 
-lemma frees_lref_push: โˆ€f,i. โ‹† โŠข ๐…*โฆƒ#iโฆ„ โ‰˜ f โ†’ โ‹† โŠข ๐…*โฆƒ#โ†‘iโฆ„ โ‰˜ โซฏf.
+lemma frees_lref_push: โˆ€f,i. โ‹† โŠข ๐…+โฆƒ#iโฆ„ โ‰˜ f โ†’ โ‹† โŠข ๐…+โฆƒ#โ†‘iโฆ„ โ‰˜ โซฏf.
 #f #i #H
 elim (frees_inv_atom โ€ฆ H) -H #g #Hg #H destruct
 /2 width=1 by frees_atom/
@@ -207,7 +215,7 @@ qed.
 
 (* Forward lemmas with test for finite colength *****************************)
 
-lemma frees_fwd_isfin: โˆ€f,L,T. L โŠข ๐…*โฆƒTโฆ„ โ‰˜ f โ†’ ๐…โฆƒfโฆ„.
+lemma frees_fwd_isfin: โˆ€f,L,T. L โŠข ๐…+โฆƒTโฆ„ โ‰˜ f โ†’ ๐…โฆƒfโฆ„.
 #f #L #T #H elim H -f -L -T
 /4 width=5 by sor_isfin, isfin_isid, isfin_tl, isfin_pushs, isfin_push, isfin_next/
 qed-.