| author | wenzelm | 
| Mon, 20 Nov 2023 14:11:34 +0100 | |
| changeset 79010 | aceca8baf804 | 
| parent 74439 | c278b1864592 | 
| permissions | -rw-r--r-- | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
1  | 
(*  | 
| 
68624
 
205d352ed727
Tagged Ball_Volume and Gamma_Function in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
67982 
diff
changeset
 | 
2  | 
File: HOL/Analysis/Ball_Volume.thy  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
3  | 
Author: Manuel Eberl, TU München  | 
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
4  | 
*)  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
5  | 
|
| 69566 | 6  | 
section \<open>The Volume of an \<open>n\<close>-Dimensional Ball\<close>  | 
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
7  | 
|
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
8  | 
theory Ball_Volume  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
9  | 
imports Gamma_Function Lebesgue_Integral_Substitution  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
10  | 
begin  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
11  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
12  | 
text \<open>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
13  | 
We define the volume of the unit ball in terms of the Gamma function. Note that the  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
14  | 
dimension need not be an integer; we also allow fractional dimensions, although we do  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
15  | 
not use this case or prove anything about it for now.  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
16  | 
\<close>  | 
| 70136 | 17  | 
definition\<^marker>\<open>tag important\<close> unit_ball_vol :: "real \<Rightarrow> real" where  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
18  | 
"unit_ball_vol n = pi powr (n / 2) / Gamma (n / 2 + 1)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
19  | 
|
| 
67719
 
bffb7482faaa
new material on matrices, etc., and consolidating duplicate results about of_nat
 
paulson <lp15@cam.ac.uk> 
parents: 
67399 
diff
changeset
 | 
20  | 
lemma unit_ball_vol_pos [simp]: "n \<ge> 0 \<Longrightarrow> unit_ball_vol n > 0"  | 
| 
 
bffb7482faaa
new material on matrices, etc., and consolidating duplicate results about of_nat
 
paulson <lp15@cam.ac.uk> 
parents: 
67399 
diff
changeset
 | 
21  | 
by (force simp: unit_ball_vol_def intro: divide_nonneg_pos)  | 
| 
 
bffb7482faaa
new material on matrices, etc., and consolidating duplicate results about of_nat
 
paulson <lp15@cam.ac.uk> 
parents: 
67399 
diff
changeset
 | 
22  | 
|
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
23  | 
lemma unit_ball_vol_nonneg [simp]: "n \<ge> 0 \<Longrightarrow> unit_ball_vol n \<ge> 0"  | 
| 
67719
 
bffb7482faaa
new material on matrices, etc., and consolidating duplicate results about of_nat
 
paulson <lp15@cam.ac.uk> 
parents: 
67399 
diff
changeset
 | 
24  | 
by (simp add: dual_order.strict_implies_order)  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
25  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
26  | 
text \<open>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
27  | 
We first need the value of the following integral, which is at the core of  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
28  | 
computing the measure of an \<open>n + 1\<close>-dimensional ball in terms of the measure of an  | 
| 69566 | 29  | 
\<open>n\<close>-dimensional one.  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
30  | 
\<close>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
31  | 
lemma emeasure_cball_aux_integral:  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
32  | 
  "(\<integral>\<^sup>+x. indicator {-1..1} x * sqrt (1 - x\<^sup>2) ^ n \<partial>lborel) =
 | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
33  | 
ennreal (Beta (1 / 2) (real n / 2 + 1))"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
34  | 
proof -  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
35  | 
have "((\<lambda>t. t powr (-1 / 2) * (1 - t) powr (real n / 2)) has_integral  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
36  | 
          Beta (1 / 2) (real n / 2 + 1)) {0..1}"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
37  | 
using has_integral_Beta_real[of "1/2" "n / 2 + 1"] by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
38  | 
from nn_integral_has_integral_lebesgue[OF _ this] have  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
39  | 
"ennreal (Beta (1 / 2) (real n / 2 + 1)) =  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
40  | 
nn_integral lborel (\<lambda>t. ennreal (t powr (-1 / 2) * (1 - t) powr (real n / 2) *  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
41  | 
                                indicator {0^2..1^2} t))"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
42  | 
by (simp add: mult_ac ennreal_mult' ennreal_indicator)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
43  | 
also have "\<dots> = (\<integral>\<^sup>+ x. ennreal (x\<^sup>2 powr - (1 / 2) * (1 - x\<^sup>2) powr (real n / 2) * (2 * x) *  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
44  | 
                          indicator {0..1} x) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
