# HG changeset patch # User wenzelm # Date 1546291294 -3600 # Node ID 8fd576a99a5949839b92ba668abb9da7cb58b943 # Parent b07ccc6fb13f862819c10bca56cd0471c1eecd6e# Parent 636b3c03a61af6bd04a1b70cd8c81ffec7f92475 merged diff -r 636b3c03a61a -r 8fd576a99a59 src/HOL/Analysis/Derivative.thy --- a/src/HOL/Analysis/Derivative.thy Mon Dec 31 22:21:02 2018 +0100 +++ b/src/HOL/Analysis/Derivative.thy Mon Dec 31 22:21:34 2018 +0100 @@ -2193,7 +2193,7 @@ using assms(2-3) vector_derivative_works by auto -subsection\The notion of being field differentiable\ +subsection \Field differentiability\ definition%important field_differentiable :: "['a \ 'a::real_normed_field, 'a filter] \ bool" (infixr "(field'_differentiable)" 50) diff -r 636b3c03a61a -r 8fd576a99a59 src/HOL/Analysis/Sigma_Algebra.thy --- a/src/HOL/Analysis/Sigma_Algebra.thy Mon Dec 31 22:21:02 2018 +0100 +++ b/src/HOL/Analysis/Sigma_Algebra.thy Mon Dec 31 22:21:34 2018 +0100 @@ -802,7 +802,7 @@ subsubsection%unimportant \Ring generated by a semiring\ -definition (in semiring_of_sets) +definition (in semiring_of_sets) generated_ring :: "'a set set" where "generated_ring = { \C | C. C \ M \ finite C \ disjoint C }" lemma (in semiring_of_sets) generated_ringE[elim?]: @@ -947,7 +947,7 @@ subsubsection \Closed CDI\ -definition%important closed_cdi where +definition%important closed_cdi :: "'a set \ 'a set set \ bool" where "closed_cdi \ M \ M \ Pow \ & (\s \ M. \ - s \ M) & @@ -1181,16 +1181,16 @@ subsubsection \Dynkin systems\ -locale%important dynkin_system = subset_class + +locale%important Dynkin_system = subset_class + assumes space: "\ \ M" and compl[intro!]: "\A. A \ M \ \ - A \ M" and UN[intro!]: "\A. disjoint_family A \ range A \ M \ (\i::nat. A i) \ M" -lemma (in dynkin_system) empty[intro, simp]: "{} \ M" +lemma (in Dynkin_system) empty[intro, simp]: "{} \ M" using space compl[of "\"] by simp -lemma (in dynkin_system) diff: +lemma (in Dynkin_system) diff: assumes sets: "D \ M" "E \ M" and "D \ E" shows "E - D \ M" proof - @@ -1209,41 +1209,42 @@ finally show ?thesis . qed -lemma dynkin_systemI: +lemma Dynkin_systemI: assumes "\ A. A \ M \ A \ \" "\ \ M" assumes "\ A. A \ M \ \ - A \ M" assumes "\ A. disjoint_family A \ range A \ M \ (\i::nat. A i) \ M" - shows "dynkin_system \ M" - using assms by (auto simp: dynkin_system_def dynkin_system_axioms_def subset_class_def) + shows "Dynkin_system \ M" + using assms by (auto simp: Dynkin_system_def Dynkin_system_axioms_def subset_class_def) -lemma dynkin_systemI': +lemma Dynkin_systemI': assumes 1: "\ A. A \ M \ A \ \" assumes empty: "{} \ M" assumes Diff: "\ A. A \ M \ \ - A \ M" assumes 2: "\ A. disjoint_family A \ range A \ M \ (\i::nat. A i) \ M" - shows "dynkin_system \ M" + shows "Dynkin_system \ M" proof - from Diff[OF empty] have "\ \ M" by auto from 1 this Diff 2 show ?thesis - by (intro dynkin_systemI) auto + by (intro Dynkin_systemI) auto qed -lemma dynkin_system_trivial: - shows "dynkin_system A (Pow A)" - by (rule dynkin_systemI) auto +lemma Dynkin_system_trivial: + shows "Dynkin_system A (Pow A)" + by (rule Dynkin_systemI) auto -lemma sigma_algebra_imp_dynkin_system: - assumes "sigma_algebra \ M" shows "dynkin_system \ M" +lemma sigma_algebra_imp_Dynkin_system: + assumes "sigma_algebra \ M" shows "Dynkin_system \ M" proof - interpret sigma_algebra \ M by fact - show ?thesis using sets_into_space by (fastforce intro!: dynkin_systemI) + show ?thesis using sets_into_space by (fastforce intro!: Dynkin_systemI) qed subsubsection "Intersection sets systems" -definition%important "Int_stable M \ (\ a \ M. \ b \ M. a \ b \ M)" +definition%important Int_stable :: "'a set set \ bool" where +"Int_stable M \ (\ a \ M. \ b \ M. a \ b \ M)" lemma (in algebra) Int_stable: "Int_stable M" unfolding Int_stable_def by auto @@ -1260,7 +1261,7 @@ "Int_stable M \ a \ M \ b \ M \ a \ b \ M" unfolding Int_stable_def by auto -lemma (in dynkin_system) sigma_algebra_eq_Int_stable: +lemma (in Dynkin_system) sigma_algebra_eq_Int_stable: "sigma_algebra \ M \ Int_stable M" proof assume "sigma_algebra \ M" then show "Int_stable M" @@ -1283,48 +1284,48 @@ subsubsection "Smallest Dynkin systems" -definition%important dynkin where - "dynkin \ M = (\{D. dynkin_system \ D \ M \ D})" +definition%important Dynkin :: "'a set \ 'a set set \ 'a set set" where + "Dynkin \ M = (\{D. Dynkin_system \ D \ M \ D})" -lemma dynkin_system_dynkin: +lemma Dynkin_system_Dynkin: assumes "M \ Pow (\)" - shows "dynkin_system \ (dynkin \ M)" -proof (rule dynkin_systemI) - fix A assume "A \ dynkin \ M" + shows "Dynkin_system \ (Dynkin \ M)" +proof (rule Dynkin_systemI) + fix A assume "A \ Dynkin \ M" moreover - { fix D assume "A \ D" and d: "dynkin_system \ D" - then have "A \ \" by (auto simp: dynkin_system_def subset_class_def) } - moreover have "{D. dynkin_system \ D \ M \ D} \ {}" - using assms dynkin_system_trivial by fastforce + { fix D assume "A \ D" and d: "Dynkin_system \ D" + then have "A \ \" by (auto simp: Dynkin_system_def subset_class_def) } + moreover have "{D. Dynkin_system \ D \ M \ D} \ {}" + using assms Dynkin_system_trivial by fastforce ultimately show "A \ \" - unfolding dynkin_def using assms + unfolding Dynkin_def using assms by auto next - show "\ \ dynkin \ M" - unfolding dynkin_def using dynkin_system.space by fastforce + show "\ \ Dynkin \ M" + unfolding Dynkin_def using Dynkin_system.space by fastforce next - fix A assume "A \ dynkin \ M" - then show "\ - A \ dynkin \ M" - unfolding dynkin_def using dynkin_system.compl by force + fix A assume "A \ Dynkin \ M" + then show "\ - A \ Dynkin \ M" + unfolding Dynkin_def using Dynkin_system.compl by force next fix A :: "nat \ 'a set" - assume A: "disjoint_family A" "range A \ dynkin \ M" - show "(\i. A i) \ dynkin \ M" unfolding dynkin_def + assume A: "disjoint_family A" "range A \ Dynkin \ M" + show "(\i. A i) \ Dynkin \ M" unfolding Dynkin_def proof (simp, safe) - fix D assume "dynkin_system \ D" "M \ D" + fix D assume "Dynkin_system \ D" "M \ D" with A have "(\i. A i) \ D" - by (intro dynkin_system.UN) (auto simp: dynkin_def) + by (intro Dynkin_system.UN) (auto simp: Dynkin_def) then show "(\i. A i) \ D" by auto qed qed -lemma dynkin_Basic[intro]: "A \ M \ A \ dynkin \ M" - unfolding dynkin_def by auto +lemma Dynkin_Basic[intro]: "A \ M \ A \ Dynkin \ M" + unfolding Dynkin_def by auto -lemma (in dynkin_system) restricted_dynkin_system: +lemma (in Dynkin_system) restricted_Dynkin_system: assumes "D \ M" - shows "dynkin_system \ {Q. Q \ \ \ Q \ D \ M}" -proof (rule dynkin_systemI, simp_all) + shows "Dynkin_system \ {Q. Q \ \ \ Q \ D \ M}" +proof (rule Dynkin_systemI, simp_all) have "\ \ D = D" using \D \ M\ sets_into_space by auto then show "\ \ D \ M" @@ -1345,87 +1346,87 @@ by (auto simp del: UN_simps) qed -lemma (in dynkin_system) dynkin_subset: +lemma (in Dynkin_system) Dynkin_subset: assumes "N \ M" - shows "dynkin \ N \ M" + shows "Dynkin \ N \ M" proof - - have "dynkin_system \ M" .. - then have "dynkin_system \ M" - using assms unfolding dynkin_system_def dynkin_system_axioms_def subset_class_def by simp - with \N \ M\ show ?thesis by (auto simp add: dynkin_def) + have "Dynkin_system \ M" .. + then have "Dynkin_system \ M" + using assms unfolding Dynkin_system_def Dynkin_system_axioms_def subset_class_def by simp + with \N \ M\ show ?thesis by (auto simp add: Dynkin_def) qed -lemma sigma_eq_dynkin: +lemma sigma_eq_Dynkin: assumes sets: "M \ Pow \" assumes "Int_stable M" - shows "sigma_sets \ M = dynkin \ M" + shows "sigma_sets \ M = Dynkin \ M" proof - - have "dynkin \ M \ sigma_sets (\) (M)" - using sigma_algebra_imp_dynkin_system - unfolding dynkin_def sigma_sets_least_sigma_algebra[OF sets] by auto + have "Dynkin \ M \ sigma_sets (\) (M)" + using sigma_algebra_imp_Dynkin_system + unfolding Dynkin_def sigma_sets_least_sigma_algebra[OF sets] by auto moreover - interpret dynkin_system \ "dynkin \ M" - using dynkin_system_dynkin[OF sets] . - have "sigma_algebra \ (dynkin \ M)" + interpret Dynkin_system \ "Dynkin \ M" + using Dynkin_system_Dynkin[OF sets] . + have "sigma_algebra \ (Dynkin \ M)" unfolding sigma_algebra_eq_Int_stable Int_stable_def proof (intro ballI) - fix A B assume "A \ dynkin \ M" "B \ dynkin \ M" - let ?D = "\E. {Q. Q \ \ \ Q \ E \ dynkin \ M}" + fix A B assume "A \ Dynkin \ M" "B \ Dynkin \ M" + let ?D = "\E. {Q. Q \ \ \ Q \ E \ Dynkin \ M}" have "M \ ?D B" proof fix E assume "E \ M" - then have "M \ ?D E" "E \ dynkin \ M" + then have "M \ ?D E" "E \ Dynkin \ M" using sets_into_space \Int_stable M\ by (auto simp: Int_stable_def) - then have "dynkin \ M \ ?D E" - using restricted_dynkin_system \E \ dynkin \ M\ - by (intro dynkin_system.dynkin_subset) simp_all + then have "Dynkin \ M \ ?D E" + using restricted_Dynkin_system \E \ Dynkin \ M\ + by (intro Dynkin_system.Dynkin_subset) simp_all then have "B \ ?D E" - using \B \ dynkin \ M\ by auto - then have "E \ B \ dynkin \ M" + using \B \ Dynkin \ M\ by auto + then have "E \ B \ Dynkin \ M" by (subst Int_commute) simp then show "E \ ?D B" using sets \E \ M\ by auto qed - then have "dynkin \ M \ ?D B" - using restricted_dynkin_system \B \ dynkin \ M\ - by (intro dynkin_system.dynkin_subset) simp_all - then show "A \ B \ dynkin \ M" - using \A \ dynkin \ M\ sets_into_space by auto + then have "Dynkin \ M \ ?D B" + using restricted_Dynkin_system \B \ Dynkin \ M\ + by (intro Dynkin_system.Dynkin_subset) simp_all + then show "A \ B \ Dynkin \ M" + using \A \ Dynkin \ M\ sets_into_space by auto qed from sigma_algebra.sigma_sets_subset[OF this, of "M"] - have "sigma_sets (\) (M) \ dynkin \ M" by auto - ultimately have "sigma_sets (\) (M) = dynkin \ M" by auto + have "sigma_sets (\) (M) \ Dynkin \ M" by auto + ultimately have "sigma_sets (\) (M) = Dynkin \ M" by auto then show ?thesis - by (auto simp: dynkin_def) + by (auto simp: Dynkin_def) qed -lemma (in dynkin_system) dynkin_idem: - "dynkin \ M = M" +lemma (in Dynkin_system) Dynkin_idem: + "Dynkin \ M = M" proof - - have "dynkin \ M = M" + have "Dynkin \ M = M" proof - show "M \ dynkin \ M" - using dynkin_Basic by auto - show "dynkin \ M \ M" - by (intro dynkin_subset) auto + show "M \ Dynkin \ M" + using Dynkin_Basic by auto + show "Dynkin \ M \ M" + by (intro Dynkin_subset) auto qed then show ?thesis - by (auto simp: dynkin_def) + by (auto simp: Dynkin_def) qed -lemma (in dynkin_system) dynkin_lemma: +lemma (in Dynkin_system) Dynkin_lemma: assumes "Int_stable E" and E: "E \ M" "M \ sigma_sets \ E" shows "sigma_sets \ E = M" proof - have "E \ Pow \" using E sets_into_space by force - then have *: "sigma_sets \ E = dynkin \ E" - using \Int_stable E\ by (rule sigma_eq_dynkin) - then have "dynkin \ E = M" - using assms dynkin_subset[OF E(1)] by simp + then have *: "sigma_sets \ E = Dynkin \ E" + using \Int_stable E\ by (rule sigma_eq_Dynkin) + then have "Dynkin \ E = M" + using assms Dynkin_subset[OF E(1)] by simp with * show ?thesis - using assms by (auto simp: dynkin_def) + using assms by (auto simp: Dynkin_def) qed subsubsection \Induction rule for intersection-stable generators\ @@ -1447,10 +1448,10 @@ interpret sigma_algebra \ "sigma_sets \ G" using closed by (rule sigma_algebra_sigma_sets) from compl[OF _ empty] closed have space: "P \" by simp - interpret dynkin_system \ ?D + interpret Dynkin_system \ ?D by standard (auto dest: sets_into_space intro!: space compl union) have "sigma_sets \ G = ?D" - by (rule dynkin_lemma) (auto simp: basic \Int_stable G\) + by (rule Dynkin_lemma) (auto simp: basic \Int_stable G\) with A show ?thesis by auto qed @@ -1460,13 +1461,16 @@ "positive M \ \ \ {} = 0" definition%important countably_additive :: "'a set set \ ('a set \ ennreal) \ bool" where - "countably_additive M f \ (\A. range A \ M \ disjoint_family A \ (\i. A i) \ M \ +"countably_additive M f \ + (\A. range A \ M \ disjoint_family A \ (\i. A i) \ M \ (\i. f (A i)) = f (\i. A i))" definition%important measure_space :: "'a set \ 'a set set \ ('a set \ ennreal) \ bool" where - "measure_space \ A \ \ sigma_algebra \ A \ positive A \ \ countably_additive A \" +"measure_space \ A \ \ + sigma_algebra \ A \ positive A \ \ countably_additive A \" -typedef%important 'a measure = "{(\::'a set, A, \). (\a\-A. \ a = 0) \ measure_space \ A \ }" +typedef%important 'a measure = + "{(\::'a set, A, \). (\a\-A. \ a = 0) \ measure_space \ A \ }" proof%unimportant have "sigma_algebra UNIV {{}, UNIV}" by (auto simp: sigma_algebra_iff2) @@ -1498,8 +1502,10 @@ interpretation sets: sigma_algebra "space M" "sets M" for M :: "'a measure" using measure_space[of M] by (auto simp: measure_space_def) -definition%important measure_of :: "'a set \ 'a set set \ ('a set \ ennreal) \ 'a measure" where - "measure_of \ A \ = Abs_measure (\, if A \ Pow \ then sigma_sets \ A else {{}, \}, +definition%important measure_of :: "'a set \ 'a set set \ ('a set \ ennreal) \ 'a measure" + where +"measure_of \ A \ = + Abs_measure (\, if A \ Pow \ then sigma_sets \ A else {{}, \}, \a. if a \ sigma_sets \ A \ measure_space \ (sigma_sets \ A) \ then \ a else 0)" abbreviation "sigma \ A \ measure_of \ A (\x. 0)" @@ -1715,8 +1721,9 @@ subsubsection \Measurable functions\ -definition%important measurable :: "'a measure \ 'b measure \ ('a \ 'b) set" (infixr "\\<^sub>M" 60) where - "measurable A B = {f \ space A \ space B. \y \ sets B. f -` y \ space A \ sets A}" +definition%important measurable :: "'a measure \ 'b measure \ ('a \ 'b) set" + (infixr "\\<^sub>M" 60) where +"measurable A B = {f \ space A \ space B. \y \ sets B. f -` y \ space A \ sets A}" lemma measurableI: "(\x. x \ space M \ f x \ space N) \ (\A. A \ sets N \ f -` A \ space M \ sets M) \ @@ -1878,7 +1885,7 @@ subsubsection \Counting space\ definition%important count_space :: "'a set \ 'a measure" where - "count_space \ = measure_of \ (Pow \) (\A. if finite A then of_nat (card A) else \)" +"count_space \ = measure_of \ (Pow \) (\A. if finite A then of_nat (card A) else \)" lemma shows space_count_space[simp]: "space (count_space \) = \" @@ -1955,7 +1962,9 @@ subsubsection%unimportant \Extend measure\ -definition "extend_measure \ I G \ = +definition extend_measure :: "'a set \ 'b set \ ('b \ 'a set) \ ('b \ ennreal) \ 'a measure" + where +"extend_measure \ I G \ = (if (\\'. (\i\I. \' (G i) = \ i) \ measure_space \ (sigma_sets \ (G`I)) \') \ \ (\i\I. \ i = 0) then measure_of \ (G`I) (SOME \'. (\i\I. \' (G i) = \ i) \ measure_space \ (sigma_sets \ (G`I)) \') else measure_of \ (G`I) (\_. 0))" @@ -2015,7 +2024,7 @@ subsection \The smallest $\sigma$-algebra regarding a function\ -definition%important +definition%important vimage_algebra :: "'a set \ ('a \ 'b) \ 'b measure \ 'a measure" where "vimage_algebra X f M = sigma X {f -` A \ X | A. A \ sets M}" lemma space_vimage_algebra[simp]: "space (vimage_algebra X f M) = X" @@ -2090,7 +2099,7 @@ subsubsection \Restricted Space Sigma Algebra\ -definition restrict_space where +definition restrict_space :: "'a measure \ 'a set \ 'a measure" where "restrict_space M \ = measure_of (\ \ space M) (((\) \) ` sets M) (emeasure M)" lemma space_restrict_space: "space (restrict_space M \) = \ \ space M" diff -r 636b3c03a61a -r 8fd576a99a59 src/HOL/Probability/Independent_Family.thy --- a/src/HOL/Probability/Independent_Family.thy Mon Dec 31 22:21:02 2018 +0100 +++ b/src/HOL/Probability/Independent_Family.thy Mon Dec 31 22:21:34 2018 +0100 @@ -118,9 +118,9 @@ and indep_setD_ev2: "B \ events" using indep unfolding indep_set_def indep_sets_def UNIV_bool by auto -lemma (in prob_space) indep_sets_dynkin: +lemma (in prob_space) indep_sets_Dynkin: assumes indep: "indep_sets F I" - shows "indep_sets (\i. dynkin (space M) (F i)) I" + shows "indep_sets (\i. Dynkin (space M) (F i)) I" (is "indep_sets ?F I") proof (subst indep_sets_finite_index_sets, intro allI impI ballI) fix J assume "finite J" "J \ I" "J \ {}" @@ -178,8 +178,8 @@ qed qed } note indep_sets_insert = this - have "dynkin_system (space M) ?D" - proof (rule dynkin_systemI', simp_all cong del: indep_sets_cong, safe) + have "Dynkin_system (space M) ?D" + proof (rule Dynkin_systemI', simp_all cong del: indep_sets_cong, safe) show "indep_sets (G(j := {{}})) K" by (rule indep_sets_insert) auto next @@ -249,8 +249,8 @@ by (auto dest!: sums_unique) qed (insert F, auto) qed (insert sets.sets_into_space, auto) - then have mono: "dynkin (space M) (G j) \ {E \ events. indep_sets (G(j := {E})) K}" - proof (rule dynkin_system.dynkin_subset, safe) + then have mono: "Dynkin (space M) (G j) \ {E \ events. indep_sets (G(j := {E})) K}" + proof (rule Dynkin_system.Dynkin_subset, safe) fix X assume "X \ G j" then show "X \ events" using G \j \ K\ by auto from \indep_sets G K\ @@ -276,7 +276,7 @@ by (intro indep_setsD[OF G(1)]) auto qed qed - then have "indep_sets (G(j := dynkin (space M) (G j))) K" + then have "indep_sets (G(j := Dynkin (space M) (G j))) K" by (rule indep_sets_mono_sets) (insert mono, auto) then show ?case by (rule indep_sets_mono_sets) (insert \j \ K\ \j \ J\, auto simp: G_def) @@ -291,9 +291,9 @@ assumes stable: "\i. i \ I \ Int_stable (F i)" shows "indep_sets (\i. sigma_sets (space M) (F i)) I" proof - - from indep_sets_dynkin[OF indep] + from indep_sets_Dynkin[OF indep] show ?thesis - proof (rule indep_sets_mono_sets, subst sigma_eq_dynkin, simp_all add: stable) + proof (rule indep_sets_mono_sets, subst sigma_eq_Dynkin, simp_all add: stable) fix i assume "i \ I" with indep have "F i \ events" by (auto simp: indep_sets_def) with sets.sets_into_space show "F i \ Pow (space M)" by auto @@ -662,8 +662,8 @@ have X_in: "X \ events" using tail_events_sets A X by auto - interpret D: dynkin_system "space M" ?D - proof (rule dynkin_systemI) + interpret D: Dynkin_system "space M" ?D + proof (rule Dynkin_systemI) fix D assume "D \ ?D" then show "D \ space M" using sets.sets_into_space by auto next @@ -739,8 +739,8 @@ by (intro sigma_sets_subseteq UN_mono) auto then have "tail_events A \ sigma_sets (space M) ?A" unfolding tail_events_def by auto } - also have "sigma_sets (space M) ?A = dynkin (space M) ?A" - proof (rule sigma_eq_dynkin) + also have "sigma_sets (space M) ?A = Dynkin (space M) ?A" + proof (rule sigma_eq_Dynkin) { fix B n assume "B \ sigma_sets (space M) (\m\{..n}. A m)" then have "B \ space M" by induct (insert A sets.sets_into_space[of _ M], auto) } @@ -763,8 +763,8 @@ then show "a \ b \ (\n. sigma_sets (space M) (\i\{..n}. A i))" by auto qed qed - also have "dynkin (space M) ?A \ ?D" - using \?A \ ?D\ by (auto intro!: D.dynkin_subset) + also have "Dynkin (space M) ?A \ ?D" + using \?A \ ?D\ by (auto intro!: D.Dynkin_subset) finally show ?thesis by auto qed