]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/library/nat/neper.ma
Progress.
[helm.git] / helm / software / matita / library / nat / neper.ma
index 644db0630e88b7d39ae36573a20a69f321e056c9..51f65ef4aefeab3967525d226409e3a8b1eb00dc 100644 (file)
@@ -294,8 +294,6 @@ intros.
 apply (trans_le ? (log p (((S(S(S O))))\sup(m/n)*((n)\sup(m)))))
   [apply le_log
     [assumption
-    |apply lt_O_exp.
-     apply lt_O_S
     |apply lt_to_le.
      apply lt_exp_Sn_m_SSSO;assumption
     ]
@@ -311,11 +309,11 @@ apply (trans_le ? (log p (((S(S(S O))))\sup(m/n)*((n)\sup(m)))))
   ]
 qed.
 
-theorem le_log_exp_Sn_log_exp_n: \forall a,b,n,p. S O < p \to
-a \le b \to b \le n \to
+theorem le_log_exp_fact_sigma_p: \forall a,b,n,p. S O < p \to
+O < a \to a \le b \to b \le n \to
 log p (exp b n!) - log p (exp a n!) \le
 sigma_p b (\lambda i.leb a i) (\lambda i.S((n!/i)*S(log p (S(S(S O)))))).
-intros 6.
+intros 7.
 elim b
   [simplify.
    apply (lt_O_n_elim ? (lt_O_fact n)).intro.
@@ -331,9 +329,33 @@ elim b
              apply le_log_exp_Sn_log_exp_n
               [apply lt_O_fact
               |assumption
-              |
+              |apply divides_fact;
+                 [apply (trans_le ? ? ? H1);apply leb_true_to_le;assumption
+                 |apply lt_to_le;assumption]]
+            |apply le_log
+              [assumption
+              |cut (O = exp O n!)
+                 [rewrite > Hcut;apply monotonic_exp1;constructor 2;
+                  apply leb_true_to_le;assumption
+                 |elim n
+                    [reflexivity
+                    |simplify;rewrite > exp_plus_times;rewrite < H6;
+                     rewrite > sym_times;rewrite < times_n_O;reflexivity]]]]
+        |apply le_log
+          [assumption
+          |apply monotonic_exp1;apply leb_true_to_le;assumption]]
+      |rewrite > sym_plus;rewrite > sym_plus in \vdash (? ? %);apply le_minus_to_plus;
+       rewrite < minus_plus_m_m;apply H3;apply lt_to_le;assumption]
+    |assumption]
+  |lapply (not_le_to_lt ? ? (leb_false_to_not_le ? ? H5));
+   rewrite > eq_minus_n_m_O
+    [apply le_O_n
+    |apply le_log
+       [assumption
+       |apply monotonic_exp1;assumption]]]]
+qed.
 
-theorem le_log_exp_Sn_log_exp_n: \forall n,m,a,p. O < m \to S O < p \to
+(* theorem le_log_exp_Sn_log_exp_n: \forall n,m,a,p. O < m \to S O < p \to
 divides n m \to
 log p (exp n m) - log p (exp a m) \le
 sigma_p (S n) (\lambda i.leb (S a) i) (\lambda i.S((m/i)*S(log p (S(S(S O)))))).
@@ -354,7 +376,7 @@ elim n
              apply le_log_exp_Sn_log_exp_n.
 
 
-(* a generalization 
+* a generalization 
 theorem le_exp_sigma_p_exp_m: \forall m,n. (exp (S m) n) \le
 sigma_p (S n) (\lambda k.true) (\lambda k.((exp m (n-k))*(exp n k))/(k!)).
 intros.