45  | 
by (subst nn_integral_substitution[where g = "\<lambda>x. x ^ 2" and g' = "\<lambda>x. 2 * x"])  | 
| 
67976
 
75b94eb58c3d
Analysis builds using set_borel_measurable_def, etc.
 
paulson <lp15@cam.ac.uk> 
parents: 
67719 
diff
changeset
 | 
46  | 
(auto intro!: derivative_eq_intros continuous_intros simp: set_borel_measurable_def)  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
47  | 
  also have "\<dots> = (\<integral>\<^sup>+ x. 2 * ennreal ((1 - x\<^sup>2) powr (real n / 2) * indicator {0..1} x) \<partial>lborel)"
 | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
48  | 
    by (intro nn_integral_cong_AE AE_I[of _ _ "{0}"])
 | 
| 71633 | 49  | 
(auto simp: indicator_def powr_minus powr_half_sqrt field_split_simps ennreal_mult')  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
50  | 
  also have "\<dots> = (\<integral>\<^sup>+ x. ennreal ((1 - x\<^sup>2) powr (real n / 2) * indicator {0..1} x) \<partial>lborel) +
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
51  | 
                    (\<integral>\<^sup>+ x. ennreal ((1 - x\<^sup>2) powr (real n / 2) * indicator {0..1} x) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
52  | 
(is "_ = ?I + _") by (simp add: mult_2 nn_integral_add)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
53  | 
  also have "?I = (\<integral>\<^sup>+ x. ennreal ((1 - x\<^sup>2) powr (real n / 2) * indicator {-1..0} x) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
54  | 
by (subst nn_integral_real_affine[of _ "-1" 0])  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
55  | 
(auto simp: indicator_def intro!: nn_integral_cong)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
56  | 
hence "?I + ?I = \<dots> + ?I" by simp  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
57  | 
also have "\<dots> = (\<integral>\<^sup>+ x. ennreal ((1 - x\<^sup>2) powr (real n / 2) *  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
58  | 
                    (indicator {-1..0} x + indicator{0..1} x)) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
59  | 
by (subst nn_integral_add [symmetric]) (auto simp: algebra_simps)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
60  | 
  also have "\<dots> = (\<integral>\<^sup>+ x. ennreal ((1 - x\<^sup>2) powr (real n / 2) * indicator {-1..1} x) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
61  | 
    by (intro nn_integral_cong_AE AE_I[of _ _ "{0}"]) (auto simp: indicator_def)
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
62  | 
  also have "\<dots> = (\<integral>\<^sup>+ x. ennreal (indicator {-1..1} x * sqrt (1 - x\<^sup>2) ^ n) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
63  | 
    by (intro nn_integral_cong_AE AE_I[of _ _ "{1, -1}"])
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
64  | 
(auto simp: powr_half_sqrt [symmetric] indicator_def abs_square_le_1  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
65  | 
abs_square_eq_1 powr_def exp_of_nat_mult [symmetric] emeasure_lborel_countable)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
66  | 
finally show ?thesis ..  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
67  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
68  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
69  | 
lemma real_sqrt_le_iff': "x \<ge> 0 \<Longrightarrow> y \<ge> 0 \<Longrightarrow> sqrt x \<le> y \<longleftrightarrow> x \<le> y ^ 2"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
70  | 
using real_le_lsqrt sqrt_le_D by blast  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
71  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
72  | 
text \<open>  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
73  | 
Isabelle's type system makes it very difficult to do an induction over the dimension  | 
| 
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
74  | 
of a Euclidean space type, because the type would change in the inductive step. To avoid  | 
| 
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
75  | 
this problem, we instead formulate the problem in a more concrete way by unfolding the  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
76  | 
definition of the Euclidean norm.  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
77  | 
\<close>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
78  | 
lemma emeasure_cball_aux:  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
79  | 
assumes "finite A" "r > 0"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
80  | 
shows "emeasure (Pi\<^sub>M A (\<lambda>_. lborel))  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
81  | 
             ({f. sqrt (\<Sum>i\<in>A. (f i)\<^sup>2) \<le> r} \<inter> space (Pi\<^sub>M A (\<lambda>_. lborel))) =
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
82  | 
ennreal (unit_ball_vol (real (card A)) * r ^ card A)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
83  | 
using assms  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
84  | 
proof (induction arbitrary: r)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
85  | 
case (empty r)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
86  | 
thus ?case  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
87  | 
by (simp add: unit_ball_vol_def space_PiM)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
88  | 
next  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
89  | 
case (insert i A r)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
90  | 
interpret product_sigma_finite "\<lambda>_. lborel"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
91  | 
by standard  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
92  | 
have "emeasure (Pi\<^sub>M (insert i A) (\<lambda>_. lborel))  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
93  | 
            ({f. sqrt (\<Sum>i\<in>insert i A. (f i)\<^sup>2) \<le> r} \<inter> space (Pi\<^sub>M (insert i A) (\<lambda>_. lborel))) =
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
94  | 
nn_integral (Pi\<^sub>M (insert i A) (\<lambda>_. lborel))  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
95  | 
          (indicator ({f. sqrt (\<Sum>i\<in>insert i A. (f i)\<^sup>2) \<le> r} \<inter>
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
96  | 
space (Pi\<^sub>M (insert i A) (\<lambda>_. lborel))))"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
97  | 
by (subst nn_integral_indicator) auto  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
98  | 
  also have "\<dots> = (\<integral>\<^sup>+ y. \<integral>\<^sup>+ x. indicator ({f. sqrt ((f i)\<^sup>2 + (\<Sum>i\<in>A. (f i)\<^sup>2)) \<le> r} \<inter>
 | 
| 
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
99  | 
space (Pi\<^sub>M (insert i A) (\<lambda>_. lborel))) (x(i := y))  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
100  | 
\<partial>Pi\<^sub>M A (\<lambda>_. lborel) \<partial>lborel)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
101  | 
using insert.prems insert.hyps by (subst product_nn_integral_insert_rev) auto  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
102  | 
  also have "\<dots> = (\<integral>\<^sup>+ (y::real). \<integral>\<^sup>+ x. indicator {-r..r} y * indicator ({f. sqrt ((\<Sum>i\<in>A. (f i)\<^sup>2)) \<le>
 | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
103  | 
sqrt (r ^ 2 - y ^ 2)} \<inter> space (Pi\<^sub>M A (\<lambda>_. lborel))) x \<partial>Pi\<^sub>M A (\<lambda>_. lborel) \<partial>lborel)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
104  | 
proof (intro nn_integral_cong, goal_cases)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
105  | 
case (1 y f)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
106  | 
    have *: "y \<in> {-r..r}" if "y ^ 2 + c \<le> r ^ 2" "c \<ge> 0" for c
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
107  | 
proof -  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
108  | 
have "y ^ 2 \<le> y ^ 2 + c" using that by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
109  | 
also have "\<dots> \<le> r ^ 2" by fact  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
110  | 
finally show ?thesis  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
111  | 
using \<open>r > 0\<close> by (simp add: power2_le_iff_abs_le abs_if split: if_splits)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
112  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
113  | 
have "(\<Sum>x\<in>A. (if x = i then y else f x)\<^sup>2) = (\<Sum>x\<in>A. (f x)\<^sup>2)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
114  | 
using insert.hyps by (intro sum.cong) auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
115  | 
thus ?case using 1 \<open>r > 0\<close>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
116  | 
by (auto simp: sum_nonneg real_sqrt_le_iff' indicator_def PiE_def space_PiM dest!: *)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
117  | 
qed  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
118  | 
  also have "\<dots> = (\<integral>\<^sup>+ (y::real). indicator {-r..r} y * (\<integral>\<^sup>+ x. indicator ({f. sqrt ((\<Sum>i\<in>A. (f i)\<^sup>2))
 | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
119  | 
\<le> sqrt (r ^ 2 - y ^ 2)} \<inter> space (Pi\<^sub>M A (\<lambda>_. lborel))) x  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
120  | 
\<partial>Pi\<^sub>M A (\<lambda>_. lborel)) \<partial>lborel)" by (subst nn_integral_cmult) auto  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
121  | 
  also have "\<dots> = (\<integral>\<^sup>+ (y::real). indicator {-r..r} y * emeasure (PiM A (\<lambda>_. lborel))
 | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
