src/HOL/Analysis/Ball_Volume.thy
author nipkow
Mon, 24 Sep 2018 14:30:09 +0200
changeset 69064 5840724b1d71
parent 68624 205d352ed727
child 69517 dc20f278e8f3
permissions -rw-r--r--
Prefix form of infix with * on either side no longer needs special treatment because (* and *) are no longer comment brackets in terms.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
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
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
     6
section \<open>The volume of an $n$-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>
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
    17
definition%important 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
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    28
  computing the measure of an $n+1$-dimensional ball in terms of the measure of an 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    29
  $n$-dimensional one.
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:
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    32
  "(\<integral>\<^sup>+x. 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
    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)) =
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    40
        nn_integral lborel (\<lambda>t. ennreal (t powr (-1 / 2) * (1 - t) powr (real n / 2) * 
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)"
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    48
    by (intro nn_integral_cong_AE AE_I[of _ _ "{0}"]) 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    49
       (auto simp: indicator_def powr_minus powr_half_sqrt divide_simps ennreal_mult' mult_ac)
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
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    57
  also have "\<dots> = (\<integral>\<^sup>+ x. ennreal ((1 - x\<^sup>2) powr (real n / 2) * 
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
lemma power2_le_iff_abs_le: "y \<ge> 0 \<Longrightarrow> (x::real) ^ 2 \<le> y ^ 2 \<longleftrightarrow> abs x \<le> y"
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    73
  by (subst real_sqrt_le_iff' [symmetric]) auto
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    74
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    75
text \<open>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    76
  Isabelle's type system makes it very difficult to do an induction over the dimension 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    77
  of a Euclidean space type, because the type would change in the inductive step. To avoid 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    78
  this problem, we instead formulate the problem in a more concrete way by unfolding the 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    79
  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
    80
\<close>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    81
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
    82
  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
    83
  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
    84
             ({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
    85
             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
    86
  using assms
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    87
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
    88
  case (empty r)
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    89
  thus ?case
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    90
    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
    91
next
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    92
  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
    93
  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
    94
    by standard
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
    95
  have "emeasure (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
    96
            ({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
    97
        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
    98
          (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
    99
          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
   100
    by (subst nn_integral_indicator) auto
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   101
  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> 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   102
                                space (Pi\<^sub>M (insert i A) (\<lambda>_. lborel))) (x(i := y)) 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   103
                   \<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
    using insert.prems insert.hyps by (subst product_nn_integral_insert_rev) auto
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   105
  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> 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   106
               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
   107
  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
   108
    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
   109
    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
   110
    proof -
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   111
      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
   112
      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
   113
      finally show ?thesis
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   114
        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
   115
    qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   116
    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
   117
      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
   118
    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
   119
      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
   120
  qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   121
  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)) 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   122
                                   \<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
   123
                  \<partial>Pi\<^sub>M A (\<lambda>_. lborel)) \<partial>lborel)" 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
   124
  also have "\<dots> = (\<integral>\<^sup>+ (y::real). indicator {-r..r} y * emeasure (PiM A (\<lambda>_. lborel)) 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   125
      ({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
   126
    using \<open>finite A\<close> by (intro nn_integral_cong, subst nn_integral_indicator) auto
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   127
  also have "\<dots> = (\<integral>\<^sup>+ (y::real). indicator {-r..r} y * ennreal (unit_ball_vol (real (card A)) * 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   128
                                  (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
   129
  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
   130
    case 1
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   131
    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
   132
      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
   133
    thus ?case
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   134
    proof eventually_elim
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   135
      case (elim y)
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   136
      show ?case
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   137
      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
   138
        case True
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   139
        hence "y\<^sup>2 < r\<^sup>2" by (subst real_sqrt_less_iff [symmetric]) auto
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   140
        thus ?thesis by (subst insert.IH) (auto simp: real_sqrt_less_iff)
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   141
      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
   142
    qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   143
  qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   144
  also have "\<dots> = ennreal (unit_ball_vol (real (card A))) * 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   145
                    (\<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
   146
    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
   147
       (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
   148
  also have "(\<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
   149
               (\<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
   150
               \<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
   151
    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
   152
       (auto simp: indicator_def field_simps real_sqrt_divide 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
   153
  also have "\<dots> = (\<integral>\<^sup>+ x. ennreal (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
   154
               (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
   155
    by (subst lborel_distr_mult) (auto simp: nn_integral_density 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
   156
  also have "\<dots> = ennreal (r ^ Suc (card A)) * (\<integral>\<^sup>+ x. indicator {- 1..1} x * 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   157
                    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
   158
    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
   159
  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
   160
  also have "ennreal (unit_ball_vol (real (card A))) * (ennreal (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
   161
                 ennreal (Beta (1/2) (card A / 2 + 1))) = 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   162
               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
   163
    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
   164
  also have "unit_ball_vol (card A) * Beta (1/2) (card A / 2 + 1) = unit_ball_vol (Suc (card A))"
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   165
    by (auto simp: unit_ball_vol_def Beta_def Gamma_eq_zero_iff field_simps 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   166
          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
   167
  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
   168
  finally show ?case .
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   169
qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   170
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   171
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   172
text \<open>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   173
  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
   174
\<close>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   175
context
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   176
  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
   177
  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
   178
begin
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   179
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   180
theorem%unimportant emeasure_cball:
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   181
  "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
   182
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
   183
  case False
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   184
  with r have r: "r > 0" by simp
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   185
  have "(lborel :: 'a measure) = 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   186
          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
   187
    by (rule lborel_eq)
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   188
  also have "emeasure \<dots> (cball 0 r) = 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   189
               emeasure (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
   190
               ({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
   191
    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
   192
  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
   193
    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
   194
  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
   195
               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
   196
    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
   197
  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
   198
               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
   199
    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
   200
  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
   201
    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
   202
  finally show ?thesis .
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   203
qed auto
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   204
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   205
corollary%unimportant content_cball:
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   206
  "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
   207
  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
   208
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   209
corollary%unimportant emeasure_ball:
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   210
  "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
   211
proof -
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   212
  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
   213
    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
   214
  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
   215
    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
   216
  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
   217
  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
   218
    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
   219
  finally show ?thesis ..
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   220
qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   221
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   222
corollary%important content_ball:
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   223
  "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
   224
  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
   225
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   226
end
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   227
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   228
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   229
text \<open>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   230
  Lastly, we now prove some nicer explicit formulas for the volume of the unit balls in 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   231
  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
   232
\<close>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   233
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
   234
  "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
   235
  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
   236
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   237
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
   238
        "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
   239
  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
   240
        "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
   241
           (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
   242
proof -
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   243
  have "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
   244
          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
   245
    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
   246
  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
   247
    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
   248
  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
   249
    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
   250
  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
   251
    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
   252
  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
   253
  also have "pochhammer (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
   254
               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
   255
    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
   256
  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
   257
    by simp
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   258
  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
   259
qed
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   260
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   261
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
   262
  "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
   263
  "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
   264
    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
   265
proof -
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   266
  have "numeral (Num.Bit0 n) = (2 * numeral n :: nat)" 
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   267
    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
   268
  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
   269
    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
   270
  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
   271
next
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   272
  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
   273
    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
   274
  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
   275
                                  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
   276
    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
   277
  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
   278
qed
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
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
   281
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   282
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   283
text \<open>
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   284
  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
   285
\<close>
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_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
   287
  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
   288
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   289
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
   290
  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
   291
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   292
corollary%unimportant
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   293
          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
   294
      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
   295
      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
   296
      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
   297
  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
   298
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   299
corollary%unimportant circle_area:
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   300
  "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
   301
  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
   302
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   303
corollary%unimportant sphere_volume:
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   304
  "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
   305
  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
   306
67982
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   307
text \<open>
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   308
  Useful equivalent forms
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   309
\<close>
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   310
corollary%unimportant 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
   311
proof -
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   312
  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
   313
    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
   314
  then show ?thesis
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   315
    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
   316
qed
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   317
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   318
corollary%unimportant 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
   319
  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
   320
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   321
corollary%unimportant 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
   322
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
   323
  case False
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   324
  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
   325
    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
   326
  ultimately show ?thesis
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   327
    by fastforce
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   328
qed auto
7643b005b29a various new results on measures, integrals, etc., and some simplified proofs
paulson <lp15@cam.ac.uk>
parents: 67976
diff changeset
   329
68624
205d352ed727 Tagged Ball_Volume and Gamma_Function in HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents: 67982
diff changeset
   330
corollary%unimportant 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
   331
  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
   332
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents:
diff changeset
   333
end