1716 finally show ?thesis using False |
1716 finally show ?thesis using False |
1717 unfolding lb_exp.simps if_not_P[OF `\<not> 0 < x`] if_P[OF `x < - 1`] int_floor_fl_def Let_def if_not_P[OF False] |
1717 unfolding lb_exp.simps if_not_P[OF `\<not> 0 < x`] if_P[OF `x < - 1`] int_floor_fl_def Let_def if_not_P[OF False] |
1718 by (auto simp: real_power_down_fl intro!: power_down_le) |
1718 by (auto simp: real_power_down_fl intro!: power_down_le) |
1719 next |
1719 next |
1720 case True |
1720 case True |
1721 have "power_down_fl prec (Float 1 (- 2)) ?num \<le> real (Float 1 (- 2)) ^ ?num" |
1721 have "power_down_fl prec (Float 1 (- 2)) ?num \<le> (Float 1 (- 2)) ^ ?num" |
1722 by (auto simp: real_power_down_fl power_down) |
1722 by (metis Float_le_zero_iff less_imp_le linorder_not_less not_numeral_le_zero numeral_One power_down_fl) |
|
1723 then have "power_down_fl prec (Float 1 (- 2)) ?num \<le> real (Float 1 (- 2)) ^ ?num" |
|
1724 by simp |
1723 also |
1725 also |
1724 have "real (floor_fl x) \<noteq> 0" and "real (floor_fl x) \<le> 0" using `real (floor_fl x) < 0` by auto |
1726 have "real (floor_fl x) \<noteq> 0" and "real (floor_fl x) \<le> 0" using `real (floor_fl x) < 0` by auto |
1725 from divide_right_mono_neg[OF floor_fl[of x] `real (floor_fl x) \<le> 0`, unfolded divide_self[OF `real (floor_fl x) \<noteq> 0`]] |
1727 from divide_right_mono_neg[OF floor_fl[of x] `real (floor_fl x) \<le> 0`, unfolded divide_self[OF `real (floor_fl x) \<noteq> 0`]] |
1726 have "- 1 \<le> x / (- floor_fl x)" unfolding minus_float.rep_eq by auto |
1728 have "- 1 \<le> x / (- floor_fl x)" unfolding minus_float.rep_eq by auto |
1727 from order_trans[OF exp_m1_ge_quarter this[unfolded exp_le_cancel_iff[where x="- 1", symmetric]]] |
1729 from order_trans[OF exp_m1_ge_quarter this[unfolded exp_le_cancel_iff[where x="- 1", symmetric]]] |
1728 have "Float 1 (- 2) \<le> exp (x / (- floor_fl x))" unfolding Float_num . |
1730 have "Float 1 (- 2) \<le> exp (x / (- floor_fl x))" unfolding Float_num . |
1729 hence "real (Float 1 (- 2)) ^ ?num \<le> exp (x / (- floor_fl x)) ^ ?num" |
1731 hence "real (Float 1 (- 2)) ^ ?num \<le> exp (x / (- floor_fl x)) ^ ?num" |
1730 by (auto intro!: power_mono) |
1732 by (metis Float_num(5) power_mono zero_le_divide_1_iff zero_le_numeral) |
1731 also have "\<dots> = exp x" unfolding num_eq fl_eq exp_real_of_nat_mult[symmetric] using `real (floor_fl x) \<noteq> 0` by auto |
1733 also have "\<dots> = exp x" unfolding num_eq fl_eq exp_real_of_nat_mult[symmetric] using `real (floor_fl x) \<noteq> 0` by auto |
1732 finally show ?thesis |
1734 finally show ?thesis |
1733 unfolding lb_exp.simps if_not_P[OF `\<not> 0 < x`] if_P[OF `x < - 1`] int_floor_fl_def Let_def if_P[OF True] real_of_float_power |
1735 unfolding lb_exp.simps if_not_P[OF `\<not> 0 < x`] if_P[OF `x < - 1`] int_floor_fl_def Let_def if_P[OF True] real_of_float_power |
1734 . |
1736 . |
1735 qed |
1737 qed |