122  | 
      ({f. sqrt ((\<Sum>i\<in>A. (f i)\<^sup>2)) \<le> sqrt (r ^ 2 - y ^ 2)} \<inter> space (Pi\<^sub>M A (\<lambda>_. lborel))) \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
123  | 
using \<open>finite A\<close> by (intro nn_integral_cong, subst nn_integral_indicator) auto  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
124  | 
  also have "\<dots> = (\<integral>\<^sup>+ (y::real). indicator {-r..r} y * ennreal (unit_ball_vol (real (card A)) *
 | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
125  | 
(sqrt (r ^ 2 - y ^ 2)) ^ card A) \<partial>lborel)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
126  | 
proof (intro nn_integral_cong_AE, goal_cases)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
127  | 
case 1  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
128  | 
    have "AE y in lborel. y \<notin> {-r,r}"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
129  | 
by (intro AE_not_in countable_imp_null_set_lborel) auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
130  | 
thus ?case  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
131  | 
proof eventually_elim  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
132  | 
case (elim y)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
133  | 
show ?case  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
134  | 
      proof (cases "y \<in> {-r<..<r}")
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
135  | 
case True  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
136  | 
hence "y\<^sup>2 < r\<^sup>2" by (subst real_sqrt_less_iff [symmetric]) auto  | 
| 71633 | 137  | 
thus ?thesis by (subst insert.IH) (auto)  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
138  | 
qed (insert elim, auto)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
139  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
140  | 
qed  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
141  | 
also have "\<dots> = ennreal (unit_ball_vol (real (card A))) *  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
142  | 
                    (\<integral>\<^sup>+ (y::real). indicator {-r..r} y * (sqrt (r ^ 2 - y ^ 2)) ^ card A \<partial>lborel)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
