src/HOL/Probability/Product_Measure.thy
author hoelzl
Tue, 04 May 2010 18:19:24 +0200
changeset 36649 bfd8c550faa6
parent 35977 30d42bfd0174
child 38656 d5d342611edb
permissions -rw-r--r--
Corrected imports; better approximation of dependencies.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     1
theory Product_Measure
36649
bfd8c550faa6 Corrected imports; better approximation of dependencies.
hoelzl
parents: 35977
diff changeset
     2
imports Lebesgue
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     3
begin
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     4
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     5
definition
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     6
  "prod_measure M M' = (\<lambda>a. measure_space.integral M (\<lambda>s0. measure M' ((\<lambda>s1. (s0, s1)) -` a)))"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     7
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     8
definition
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
     9
  "prod_measure_space M M' \<equiv>
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    10
    \<lparr> space = space M \<times> space M',
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    11
      sets = sets (sigma (space M \<times> space M') (prod_sets (sets M) (sets M'))),
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    12
      measure = prod_measure M M' \<rparr>"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    13
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    14
lemma prod_measure_times:
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    15
  assumes "measure_space M" and "measure_space M'" and a: "a \<in> sets M"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    16
  shows "prod_measure M M' (a \<times> a') = measure M a * measure M' a'"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    17
proof -
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    18
  interpret M: measure_space M by fact
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    19
  interpret M': measure_space M' by fact
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    20
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    21
  { fix \<omega>
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    22
    have "(\<lambda>\<omega>'. (\<omega>, \<omega>')) -` (a \<times> a') = (if \<omega> \<in> a then a' else {})"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    23
      by auto
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    24
    hence "measure M' ((\<lambda>\<omega>'. (\<omega>, \<omega>')) -` (a \<times> a')) =
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    25
      measure M' a' * indicator_fn a \<omega>"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    26
      unfolding indicator_fn_def by auto }
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    27
  note vimage_eq_indicator = this
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    28
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    29
  show ?thesis
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    30
    unfolding prod_measure_def vimage_eq_indicator
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    31
      M.integral_cmul_indicator(1)[OF `a \<in> sets M`]
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    32
    by simp
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    33
qed
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    34
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    35
lemma finite_prod_measure_space:
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    36
  assumes "finite_measure_space M" and "finite_measure_space M'"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    37
  shows "prod_measure_space M M' =
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    38
      \<lparr> space = space M \<times> space M',
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    39
        sets = Pow (space M \<times> space M'),
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    40
        measure = prod_measure M M' \<rparr>"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    41
proof -
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    42
  interpret M: finite_measure_space M by fact
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    43
  interpret M': finite_measure_space M' by fact
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    44
  show ?thesis using M.finite_space M'.finite_space
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    45
    by (simp add: sigma_prod_sets_finite M.sets_eq_Pow M'.sets_eq_Pow
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    46
      prod_measure_space_def)
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    47
qed
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    48
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    49
lemma finite_measure_space_finite_prod_measure:
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    50
  assumes "finite_measure_space M" and "finite_measure_space M'"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    51
  shows "finite_measure_space (prod_measure_space M M')"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    52
proof (rule finite_Pow_additivity_sufficient)
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    53
  interpret M: finite_measure_space M by fact
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    54
  interpret M': finite_measure_space M' by fact
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    55
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    56
  from M.finite_space M'.finite_space
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    57
  show "finite (space (prod_measure_space M M'))" and
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    58
    "sets (prod_measure_space M M') = Pow (space (prod_measure_space M M'))"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    59
    by (simp_all add: finite_prod_measure_space[OF assms])
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    60
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    61
  show "additive (prod_measure_space M M') (measure (prod_measure_space M M'))"
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    62
    unfolding additive_def finite_prod_measure_space[OF assms]
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    63
  proof (simp, safe)
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    64
    fix x y assume subs: "x \<subseteq> space M \<times> space M'" "y \<subseteq> space M \<times> space M'"
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    65
      and disj_x_y: "x \<inter> y = {}"
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    66
    have "\<And>z. measure M' (Pair z -` x \<union> Pair z -` y) =
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    67
        measure M' (Pair z -` x) + measure M' (Pair z -` y)"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    68
      using disj_x_y subs by (subst M'.measure_additive) (auto simp: M'.sets_eq_Pow)
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    69
    thus "prod_measure M M' (x \<union> y) = prod_measure M M' x + prod_measure M M' y"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    70
      unfolding prod_measure_def M.integral_finite_singleton
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    71
      by (simp_all add: setsum_addf[symmetric] field_simps)
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    72
  qed
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    73
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    74
  show "positive (prod_measure_space M M') (measure (prod_measure_space M M'))"
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    75
    unfolding positive_def
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    76
    by (auto intro!: setsum_nonneg mult_nonneg_nonneg M'.positive M.positive
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    77
      simp add: M.integral_zero finite_prod_measure_space[OF assms]
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    78
        prod_measure_def M.integral_finite_singleton
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    79
        M.sets_eq_Pow M'.sets_eq_Pow)
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    80
qed
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    81
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    82
lemma finite_measure_space_finite_prod_measure_alterantive:
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    83
  assumes M: "finite_measure_space M" and M': "finite_measure_space M'"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    84
  shows "finite_measure_space \<lparr> space = space M \<times> space M', sets = Pow (space M \<times> space M'), measure = prod_measure M M' \<rparr>"
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    85
    (is "finite_measure_space ?M")
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    86
proof -
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    87
  interpret M: finite_measure_space M by fact
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    88
  interpret M': finite_measure_space M' by fact
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    89
35977
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    90
  show ?thesis
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    91
    using finite_measure_space_finite_prod_measure[OF assms]
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    92
    unfolding prod_measure_space_def M.sets_eq_Pow M'.sets_eq_Pow
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    93
    using M.finite_space M'.finite_space
30d42bfd0174 Added finite measure space.
hoelzl
parents: 35833
diff changeset
    94
    by (simp add: sigma_prod_sets_finite)
35833
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    95
qed
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    96
7b7ae5aa396d Added product measure space
hoelzl
parents:
diff changeset
    97
end