]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma
- new syntax for let rec/corec with flavor specifier (tested on lambdadelta/ground_2/)
[helm.git] / matita / matita / contribs / lambdadelta / ground_2 / relocation / rtmap_istot.ma
index 85d70d4da9fbfed19e20a45902b025eff1c8b23c..561a8ef6b5c3dbdbabe11159f2b5ab0122d94693 100644 (file)
@@ -34,10 +34,24 @@ lemma istot_inv_next: āˆ€g. š“ā¦ƒgā¦„ ā†’ āˆ€f. ā«Æf = g ā†’ š“ā¦ƒfā¦„.
 #j #Hg elim (at_inv_xnx ā€¦ Hg ā€¦ H) -Hg -H /2 width=2 by ex_intro/
 qed-.
 
-(* Advanced forward lemmas on at ********************************************)
+(* Properties on tl *********************************************************)
 
-let corec at_ext: āˆ€f1,f2. š“ā¦ƒf1ā¦„ ā†’ š“ā¦ƒf2ā¦„ ā†’
-                  (āˆ€i,i1,i2. @ā¦ƒi, f1ā¦„ ā‰” i1 ā†’ @ā¦ƒi, f2ā¦„ ā‰” i2 ā†’ i1 = i2) ā†’ f1 ā‰— f2 ā‰ ?.
+lemma istot_tl: āˆ€f. š“ā¦ƒfā¦„ ā†’ š“ā¦ƒā«±fā¦„.
+#f cases (pn_split f) *
+#g * -f /2 width=3 by istot_inv_next, istot_inv_push/
+qed.
+
+(* Properties on tls ********************************************************)
+
+lemma istot_tls: āˆ€n,f. š“ā¦ƒfā¦„ ā†’ š“ā¦ƒā«±*[n]fā¦„.
+#n elim n -n /3 width=1 by istot_tl/
+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) ā†’
+                      f1 ā‰— f2.
 #f1 cases (pn_split f1) * #g1 #H1
 #f2 cases (pn_split f2) * #g2 #H2
 #Hf1 #Hf2 #Hi
@@ -56,7 +70,7 @@ let corec at_ext: āˆ€f1,f2. š“ā¦ƒf1ā¦„ ā†’ š“ā¦ƒf2ā¦„ ā†’
 ]
 qed-.
 
-(* Main properties on at ****************************************************)
+(* Advanced properties on at ************************************************)
 
 lemma at_dec: āˆ€f,i1,i2. š“ā¦ƒfā¦„ ā†’ Decidable (@ā¦ƒi1, fā¦„ ā‰” i2).
 #f #i1 #i2 #Hf lapply (Hf i1) -Hf *
@@ -66,7 +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/