src/HOL/Log.thy
changeset 49962 a8cc904a6820
parent 47595 836b4c4d7c86
child 50247 491c5c81c2e8
equal deleted inserted replaced
49961:d3d2b78b1c19 49962:a8cc904a6820
    32 by (simp add: powr_def)
    32 by (simp add: powr_def)
    33 declare powr_one_gt_zero_iff [THEN iffD2, simp]
    33 declare powr_one_gt_zero_iff [THEN iffD2, simp]
    34 
    34 
    35 lemma powr_mult: 
    35 lemma powr_mult: 
    36       "[| 0 < x; 0 < y |] ==> (x * y) powr a = (x powr a) * (y powr a)"
    36       "[| 0 < x; 0 < y |] ==> (x * y) powr a = (x powr a) * (y powr a)"
    37 by (simp add: powr_def exp_add [symmetric] ln_mult right_distrib)
    37 by (simp add: powr_def exp_add [symmetric] ln_mult distrib_left)
    38 
    38 
    39 lemma powr_gt_zero [simp]: "0 < x powr a"
    39 lemma powr_gt_zero [simp]: "0 < x powr a"
    40 by (simp add: powr_def)
    40 by (simp add: powr_def)
    41 
    41 
    42 lemma powr_ge_pzero [simp]: "0 <= x powr y"
    42 lemma powr_ge_pzero [simp]: "0 <= x powr y"
    56   apply (subst exp_diff [THEN sym])
    56   apply (subst exp_diff [THEN sym])
    57   apply (simp add: left_diff_distrib)
    57   apply (simp add: left_diff_distrib)
    58 done
    58 done
    59 
    59 
    60 lemma powr_add: "x powr (a + b) = (x powr a) * (x powr b)"
    60 lemma powr_add: "x powr (a + b) = (x powr a) * (x powr b)"
    61 by (simp add: powr_def exp_add [symmetric] left_distrib)
    61 by (simp add: powr_def exp_add [symmetric] distrib_right)
    62 
    62 
    63 lemma powr_mult_base:
    63 lemma powr_mult_base:
    64   "0 < x \<Longrightarrow>x * x powr y = x powr (1 + y)"
    64   "0 < x \<Longrightarrow>x * x powr y = x powr (1 + y)"
    65 using assms by (auto simp: powr_add)
    65 using assms by (auto simp: powr_add)
    66 
    66 
   110 by (simp add: log_def powr_def)
   110 by (simp add: log_def powr_def)
   111 
   111 
   112 lemma log_mult: 
   112 lemma log_mult: 
   113      "[| 0 < a; a \<noteq> 1; 0 < x; 0 < y |]  
   113      "[| 0 < a; a \<noteq> 1; 0 < x; 0 < y |]  
   114       ==> log a (x * y) = log a x + log a y"
   114       ==> log a (x * y) = log a x + log a y"
   115 by (simp add: log_def ln_mult divide_inverse left_distrib)
   115 by (simp add: log_def ln_mult divide_inverse distrib_right)
   116 
   116 
   117 lemma log_eq_div_ln_mult_log: 
   117 lemma log_eq_div_ln_mult_log: 
   118      "[| 0 < a; a \<noteq> 1; 0 < b; b \<noteq> 1; 0 < x |]  
   118      "[| 0 < a; a \<noteq> 1; 0 < b; b \<noteq> 1; 0 < x |]  
   119       ==> log a x = (ln b/ln a) * log b x"
   119       ==> log a x = (ln b/ln a) * log b x"
   120 by (simp add: log_def divide_inverse)
   120 by (simp add: log_def divide_inverse)