X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Flibrary%2Fnat%2Fminimization.ma;h=72812cb651ecf447983be299aa9e94d00794af64;hb=aeb7f0539398561dc84cadf38df14a051dd1ba75;hp=4dfda0ba69f014bdb7030dfd7d8782d46ab30817;hpb=b8c6dd0220fba9ebed2d51d5808790b5949177ea;p=helm.git diff --git a/helm/matita/library/nat/minimization.ma b/helm/matita/library/nat/minimization.ma index 4dfda0ba6..72812cb65 100644 --- a/helm/matita/library/nat/minimization.ma +++ b/helm/matita/library/nat/minimization.ma @@ -72,12 +72,13 @@ intro.simplify.rewrite < H3. rewrite > H2.simplify.apply le_n. qed. + definition max_spec \def \lambda f:nat \to bool.\lambda n: nat. -ex nat (\lambda i:nat. (le i n) \land (f i = true)) \to +\exists i. (le i n) \land (f i = true) \to (f n) = true \land (\forall i. i < n \to (f i = false)). theorem f_max_true : \forall f:nat \to bool. \forall n:nat. -ex nat (\lambda i:nat. (le i n) \land (f i = true)) \to f (max n f) = true. +(\exists i:nat. le i n \land f i = true) \to f (max n f) = true. intros 2. elim n.elim H.elim H1.generalize in match H3. apply le_n_O_elim a H2.intro.simplify.rewrite > H4. @@ -106,7 +107,6 @@ elim n.absurd le m O.assumption. cut O < m.apply lt_O_n_elim m Hcut.exact not_le_Sn_O. rewrite < max_O_f f.assumption. generalize in match H1. -(* ?? non posso generalizzare su un goal implicativo ?? *) elim max_S_max f n1. elim H3. absurd m \le S n1.assumption. @@ -152,7 +152,7 @@ simplify.right.split.reflexivity.reflexivity. qed. theorem f_min_aux_true: \forall f:nat \to bool. \forall off,m:nat. -ex nat (\lambda i:nat. (le (m-off) i) \land (le i m) \land (f i = true)) \to +(\exists i. le (m-off) i \land le i m \land f i = true) \to f (min_aux off m f) = true. intros 2. elim off.elim H.elim H1.elim H2.