equal
deleted
inserted
replaced
220 where "One \<equiv> \<Sum>Basis" |
220 where "One \<equiv> \<Sum>Basis" |
221 |
221 |
222 lemma empty_as_interval: "{} = cbox One (0::'a::euclidean_space)" |
222 lemma empty_as_interval: "{} = cbox One (0::'a::euclidean_space)" |
223 using nonempty_Basis |
223 using nonempty_Basis |
224 by (fastforce simp add: set_eq_iff mem_box) |
224 by (fastforce simp add: set_eq_iff mem_box) |
225 |
|
226 lemma One_nonneg: "0 \<le> (One::'a::ordered_euclidean_space)" |
|
227 by (auto intro: setsum_nonneg) |
|
228 |
225 |
229 lemma interior_subset_union_intervals: |
226 lemma interior_subset_union_intervals: |
230 assumes "i = cbox a b" |
227 assumes "i = cbox a b" |
231 and "j = cbox c d" |
228 and "j = cbox c d" |
232 and "interior j \<noteq> {}" |
229 and "interior j \<noteq> {}" |
514 done |
511 done |
515 |
512 |
516 lemma content_real: "a \<le> b \<Longrightarrow> content {a..b} = b - a" |
513 lemma content_real: "a \<le> b \<Longrightarrow> content {a..b} = b - a" |
517 by (auto simp: interval_upperbound_def interval_lowerbound_def SUP_def INF_def content_def) |
514 by (auto simp: interval_upperbound_def interval_lowerbound_def SUP_def INF_def content_def) |
518 |
515 |
519 lemma content_closed_interval: |
|
520 fixes a :: "'a::ordered_euclidean_space" |
|
521 assumes "a \<le> b" |
|
522 shows "content {a .. b} = (\<Prod>i\<in>Basis. b\<bullet>i - a\<bullet>i)" |
|
523 using content_cbox[of a b] assms |
|
524 by (simp add: cbox_interval eucl_le[where 'a='a]) |
|
525 |
|
526 lemma content_singleton[simp]: "content {a} = 0" |
516 lemma content_singleton[simp]: "content {a} = 0" |
527 proof - |
517 proof - |
528 have "content (cbox a a) = 0" |
518 have "content (cbox a a) = 0" |
529 by (subst content_cbox) (auto simp: ex_in_conv) |
519 by (subst content_cbox) (auto simp: ex_in_conv) |
530 then show ?thesis by (simp add: cbox_sing) |
520 then show ?thesis by (simp add: cbox_sing) |
1171 qed |
1161 qed |
1172 |
1162 |
1173 lemma elementary_bounded[dest]: |
1163 lemma elementary_bounded[dest]: |
1174 fixes s :: "'a::euclidean_space set" |
1164 fixes s :: "'a::euclidean_space set" |
1175 shows "p division_of s \<Longrightarrow> bounded s" |
1165 shows "p division_of s \<Longrightarrow> bounded s" |
1176 unfolding division_of_def by (metis bounded_Union bounded_interval) |
1166 unfolding division_of_def by (metis bounded_Union bounded_cbox) |
1177 |
1167 |
1178 lemma elementary_subset_cbox: |
1168 lemma elementary_subset_cbox: |
1179 "p division_of s \<Longrightarrow> \<exists>a b. s \<subseteq> cbox a (b::'a::euclidean_space)" |
1169 "p division_of s \<Longrightarrow> \<exists>a b. s \<subseteq> cbox a (b::'a::euclidean_space)" |
1180 by (meson elementary_bounded bounded_subset_cbox) |
1170 by (meson elementary_bounded bounded_subset_cbox) |
1181 |
1171 |
1996 |
1986 |
1997 |
1987 |
1998 subsection {* The set we're concerned with must be closed. *} |
1988 subsection {* The set we're concerned with must be closed. *} |
1999 |
1989 |
2000 lemma division_of_closed: |
1990 lemma division_of_closed: |
2001 fixes i :: "'n::ordered_euclidean_space set" |
1991 fixes i :: "'n::euclidean_space set" |
2002 shows "s division_of i \<Longrightarrow> closed i" |
1992 shows "s division_of i \<Longrightarrow> closed i" |
2003 unfolding division_of_def by fastforce |
1993 unfolding division_of_def by fastforce |
2004 |
1994 |
2005 subsection {* General bisection principle for intervals; might be useful elsewhere. *} |
1995 subsection {* General bisection principle for intervals; might be useful elsewhere. *} |
2006 |
1996 |
3757 show ?thesis |
3747 show ?thesis |
3758 apply (subst *) |
3748 apply (subst *) |
3759 apply (rule tagged_division_union[OF assms(1-2)]) |
3749 apply (rule tagged_division_union[OF assms(1-2)]) |
3760 unfolding interval_split[OF k] interior_cbox |
3750 unfolding interval_split[OF k] interior_cbox |
3761 using k |
3751 using k |
3762 apply (auto simp add: box elim!: ballE[where x=k]) |
3752 apply (auto simp add: box_def elim!: ballE[where x=k]) |
3763 done |
3753 done |
3764 qed |
3754 qed |
3765 |
3755 |
3766 lemma tagged_division_union_interval_real: |
3756 lemma tagged_division_union_interval_real: |
3767 fixes a :: real |
3757 fixes a :: real |
7129 unfolding integrable_on_def |
7119 unfolding integrable_on_def |
7130 apply rule |
7120 apply rule |
7131 apply (rule has_integral_const) |
7121 apply (rule has_integral_const) |
7132 done |
7122 done |
7133 |
7123 |
7134 lemma integrable_const_ivl[intro]: |
|
7135 fixes a::"'a::ordered_euclidean_space" |
|
7136 shows "(\<lambda>x. c) integrable_on {a .. b}" |
|
7137 unfolding cbox_interval[symmetric] |
|
7138 by (rule integrable_const) |
|
7139 |
|
7140 lemma integral_has_vector_derivative: |
7124 lemma integral_has_vector_derivative: |
7141 fixes f :: "real \<Rightarrow> 'a::banach" |
7125 fixes f :: "real \<Rightarrow> 'a::banach" |
7142 assumes "continuous_on {a .. b} f" |
7126 assumes "continuous_on {a .. b} f" |
7143 and "x \<in> {a .. b}" |
7127 and "x \<in> {a .. b}" |
7144 shows "((\<lambda>u. integral {a .. u} f) has_vector_derivative f(x)) (at x within {a .. b})" |
7128 shows "((\<lambda>u. integral {a .. u} f) has_vector_derivative f(x)) (at x within {a .. b})" |
9044 apply auto |
9028 apply auto |
9045 done |
9029 done |
9046 } |
9030 } |
9047 assume "\<exists>a b. s = cbox a b" |
9031 assume "\<exists>a b. s = cbox a b" |
9048 then guess a b by (elim exE) note s=this |
9032 then guess a b by (elim exE) note s=this |
9049 from bounded_interval[of a b, THEN conjunct1, unfolded bounded_pos] guess B .. |
9033 from bounded_cbox[of a b, unfolded bounded_pos] guess B .. |
9050 note B = conjunctD2[OF this,rule_format] show ?thesis |
9034 note B = conjunctD2[OF this,rule_format] show ?thesis |
9051 apply safe |
9035 apply safe |
9052 proof - |
9036 proof - |
9053 fix e :: real |
9037 fix e :: real |
9054 assume ?l and "e > 0" |
9038 assume ?l and "e > 0" |
9600 defer |
9584 defer |
9601 apply (rule integrable_altD(1)[OF assms(1)]) |
9585 apply (rule integrable_altD(1)[OF assms(1)]) |
9602 using assms(2) |
9586 using assms(2) |
9603 apply auto |
9587 apply auto |
9604 done |
9588 done |
9605 |
|
9606 lemma integrable_on_subinterval: |
|
9607 fixes f :: "'n::ordered_euclidean_space \<Rightarrow> 'a::banach" |
|
9608 assumes "f integrable_on s" |
|
9609 and "{a .. b} \<subseteq> s" |
|
9610 shows "f integrable_on {a .. b}" |
|
9611 using integrable_on_subcbox[of f s a b] assms |
|
9612 by (simp add: cbox_interval) |
|
9613 |
9589 |
9614 |
9590 |
9615 subsection {* A straddling criterion for integrability *} |
9591 subsection {* A straddling criterion for integrability *} |
9616 |
9592 |
9617 lemma integrable_straddle_interval: |
9593 lemma integrable_straddle_interval: |