527 ultimately have "emeasure lborel A \<le> 0" using emeasure_mono |
527 ultimately have "emeasure lborel A \<le> 0" using emeasure_mono |
528 by (metis assms bot.extremum_unique emeasure_empty image_eq_UN range_from_nat_into sets.empty_sets) |
528 by (metis assms bot.extremum_unique emeasure_empty image_eq_UN range_from_nat_into sets.empty_sets) |
529 thus ?thesis by (auto simp add: emeasure_le_0_iff) |
529 thus ?thesis by (auto simp add: emeasure_le_0_iff) |
530 qed |
530 qed |
531 |
531 |
|
532 lemma countable_imp_null_set_lborel: "countable A \<Longrightarrow> A \<in> null_sets lborel" |
|
533 by (simp add: null_sets_def emeasure_lborel_countable sets.countable) |
|
534 |
|
535 lemma finite_imp_null_set_lborel: "finite A \<Longrightarrow> A \<in> null_sets lborel" |
|
536 by (intro countable_imp_null_set_lborel countable_finite) |
|
537 |
|
538 lemma lborel_neq_count_space[simp]: "lborel \<noteq> count_space (A::('a::ordered_euclidean_space) set)" |
|
539 proof |
|
540 assume asm: "lborel = count_space A" |
|
541 have "space lborel = UNIV" by simp |
|
542 hence [simp]: "A = UNIV" by (subst (asm) asm) (simp only: space_count_space) |
|
543 have "emeasure lborel {undefined::'a} = 1" |
|
544 by (subst asm, subst emeasure_count_space_finite) auto |
|
545 moreover have "emeasure lborel {undefined} \<noteq> 1" by simp |
|
546 ultimately show False by contradiction |
|
547 qed |
|
548 |
532 subsection {* Affine transformation on the Lebesgue-Borel *} |
549 subsection {* Affine transformation on the Lebesgue-Borel *} |
533 |
550 |
534 lemma lborel_eqI: |
551 lemma lborel_eqI: |
535 fixes M :: "'a::euclidean_space measure" |
552 fixes M :: "'a::euclidean_space measure" |
536 assumes emeasure_eq: "\<And>l u. (\<And>b. b \<in> Basis \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b) \<Longrightarrow> emeasure M (box l u) = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
553 assumes emeasure_eq: "\<And>l u. (\<And>b. b \<in> Basis \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b) \<Longrightarrow> emeasure M (box l u) = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
649 has_bochner_integral lborel f x \<longleftrightarrow> |
666 has_bochner_integral lborel f x \<longleftrightarrow> |
650 has_bochner_integral lborel (\<lambda>x. f (t + c * x)) (x /\<^sub>R \<bar>c\<bar>)" |
667 has_bochner_integral lborel (\<lambda>x. f (t + c * x)) (x /\<^sub>R \<bar>c\<bar>)" |
651 unfolding has_bochner_integral_iff lborel_integrable_real_affine_iff |
668 unfolding has_bochner_integral_iff lborel_integrable_real_affine_iff |
652 by (simp_all add: lborel_integral_real_affine[symmetric] divideR_right cong: conj_cong) |
669 by (simp_all add: lborel_integral_real_affine[symmetric] divideR_right cong: conj_cong) |
653 |
670 |
|
671 lemma lborel_distr_uminus: "distr lborel borel uminus = (lborel :: real measure)" |
|
672 by (subst lborel_real_affine[of "-1" 0]) |
|
673 (auto simp: density_1 one_ereal_def[symmetric]) |
|
674 |
|
675 lemma lborel_distr_mult: |
|
676 assumes "(c::real) \<noteq> 0" |
|
677 shows "distr lborel borel (op * c) = density lborel (\<lambda>_. inverse \<bar>c\<bar>)" |
|
678 proof- |
|
679 have "distr lborel borel (op * c) = distr lborel lborel (op * c)" by (simp cong: distr_cong) |
|
680 also from assms have "... = density lborel (\<lambda>_. inverse \<bar>c\<bar>)" |
|
681 by (subst lborel_real_affine[of "inverse c" 0]) (auto simp: o_def distr_density_distr) |
|
682 finally show ?thesis . |
|
683 qed |
|
684 |
|
685 lemma lborel_distr_mult': |
|
686 assumes "(c::real) \<noteq> 0" |
|
687 shows "lborel = density (distr lborel borel (op * c)) (\<lambda>_. abs c)" |
|
688 proof- |
|
689 have "lborel = density lborel (\<lambda>_. 1)" by (rule density_1[symmetric]) |
|
690 also from assms have "(\<lambda>_. 1 :: ereal) = (\<lambda>_. inverse (abs c) * abs c)" by (intro ext) simp |
|
691 also have "density lborel ... = density (density lborel (\<lambda>_. inverse (abs c))) (\<lambda>_. abs c)" |
|
692 by (subst density_density_eq) auto |
|
693 also from assms have "density lborel (\<lambda>_. inverse (abs c)) = distr lborel borel (op * c)" |
|
694 by (rule lborel_distr_mult[symmetric]) |
|
695 finally show ?thesis . |
|
696 qed |
|
697 |
|
698 lemma lborel_distr_plus: "distr lborel borel (op + c) = (lborel :: real measure)" |
|
699 by (subst lborel_real_affine[of 1 c]) (auto simp: density_1 one_ereal_def[symmetric]) |
|
700 |
654 interpretation lborel!: sigma_finite_measure lborel |
701 interpretation lborel!: sigma_finite_measure lborel |
655 by (rule sigma_finite_lborel) |
702 by (rule sigma_finite_lborel) |
656 |
703 |
657 interpretation lborel_pair: pair_sigma_finite lborel lborel .. |
704 interpretation lborel_pair: pair_sigma_finite lborel lborel .. |
|
705 |
|
706 lemma lborel_prod: |
|
707 "lborel \<Otimes>\<^sub>M lborel = (lborel :: ('a::euclidean_space \<times> 'b::euclidean_space) measure)" |
|
708 proof (rule lborel_eqI[symmetric], clarify) |
|
709 fix la ua :: 'a and lb ub :: 'b |
|
710 assume lu: "\<And>a b. (a, b) \<in> Basis \<Longrightarrow> (la, lb) \<bullet> (a, b) \<le> (ua, ub) \<bullet> (a, b)" |
|
711 have [simp]: |
|
712 "\<And>b. b \<in> Basis \<Longrightarrow> la \<bullet> b \<le> ua \<bullet> b" |
|
713 "\<And>b. b \<in> Basis \<Longrightarrow> lb \<bullet> b \<le> ub \<bullet> b" |
|
714 "inj_on (\<lambda>u. (u, 0)) Basis" "inj_on (\<lambda>u. (0, u)) Basis" |
|
715 "(\<lambda>u. (u, 0)) ` Basis \<inter> (\<lambda>u. (0, u)) ` Basis = {}" |
|
716 "box (la, lb) (ua, ub) = box la ua \<times> box lb ub" |
|
717 using lu[of _ 0] lu[of 0] by (auto intro!: inj_onI simp add: Basis_prod_def ball_Un box_def) |
|
718 show "emeasure (lborel \<Otimes>\<^sub>M lborel) (box (la, lb) (ua, ub)) = |
|
719 ereal (setprod (op \<bullet> ((ua, ub) - (la, lb))) Basis)" |
|
720 by (simp add: lborel.emeasure_pair_measure_Times Basis_prod_def setprod.union_disjoint |
|
721 setprod.reindex) |
|
722 qed (simp add: borel_prod[symmetric]) |
658 |
723 |
659 (* FIXME: conversion in measurable prover *) |
724 (* FIXME: conversion in measurable prover *) |
660 lemma lborelD_Collect[measurable (raw)]: "{x\<in>space borel. P x} \<in> sets borel \<Longrightarrow> {x\<in>space lborel. P x} \<in> sets lborel" by simp |
725 lemma lborelD_Collect[measurable (raw)]: "{x\<in>space borel. P x} \<in> sets borel \<Longrightarrow> {x\<in>space lborel. P x} \<in> sets lborel" by simp |
661 lemma lborelD[measurable (raw)]: "A \<in> sets borel \<Longrightarrow> A \<in> sets lborel" by simp |
726 lemma lborelD[measurable (raw)]: "A \<in> sets borel \<Longrightarrow> A \<in> sets lborel" by simp |
662 |
727 |