# HG changeset patch # User hellerar # Date 1282821337 -7200 # Node ID cae59dc0a0948bba6403551ef1217557ed088dd7 # Parent 7f69af169e879beb09cc8d79cba0e8b258337f0e dynkin system diff -r 7f69af169e87 -r cae59dc0a094 src/HOL/Probability/Product_Measure.thy --- a/src/HOL/Probability/Product_Measure.thy Wed Aug 25 18:46:22 2010 +0200 +++ b/src/HOL/Probability/Product_Measure.thy Thu Aug 26 13:15:37 2010 +0200 @@ -2,6 +2,254 @@ imports Lebesgue_Integration begin +definition dynkin +where "dynkin M = + ((\ A \ sets M. A \ space M) \ + space M \ sets M \ (\ a \ sets M. \ b \ sets M. b - a \ sets M) \ + (\ a. (\ i j :: nat. i \ j \ a i \ a j = {}) \ + (\ i :: nat. a i \ sets M) \ UNION UNIV a \ sets M))" + +lemma dynkinI: + assumes "\ A. A \ sets M \ A \ space M" + assumes "space M \ sets M" and "\ a \ sets M. \ b \ sets M. b - a \ sets M" + assumes "\ a. (\ i j :: nat. i \ j \ a i \ a j = {}) + \ (\ i :: nat. a i \ sets M) \ UNION UNIV a \ sets M" + shows "dynkin M" +using assms unfolding dynkin_def by auto + +lemma dynkin_subset: + assumes "dynkin M" + shows "\ A. A \ sets M \ A \ space M" +using assms unfolding dynkin_def by auto + +lemma dynkin_space: + assumes "dynkin M" + shows "space M \ sets M" +using assms unfolding dynkin_def by auto + +lemma dynkin_diff: + assumes "dynkin M" + shows "\ a b. \ a \ sets M ; b \ sets M \ \ b - a \ sets M" +using assms unfolding dynkin_def by auto + +lemma dynkin_UN: + assumes "dynkin M" + assumes "\ i j :: nat. i \ j \ a i \ a j = {}" + assumes "\ i :: nat. a i \ sets M" + shows "UNION UNIV a \ sets M" +using assms unfolding dynkin_def by auto + +definition Int_stable +where "Int_stable M = (\ a \ sets M. (\ b \ sets M. a \ b \ sets M))" + +lemma dynkin_trivial: + shows "dynkin \ space = A, sets = Pow A \" +by (rule dynkinI) auto + +lemma + assumes stab: "Int_stable E" + and spac: "space E = space D" + and subsED: "sets E \ sets D" + and subsDE: "sets D \ sigma_sets (space E) (sets E)" + and dyn: "dynkin D" + shows "sigma (space E) (sets E) = D" +proof - + def sets_\E == "\ {sets d | d :: 'a algebra. dynkin d \ space d = space E \ sets E \ sets d}" + def \E == "\ space = space E, sets = sets_\E \" + have "\ space = space E, sets = Pow (space E) \ \ {d | d. dynkin d \ space d = space E \ sets E \ sets d}" + using dynkin_trivial spac subsED dynkin_subset[OF dyn] by fastsimp + hence not_empty: "{sets (d :: 'a algebra) | d. dynkin d \ space d = space E \ sets E \ sets d} \ {}" + using exI[of "\ x. space x = space E \ dynkin x \ sets E \ sets x" "\ space = space E, sets = Pow (space E) \", simplified] + by auto + + have "sets_\E \ sets D" + unfolding sets_\E_def using assms by auto + + have \ynkin: "dynkin \E" + proof (rule dynkinI, safe) + fix A x assume asm: "A \ sets \E" "x \ A" + { fix d :: "('a, 'b) algebra_scheme" assume "A \ sets d" "dynkin d \ space d = space E" + hence "A \ space d" + using dynkin_subset by auto } + show "x \ space \E" using asm + unfolding \E_def sets_\E_def using not_empty + proof auto + fix x A fix d :: "'a algebra" + assume asm: "\x. (\d :: 'a algebra. x = sets d \ + dynkin d \ + space d = space E \ + sets E \ sets d) \ + A \ x" "x \ A" + and asm': "space d = space E" "dynkin d" "sets E \ sets d" + have "A \ sets d" + apply (rule impE[OF spec[OF asm(1), of "sets d"]]) + using exI[of _ d] asm' by auto + thus "x \ space E" using asm' dynkin_subset[OF asm'(2), of A] asm(2) by auto + qed + next + show "space \E \ sets \E" + unfolding \E_def sets_\E_def + using dynkin_space by fastsimp + next + fix a b assume "a \ sets \E" "b \ sets \E" + thus "b - a \ sets \E" + unfolding \E_def sets_\E_def by (auto intro:dynkin_diff) + next + fix a assume asm: "\i j :: nat. i \ j \ a i \ a j = {}" "\i. a i \ sets \E" + thus "UNION UNIV a \ sets \E" + unfolding \E_def sets_\E_def apply (auto intro!:dynkin_UN[OF _ asm(1)]) + by blast + qed + def Dy == "\ d. {A | A. A \ sets_\E \ A \ d \ sets_\E}" + { fix d assume dasm: "d \ sets_\E" + have "dynkin \ space = space E, sets = Dy d \" + proof (rule dynkinI, auto) + fix A x assume "A \ Dy d" "x \ A" + thus "x \ space E" unfolding Dy_def sets_\E_def using not_empty + proof auto fix x A fix da :: "'a algebra" + assume asm: "x \ A" + "\x. (\d :: 'a algebra. x = sets d \ + dynkin d \ space d = space E \ + sets E \ sets d) \ A \ x" + "\x. (\d. x = sets d \ + dynkin d \ space d = space E \ + sets E \ sets d) \ A \ d \ x" + "space da = space E" "dynkin da" + "sets E \ sets da" + have "A \ sets da" + apply (rule impE[OF spec[OF asm(2)], of "sets da"]) + apply (rule exI[of _ da]) + using exI[of _ da] asm(4,5,6) by auto + thus "x \ space E" using dynkin_subset[OF asm(5)] asm by auto + qed + next + show "space E \ Dy d" + unfolding Dy_def \E_def sets_\E_def + proof auto + fix d assume asm: "dynkin d" "space d = space E" "sets E \ sets d" + hence "space d \ sets d" using dynkin_space[OF asm(1)] by auto + thus "space E \ sets d" using asm by auto + next + fix da :: "'a algebra" assume asm: "dynkin da" "space da = space E" "sets E \ sets da" + have d: "d = space E \ d" + using dasm dynkin_subset[OF asm(1)] asm(2) dynkin_subset[OF \ynkin] + unfolding \E_def by auto + hence "space E \ d \ sets \E" unfolding \E_def + using dasm by auto + have "sets \E \ sets da" unfolding \E_def sets_\E_def using asm + by auto + thus "space E \ d \ sets da" using dasm asm d dynkin_subset[OF \ynkin] + unfolding \E_def by auto + qed + next + fix a b assume absm: "a \ Dy d" "b \ Dy d" + hence "a \ sets \E" "b \ sets \E" + unfolding Dy_def \E_def by auto + hence *: "b - a \ sets \E" + using dynkin_diff[OF \ynkin] by auto + have "a \ d \ sets \E" "b \ d \ sets \E" + using absm unfolding Dy_def \E_def by auto + hence "(b \ d) - (a \ d) \ sets \E" + using dynkin_diff[OF \ynkin] by auto + hence **: "(b - a) \ d \ sets \E" by (auto simp add:Diff_Int_distrib2) + thus "b - a \ Dy d" + using * ** unfolding Dy_def \E_def by auto + next + fix a assume aasm: "\i j :: nat. i \ j \ a i \ a j = {}" "\i. a i \ Dy d" + hence "\ i. a i \ sets \E" + unfolding Dy_def \E_def by auto + from dynkin_UN[OF \ynkin aasm(1) this] + have *: "UNION UNIV a \ sets \E" by auto + from aasm + have aE: "\ i. a i \ d \ sets \E" + unfolding Dy_def \E_def by auto + from aasm + have "\i j :: nat. i \ j \ (a i \ d) \ (a j \ d) = {}" by auto + from dynkin_UN[OF \ynkin this] + have "UNION UNIV (\ i. a i \ d) \ sets \E" + using aE by auto + hence **: "UNION UNIV a \ d \ sets \E" by auto + from * ** show "UNION UNIV a \ Dy d" unfolding Dy_def \E_def by auto + qed } note Dy_nkin = this + have E_\E: "sets E \ sets \E" + unfolding \E_def sets_\E_def by auto + { fix d assume dasm: "d \ sets \E" + { fix e assume easm: "e \ sets E" + hence deasm: "e \ sets \E" + unfolding \E_def sets_\E_def by auto + have subset: "Dy e \ sets \E" + unfolding Dy_def \E_def by auto + { fix e' assume e'asm: "e' \ sets E" + have "e' \ e \ sets E" + using easm e'asm stab unfolding Int_stable_def by auto + hence "e' \ e \ sets \E" + unfolding \E_def sets_\E_def by auto + hence "e' \ Dy e" using e'asm unfolding Dy_def \E_def sets_\E_def by auto } + hence E_Dy: "sets E \ Dy e" by auto + have "\ space = space E, sets = Dy e \ \ {d | d. dynkin d \ space d = space E \ sets E \ sets d}" + using Dy_nkin[OF deasm[unfolded \E_def, simplified]] E_\E E_Dy by auto + hence "sets_\E \ Dy e" + unfolding sets_\E_def + proof auto fix x + assume asm: "\xa. (\d :: 'a algebra. xa = sets d \ + dynkin d \ + space d = space E \ + sets E \ sets d) \ + x \ xa" + "dynkin \space = space E, sets = Dy e\" + "sets E \ Dy e" + show "x \ Dy e" + apply (rule impE[OF spec[OF asm(1), of "Dy e"]]) + apply (rule exI[of _ "\space = space E, sets = Dy e\"]) + using asm by auto + qed + hence "sets \E = Dy e" using subset unfolding \E_def by auto + hence "d \ e \ sets \E" + using dasm easm deasm unfolding Dy_def \E_def by auto + hence "e \ Dy d" using deasm + unfolding Dy_def \E_def + by (auto simp add:Int_commute) } + hence "sets E \ Dy d" by auto + hence "sets \E \ Dy d" using Dy_nkin[OF dasm[unfolded \E_def, simplified]] + unfolding \E_def sets_\E_def + proof auto + fix x + assume asm: "sets E \ Dy d" + "dynkin \space = space E, sets = Dy d\" + "\xa. (\d :: 'a algebra. xa = sets d \ dynkin d \ + space d = space E \ sets E \ sets d) \ x \ xa" + show "x \ Dy d" + apply (rule impE[OF spec[OF asm(3), of "Dy d"]]) + apply (rule exI[of _ "\space = space E, sets = Dy d\"]) + using asm by auto + qed + hence *: "sets \E = Dy d" + unfolding Dy_def \E_def by auto + fix a assume aasm: "a \ sets \E" + hence "a \ d \ sets \E" + using * dasm unfolding Dy_def \E_def by auto } note \E_stab = this + have "sigma_algebra D" + apply unfold_locales + using dynkin_subset[OF dyn] + using dynkin_diff[OF dyn, of _ "space D", OF _ dynkin_space[OF dyn]] + using dynkin_diff[OF dyn, of "space D" "space D", OF dynkin_space[OF dyn] dynkin_space[OF dyn]] + using dynkin_space[OF dyn] + proof auto + fix A :: "nat \ 'a set" assume Asm: "range A \ sets D" "\A. A \ sets D \ A \ space D" + "\a. a \ sets D \ space D - a \ sets D" + "{} \ sets D" "space D \ sets D" + let "?A i" = "A i - (\ j \ {..< i}. A j)" + { fix i :: nat assume "i > 0" + have "(\ j \ {..< i}. A j) \ sets \E" + apply (induct i) + apply auto + } + from dynkin_UN + qed +qed + +lemma +(* definition prod_sets where "prod_sets A B = {z. \x \ A. \y \ B. z = x \ y}" @@ -153,4 +401,5 @@ unfolding finite_prod_measure_space[OF N, symmetric] using finite_measure_space_finite_prod_measure[OF N] . +*) end \ No newline at end of file