src/HOL/Library/Convex.thy
changeset 51642 400ec5ae7f8f
parent 49609 89e10ed7668b
child 53596 d29d63460d84
equal deleted inserted replaced
51641:cd05e9fcc63d 51642:400ec5ae7f8f
   667   assumes "b > 1"
   667   assumes "b > 1"
   668   shows "convex_on {0 <..} (\<lambda> x. - log b x)"
   668   shows "convex_on {0 <..} (\<lambda> x. - log b x)"
   669 proof -
   669 proof -
   670   have "\<And>z. z > 0 \<Longrightarrow> DERIV (log b) z :> 1 / (ln b * z)" using DERIV_log by auto
   670   have "\<And>z. z > 0 \<Longrightarrow> DERIV (log b) z :> 1 / (ln b * z)" using DERIV_log by auto
   671   then have f': "\<And>z. z > 0 \<Longrightarrow> DERIV (\<lambda> z. - log b z) z :> - 1 / (ln b * z)"
   671   then have f': "\<And>z. z > 0 \<Longrightarrow> DERIV (\<lambda> z. - log b z) z :> - 1 / (ln b * z)"
   672     using DERIV_minus by auto
   672     by (auto simp: DERIV_minus)
   673   have "\<And>z :: real. z > 0 \<Longrightarrow> DERIV inverse z :> - (inverse z ^ Suc (Suc 0))"
   673   have "\<And>z :: real. z > 0 \<Longrightarrow> DERIV inverse z :> - (inverse z ^ Suc (Suc 0))"
   674     using less_imp_neq[THEN not_sym, THEN DERIV_inverse] by auto
   674     using less_imp_neq[THEN not_sym, THEN DERIV_inverse] by auto
   675   from this[THEN DERIV_cmult, of _ "- 1 / ln b"]
   675   from this[THEN DERIV_cmult, of _ "- 1 / ln b"]
   676   have "\<And>z :: real. z > 0 \<Longrightarrow>
   676   have "\<And>z :: real. z > 0 \<Longrightarrow>
   677     DERIV (\<lambda> z. (- 1 / ln b) * inverse z) z :> (- 1 / ln b) * (- (inverse z ^ Suc (Suc 0)))"
   677     DERIV (\<lambda> z. (- 1 / ln b) * inverse z) z :> (- 1 / ln b) * (- (inverse z ^ Suc (Suc 0)))"