]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/substitution/cofrees.ma
one file was missing :(
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / substitution / cofrees.ma
index 30ecd819a6846c363201e028cf9d290299a7a8ac..59b8baab86ee3e6bb926cec644cf6943e5f35b06 100644 (file)
@@ -25,6 +25,35 @@ interpretation
    "context-sensitive exclusion from free variables (term)"
    'CoFreeStar L i d T = (cofrees d i L T).
 
+(* Basic forward lemmas *****************************************************)
+
+lemma cofrees_fwd_lift: āˆ€L,U,d,i. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒUā¦„ ā†’ āˆƒT. ā‡§[i, 1] T ā‰” U.
+/2 width=1 by/ qed-.
+
+lemma cofrees_fwd_bind_sn: āˆ€a,I,L,W,U,i,d. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒā“‘{a,I}W.Uā¦„ ā†’
+                           L āŠ¢ i ~Ļµ š…*[d]ā¦ƒWā¦„.
+#a #I #L #W1 #U #i #d #H #W2 #HW12 elim (H (ā“‘{a,I}W2.U)) /2 width=1 by cpys_bind/ -W1
+#X #H elim (lift_inv_bind2 ā€¦ H) -H /2 width=2 by ex_intro/
+qed-.
+
+lemma cofrees_fwd_bind_dx: āˆ€a,I,L,W,U,i,d. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒā“‘{a,I}W.Uā¦„ ā†’
+                           L.ā“‘{I}W āŠ¢ i+1 ~Ļµ š…*[ā«Æd]ā¦ƒUā¦„.
+#a #I #L #W #U1 #i #d #H #U2 #HU12 elim (H (ā“‘{a,I}W.U2)) /2 width=1 by cpys_bind/ -U1
+#X #H elim (lift_inv_bind2 ā€¦ H) -H /2 width=2 by ex_intro/
+qed-.
+
+lemma cofrees_fwd_flat_sn: āˆ€I,L,W,U,i,d. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒā“•{I}W.Uā¦„ ā†’
+                           L āŠ¢ i ~Ļµ š…*[d]ā¦ƒWā¦„.
+#I #L #W1 #U #i #d #H #W2 #HW12 elim (H (ā“•{I}W2.U)) /2 width=1 by cpys_flat/ -W1
+#X #H elim (lift_inv_flat2 ā€¦ H) -H /2 width=2 by ex_intro/
+qed-.
+
+lemma cofrees_fwd_flat_dx: āˆ€I,L,W,U,i,d. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒā“•{I}W.Uā¦„ ā†’
+                           L āŠ¢ i ~Ļµ š…*[d]ā¦ƒUā¦„.
+#I #L #W #U1 #i #d #H #U2 #HU12 elim (H (ā“•{I}W.U2)) /2 width=1 by cpys_flat/ -U1
+#X #H elim (lift_inv_flat2 ā€¦ H) -H /2 width=2 by ex_intro/
+qed-.
+
 (* Basic inversion lemmas ***************************************************)
 
 lemma cofrees_inv_gen: āˆ€L,U,U0,d,i. ā¦ƒā‹†, Lā¦„ āŠ¢ U ā–¶*[d, āˆž] U0 ā†’ (āˆ€T. ā‡§[i, 1] T ā‰” U0 ā†’ āŠ„) ā†’
@@ -37,14 +66,13 @@ lemma cofrees_inv_lref_eq: āˆ€L,d,i. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒ#iā¦„ ā†’ āŠ„.
 #X #H elim (lift_inv_lref2_be ā€¦ H) -H //
 qed-. 
 
-(* Basic forward lemmas *****************************************************)
+lemma cofrees_inv_bind: āˆ€a,I,L,W,U,i,d. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒā“‘{a,I}W.Uā¦„ ā†’
+                        L āŠ¢ i ~Ļµ š…*[d]ā¦ƒWā¦„ āˆ§ L.ā“‘{I}W āŠ¢ i+1 ~Ļµ š…*[ā«Æd]ā¦ƒUā¦„.
+/3 width=8 by cofrees_fwd_bind_sn, cofrees_fwd_bind_dx, conj/ qed-.
 
-lemma cofrees_fwd_lift: āˆ€L,U,d,i. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒUā¦„ ā†’ āˆƒT. ā‡§[i, 1] T ā‰” U.
-/2 width=1 by/ qed-.
-
-lemma cofrees_fwd_nlift: āˆ€L,U,d,i. (āˆ€T. ā‡§[i, 1] T ā‰” U ā†’ āŠ„) ā†’ (L āŠ¢ i ~Ļµ š…*[d]ā¦ƒUā¦„ ā†’ āŠ„).
-#L #U #d #i #HnTU #H elim (cofrees_fwd_lift ā€¦ H) -H /2 width=2 by/
-qed-.
+lemma cofrees_inv_flat: āˆ€I,L,W,U,i,d. L āŠ¢ i ~Ļµ š…*[d]ā¦ƒā“•{I}W.Uā¦„ ā†’
+                        L āŠ¢ i ~Ļµ š…*[d]ā¦ƒWā¦„ āˆ§ L āŠ¢ i ~Ļµ š…*[d]ā¦ƒUā¦„.
+/3 width=7 by cofrees_fwd_flat_sn, cofrees_fwd_flat_dx, conj/ qed-.
 
 (* Basic Properties *********************************************************)