# HG changeset patch # User hoelzl # Date 1282828841 -7200 # Node ID 54dbe0368dc617b8050894b4028406d006a6361f # Parent fd7f2e300d9f57d84bd5478b6c7be7ea053c591c changed definition of dynkin; replaces proofs by metis calles diff -r fd7f2e300d9f -r 54dbe0368dc6 src/HOL/Probability/Product_Measure.thy --- a/src/HOL/Probability/Product_Measure.thy Thu Aug 26 13:17:58 2010 +0200 +++ b/src/HOL/Probability/Product_Measure.thy Thu Aug 26 15:20:41 2010 +0200 @@ -2,12 +2,11 @@ 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))" +definition "dynkin M \ + space M \ sets M \ + (\ A \ sets M. A \ space M) \ + (\ a \ sets M. \ b \ sets M. b - a \ sets M) \ + (\A. disjoint_family A \ range A \ sets M \ (\i::nat. A i) \ sets M)" lemma dynkinI: assumes "\ A. A \ sets M \ A \ space M" @@ -15,7 +14,7 @@ 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 +using assms unfolding dynkin_def sorry lemma dynkin_subset: assumes "dynkin M" @@ -37,16 +36,16 @@ 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 +using assms unfolding dynkin_def sorry -definition Int_stable -where "Int_stable M = (\ a \ sets M. (\ b \ sets M. a \ b \ sets M))" +definition "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 + fixes D :: "'a algebra" assumes stab: "Int_stable E" and spac: "space E = space D" and subsED: "sets E \ sets D" @@ -69,23 +68,9 @@ 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 + hence "A \ space d" using dynkin_subset by auto } + show "x \ space \E" using asm unfolding \E_def sets_\E_def using not_empty + by simp (metis dynkin_subset in_mono mem_def) next show "space \E \ sets \E" unfolding \E_def sets_\E_def @@ -100,28 +85,14 @@ 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) + proof (rule dynkinI, safe, simp_all) 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 + by simp (metis dynkin_subset in_mono mem_def) next show "space E \ Dy d" unfolding Dy_def \E_def sets_\E_def @@ -189,20 +160,7 @@ 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 + unfolding sets_\E_def by auto (metis E_Dy simps(1) simps(2) spac) 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 @@ -211,18 +169,8 @@ 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 + unfolding \E_def sets_\E_def + by auto (metis `sets E <= Dy d` simps(1) simps(2) spac) hence *: "sets \E = Dy d" unfolding Dy_def \E_def by auto fix a assume aasm: "a \ sets \E" @@ -234,22 +182,22 @@ 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] + sorry +(* 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 + have "(\ j \ {..< i}. A j) \ sets \E" sorry } + oops qed +*) + + show ?thesis sorry qed -lemma -(* definition prod_sets where "prod_sets A B = {z. \x \ A. \y \ B. z = x \ y}" @@ -401,5 +349,4 @@ unfolding finite_prod_measure_space[OF N, symmetric] using finite_measure_space_finite_prod_measure[OF N] . -*) end \ No newline at end of file