143  | 
by (subst nn_integral_cmult [symmetric])  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
144  | 
(auto simp: mult_ac ennreal_mult' [symmetric] indicator_def intro!: nn_integral_cong)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
145  | 
  also have "(\<integral>\<^sup>+ (y::real). indicator {-r..r} y * (sqrt (r ^ 2 - y ^ 2)) ^ card A \<partial>lborel) =
 | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
146  | 
               (\<integral>\<^sup>+ (y::real). r ^ card A * indicator {-1..1} y * (sqrt (1 - y ^ 2)) ^ card A
 | 
| 
69064
 
5840724b1d71
Prefix form of infix with * on either side no longer needs special treatment
 
nipkow 
parents: 
68624 
diff
changeset
 | 
147  | 
\<partial>(distr lborel borel ((*) (1/r))))" using \<open>r > 0\<close>  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
148  | 
by (subst nn_integral_distr)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
149  | 
(auto simp: indicator_def field_simps real_sqrt_divide intro!: nn_integral_cong)  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
150  | 
also have "\<dots> = (\<integral>\<^sup>+ x. ennreal (r ^ Suc (card A)) *  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
151  | 
               (indicator {- 1..1} x * sqrt (1 - x\<^sup>2) ^ card A) \<partial>lborel)" using \<open>r > 0\<close>
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
152  | 
by (subst lborel_distr_mult) (auto simp: nn_integral_density ennreal_mult' [symmetric] mult_ac)  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
153  | 
  also have "\<dots> = ennreal (r ^ Suc (card A)) * (\<integral>\<^sup>+ x. indicator {- 1..1} x *
 | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
154  | 
sqrt (1 - x\<^sup>2) ^ card A \<partial>lborel)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
155  | 
by (subst nn_integral_cmult) auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
156  | 
also note emeasure_cball_aux_integral  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
157  | 
also have "ennreal (unit_ball_vol (real (card A))) * (ennreal (r ^ Suc (card A)) *  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
158  | 
ennreal (Beta (1/2) (card A / 2 + 1))) =  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
159  | 
ennreal (unit_ball_vol (card A) * Beta (1/2) (card A / 2 + 1) * r ^ Suc (card A))"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
160  | 
using \<open>r > 0\<close> by (simp add: ennreal_mult' [symmetric] mult_ac)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
161  | 
also have "unit_ball_vol (card A) * Beta (1/2) (card A / 2 + 1) = unit_ball_vol (Suc (card A))"  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
162  | 
by (auto simp: unit_ball_vol_def Beta_def Gamma_eq_zero_iff field_simps  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
163  | 
Gamma_one_half_real powr_half_sqrt [symmetric] powr_add [symmetric])  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
164  | 
also have "Suc (card A) = card (insert i A)" using insert.hyps by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
165  | 
finally show ?case .  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
166  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
167  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
168  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
169  | 
text \<open>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
170  | 
We now get the main theorem very easily by just applying the above lemma.  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
171  | 
\<close>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
172  | 
context  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
173  | 
fixes c :: "'a :: euclidean_space" and r :: real  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
174  | 
assumes r: "r \<ge> 0"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
175  | 
begin  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
176  | 
|
| 70136 | 177  | 
theorem\<^marker>\<open>tag unimportant\<close> emeasure_cball:  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
178  | 
  "emeasure lborel (cball c r) = ennreal (unit_ball_vol (DIM('a)) * r ^ DIM('a))"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
179  | 
proof (cases "r = 0")  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
180  | 
case False  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
181  | 
with r have r: "r > 0" by simp  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
182  | 
have "(lborel :: 'a measure) =  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
183  | 
distr (Pi\<^sub>M Basis (\<lambda>_. lborel)) borel (\<lambda>f. \<Sum>b\<in>Basis. f b *\<^sub>R b)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
184  | 
by (rule lborel_eq)  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
185  | 
also have "emeasure \<dots> (cball 0 r) =  | 
| 
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
186  | 
emeasure (Pi\<^sub>M Basis (\<lambda>_. lborel))  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
187  | 
               ({y. dist 0 (\<Sum>b\<in>Basis. y b *\<^sub>R b :: 'a) \<le> r} \<inter> space (Pi\<^sub>M Basis (\<lambda>_. lborel)))"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
188  | 
by (subst emeasure_distr) (auto simp: cball_def)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
189  | 
  also have "{f. dist 0 (\<Sum>b\<in>Basis. f b *\<^sub>R b :: 'a) \<le> r} = {f. sqrt (\<Sum>i\<in>Basis. (f i)\<^sup>2) \<le> r}"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
190  | 
by (subst euclidean_dist_l2) (auto simp: L2_set_def)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
191  | 
also have "emeasure (Pi\<^sub>M Basis (\<lambda>_. lborel)) (\<dots> \<inter> space (Pi\<^sub>M Basis (\<lambda>_. lborel))) =  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
192  | 
               ennreal (unit_ball_vol (real DIM('a)) * r ^ DIM('a))"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
193  | 
using r by (subst emeasure_cball_aux) simp_all  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
194  | 
also have "emeasure lborel (cball 0 r :: 'a set) =  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
195  | 
emeasure (distr lborel borel (\<lambda>x. c + x)) (cball c r)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
196  | 
by (subst emeasure_distr) (auto simp: cball_def dist_norm norm_minus_commute)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
197  | 
also have "distr lborel borel (\<lambda>x. c + x) = lborel"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
198  | 
using lborel_affine[of 1 c] by (simp add: density_1)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
199  | 
finally show ?thesis .  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
200  | 
qed auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
201  | 
|
| 70136 | 202  | 
corollary\<^marker>\<open>tag unimportant\<close> content_cball:  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
203  | 
  "content (cball c r) = unit_ball_vol (DIM('a)) * r ^ DIM('a)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
204  | 
by (simp add: measure_def emeasure_cball r)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
205  | 
|
| 70136 | 206  | 
corollary\<^marker>\<open>tag unimportant\<close> emeasure_ball:  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
207  | 
  "emeasure lborel (ball c r) = ennreal (unit_ball_vol (DIM('a)) * r ^ DIM('a))"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
208  | 
proof -  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
209  | 
from negligible_sphere[of c r] have "sphere c r \<in> null_sets lborel"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
210  | 
by (auto simp: null_sets_completion_iff negligible_iff_null_sets negligible_convex_frontier)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
211  | 
hence "emeasure lborel (ball c r \<union> sphere c r :: 'a set) = emeasure lborel (ball c r :: 'a set)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
212  | 
by (intro emeasure_Un_null_set) auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
213  | 
also have "ball c r \<union> sphere c r = (cball c r :: 'a set)" by auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
214  | 
  also have "emeasure lborel \<dots> = ennreal (unit_ball_vol (real DIM('a)) * r ^ DIM('a))"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
215  | 
by (rule emeasure_cball)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
216  | 
finally show ?thesis ..  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
217  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
218  | 
|
| 70136 | 219  | 
corollary\<^marker>\<open>tag important\<close> content_ball:  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
220  | 
  "content (ball c r) = unit_ball_vol (DIM('a)) * r ^ DIM('a)"
 | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
221  | 
by (simp add: measure_def r emeasure_ball)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
222  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
223  | 
end  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
224  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
225  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
226  | 
text \<open>  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
227  | 
Lastly, we now prove some nicer explicit formulas for the volume of the unit balls in  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
228  | 
the cases of even and odd integer dimensions.  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
229  | 
\<close>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
230  | 
lemma unit_ball_vol_even:  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
231  | 
"unit_ball_vol (real (2 * n)) = pi ^ n / fact n"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
232  | 
by (simp add: unit_ball_vol_def add_ac powr_realpow Gamma_fact)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
233  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
234  | 
lemma unit_ball_vol_odd':  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
235  | 
"unit_ball_vol (real (2 * n + 1)) = pi ^ n / pochhammer (1 / 2) (Suc n)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
236  | 
and unit_ball_vol_odd:  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
237  | 
"unit_ball_vol (real (2 * n + 1)) =  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
238  | 
(2 ^ (2 * Suc n) * fact (Suc n)) / fact (2 * Suc n) * pi ^ n"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
239  | 
proof -  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
240  | 
have "unit_ball_vol (real (2 * n + 1)) =  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
241  | 
pi powr (real n + 1 / 2) / Gamma (1 / 2 + real (Suc n))"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
242  | 
by (simp add: unit_ball_vol_def field_simps)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
243  | 
also have "pochhammer (1 / 2) (Suc n) = Gamma (1 / 2 + real (Suc n)) / Gamma (1 / 2)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
244  | 
by (intro pochhammer_Gamma) auto  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
245  | 
hence "Gamma (1 / 2 + real (Suc n)) = sqrt pi * pochhammer (1 / 2) (Suc n)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
246  | 
by (simp add: Gamma_one_half_real)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
247  | 
also have "pi powr (real n + 1 / 2) / \<dots> = pi ^ n / pochhammer (1 / 2) (Suc n)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
248  | 
by (simp add: powr_add powr_half_sqrt powr_realpow)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
249  | 
finally show "unit_ball_vol (real (2 * n + 1)) = \<dots>" .  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
250  | 
also have "pochhammer (1 / 2 :: real) (Suc n) =  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
251  | 
fact (2 * Suc n) / (2 ^ (2 * Suc n) * fact (Suc n))"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
252  | 
using fact_double[of "Suc n", where ?'a = real] by (simp add: divide_simps mult_ac)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
253  | 
also have "pi ^n / \<dots> = (2 ^ (2 * Suc n) * fact (Suc n)) / fact (2 * Suc n) * pi ^ n"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
254  | 
by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
255  | 
finally show "unit_ball_vol (real (2 * n + 1)) = \<dots>" .  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
256  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
257  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
258  | 
lemma unit_ball_vol_numeral:  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
259  | 
"unit_ball_vol (numeral (Num.Bit0 n)) = pi ^ numeral n / fact (numeral n)" (is ?th1)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
260  | 
"unit_ball_vol (numeral (Num.Bit1 n)) = 2 ^ (2 * Suc (numeral n)) * fact (Suc (numeral n)) /  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
261  | 
fact (2 * Suc (numeral n)) * pi ^ numeral n" (is ?th2)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
262  | 
proof -  | 
| 
74439
 
c278b1864592
removal of a redundant theorem (and white space)
 
paulson <lp15@cam.ac.uk> 
parents: 
71633 
diff
changeset
 | 
263  | 
have "numeral (Num.Bit0 n) = (2 * numeral n :: nat)"  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
264  | 
by (simp only: numeral_Bit0 mult_2 ring_distribs)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
265  | 
also have "unit_ball_vol \<dots> = pi ^ numeral n / fact (numeral n)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
266  | 
by (rule unit_ball_vol_even)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
267  | 
finally show ?th1 by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
268  | 
next  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
269  | 
have "numeral (Num.Bit1 n) = (2 * numeral n + 1 :: nat)"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
270  | 
by (simp only: numeral_Bit1 mult_2)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
271  | 
also have "unit_ball_vol \<dots> = 2 ^ (2 * Suc (numeral n)) * fact (Suc (numeral n)) /  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
272  | 
fact (2 * Suc (numeral n)) * pi ^ numeral n"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
273  | 
by (rule unit_ball_vol_odd)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
274  | 
finally show ?th2 by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
275  | 
qed  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
276  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
277  | 
lemmas eval_unit_ball_vol = unit_ball_vol_numeral fact_numeral  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
278  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
279  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
280  | 
text \<open>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
281  | 
Just for fun, we compute the volume of unit balls for a few dimensions.  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
282  | 
\<close>  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
283  | 
lemma unit_ball_vol_0 [simp]: "unit_ball_vol 0 = 1"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
284  | 
using unit_ball_vol_even[of 0] by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
285  | 
|
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
286  | 
lemma unit_ball_vol_1 [simp]: "unit_ball_vol 1 = 2"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
287  | 
using unit_ball_vol_odd[of 0] by simp  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
288  | 
|
| 70136 | 289  | 
corollary\<^marker>\<open>tag unimportant\<close>  | 
| 
68624
 
205d352ed727
Tagged Ball_Volume and Gamma_Function in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
67982 
diff
changeset
 | 
290  | 
unit_ball_vol_2: "unit_ball_vol 2 = pi"  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
291  | 
and unit_ball_vol_3: "unit_ball_vol 3 = 4 / 3 * pi"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
292  | 
and unit_ball_vol_4: "unit_ball_vol 4 = pi\<^sup>2 / 2"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
293  | 
and unit_ball_vol_5: "unit_ball_vol 5 = 8 / 15 * pi\<^sup>2"  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
294  | 
by (simp_all add: eval_unit_ball_vol)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
295  | 
|
| 70136 | 296  | 
corollary\<^marker>\<open>tag unimportant\<close> circle_area:  | 
| 
68624
 
205d352ed727
Tagged Ball_Volume and Gamma_Function in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
67982 
diff
changeset
 | 
297  | 
"r \<ge> 0 \<Longrightarrow> content (ball c r :: (real ^ 2) set) = r ^ 2 * pi"  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
298  | 
by (simp add: content_ball unit_ball_vol_2)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
299  | 
|
| 70136 | 300  | 
corollary\<^marker>\<open>tag unimportant\<close> sphere_volume:  | 
| 
68624
 
205d352ed727
Tagged Ball_Volume and Gamma_Function in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
67982 
diff
changeset
 | 
301  | 
"r \<ge> 0 \<Longrightarrow> content (ball c r :: (real ^ 3) set) = 4 / 3 * r ^ 3 * pi"  | 
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
302  | 
by (simp add: content_ball unit_ball_vol_3)  | 
| 
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
303  | 
|
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
304  | 
text \<open>  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
305  | 
Useful equivalent forms  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
306  | 
\<close>  | 
| 70136 | 307  | 
corollary\<^marker>\<open>tag unimportant\<close> content_ball_eq_0_iff [simp]: "content (ball c r) = 0 \<longleftrightarrow> r \<le> 0"  | 
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
308  | 
proof -  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
309  | 
have "r > 0 \<Longrightarrow> content (ball c r) > 0"  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
310  | 
by (simp add: content_ball unit_ball_vol_def)  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
311  | 
then show ?thesis  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
312  | 
by (fastforce simp: ball_empty)  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
313  | 
qed  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
314  | 
|
| 70136 | 315  | 
corollary\<^marker>\<open>tag unimportant\<close> content_ball_gt_0_iff [simp]: "0 < content (ball z r) \<longleftrightarrow> 0 < r"  | 
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
316  | 
by (auto simp: zero_less_measure_iff)  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
317  | 
|
| 70136 | 318  | 
corollary\<^marker>\<open>tag unimportant\<close> content_cball_eq_0_iff [simp]: "content (cball c r) = 0 \<longleftrightarrow> r \<le> 0"  | 
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
319  | 
proof (cases "r = 0")  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
320  | 
case False  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
321  | 
moreover have "r > 0 \<Longrightarrow> content (cball c r) > 0"  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
322  | 
by (simp add: content_cball unit_ball_vol_def)  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
323  | 
ultimately show ?thesis  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
324  | 
by fastforce  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
325  | 
qed auto  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
326  | 
|
| 70136 | 327  | 
corollary\<^marker>\<open>tag unimportant\<close> content_cball_gt_0_iff [simp]: "0 < content (cball z r) \<longleftrightarrow> 0 < r"  | 
| 
67982
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
328  | 
by (auto simp: zero_less_measure_iff)  | 
| 
 
7643b005b29a
various new results on measures, integrals, etc., and some simplified proofs
 
paulson <lp15@cam.ac.uk> 
parents: 
67976 
diff
changeset
 | 
329  | 
|
| 
67278
 
c60e3d615b8c
Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
 
eberlm <eberlm@in.tum.de> 
parents:  
diff
changeset
 | 
330  | 
end  |