1 (* Title : Integration.ML |
1 (* Title : Integration.ML |
2 Author : Jacques D. Fleuriot |
2 Author : Jacques D. Fleuriot |
3 Copyright : 2000 University of Edinburgh |
3 Copyright : 2000 University of Edinburgh |
4 Description : Theory of integration (c.f. Harison's HOL development) |
4 Description : Theory of integration (c.f. Harison's HOL development) |
5 *) |
5 *) |
|
6 |
|
7 val mult_2 = thm"mult_2"; |
|
8 val mult_2_right = thm"mult_2_right"; |
6 |
9 |
7 Goalw [psize_def] "a = b ==> psize (%n. if n = 0 then a else b) = 0"; |
10 Goalw [psize_def] "a = b ==> psize (%n. if n = 0 then a else b) = 0"; |
8 by Auto_tac; |
11 by Auto_tac; |
9 qed "partition_zero"; |
12 qed "partition_zero"; |
10 Addsimps [partition_zero]; |
13 Addsimps [partition_zero]; |
356 "abs((rsum(D,p) f - k2) - (rsum(D,p) f - k1)) < abs(k1 - k2)" 1); |
359 "abs((rsum(D,p) f - k2) - (rsum(D,p) f - k1)) < abs(k1 - k2)" 1); |
357 by (arith_tac 1); |
360 by (arith_tac 1); |
358 by (dtac add_strict_mono 1 THEN assume_tac 1); |
361 by (dtac add_strict_mono 1 THEN assume_tac 1); |
359 by (auto_tac (claset(), |
362 by (auto_tac (claset(), |
360 HOL_ss addsimps [left_distrib RS sym, |
363 HOL_ss addsimps [left_distrib RS sym, |
361 real_mult_2_right RS sym, mult_less_cancel_right])); |
364 mult_2_right RS sym, mult_less_cancel_right])); |
362 by (ALLGOALS(arith_tac)); |
365 by (ALLGOALS(arith_tac)); |
363 qed "Integral_unique"; |
366 qed "Integral_unique"; |
364 |
367 |
365 Goalw [Integral_def] "Integral(a,a) f 0"; |
368 Goalw [Integral_def] "Integral(a,a) f 0"; |
366 by Auto_tac; |
369 by Auto_tac; |
954 by (REPEAT(dtac spec 1) THEN Auto_tac); |
957 by (REPEAT(dtac spec 1) THEN Auto_tac); |
955 by (dres_inst_tac [("a","abs (rsum (D, p) f - k1)* 2"), |
958 by (dres_inst_tac [("a","abs (rsum (D, p) f - k1)* 2"), |
956 ("c","abs (rsum (D, p) g - k2) * 2")] |
959 ("c","abs (rsum (D, p) g - k2) * 2")] |
957 add_strict_mono 1 THEN assume_tac 1); |
960 add_strict_mono 1 THEN assume_tac 1); |
958 by (auto_tac (claset(),HOL_ss addsimps [rsum_add,left_distrib RS sym, |
961 by (auto_tac (claset(),HOL_ss addsimps [rsum_add,left_distrib RS sym, |
959 real_mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"])); |
962 mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"])); |
960 by (arith_tac 1); |
963 by (arith_tac 1); |
961 qed "Integral_add_fun"; |
964 qed "Integral_add_fun"; |
962 |
965 |
963 Goal "[| partition(a,b) D; r < psize D |] ==> 0 < D (Suc r) - D r"; |
966 Goal "[| partition(a,b) D; r < psize D |] ==> 0 < D (Suc r) - D r"; |
964 by (auto_tac (claset(),simpset() addsimps [partition])); |
967 by (auto_tac (claset(),simpset() addsimps [partition])); |
1013 by (subgoal_tac |
1016 by (subgoal_tac |
1014 "abs((rsum(D,p) f - k1) - (rsum(D,p) g - k2)) < abs(k1 - k2)" 1); |
1017 "abs((rsum(D,p) f - k1) - (rsum(D,p) g - k2)) < abs(k1 - k2)" 1); |
1015 by (arith_tac 1); |
1018 by (arith_tac 1); |
1016 by (dtac add_strict_mono 1 THEN assume_tac 1); |
1019 by (dtac add_strict_mono 1 THEN assume_tac 1); |
1017 by (auto_tac (claset(),HOL_ss addsimps [left_distrib RS sym, |
1020 by (auto_tac (claset(),HOL_ss addsimps [left_distrib RS sym, |
1018 real_mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"])); |
1021 mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"])); |
1019 by (arith_tac 1); |
1022 by (arith_tac 1); |
1020 qed "Integral_le"; |
1023 qed "Integral_le"; |
1021 |
1024 |
1022 Goalw [Integral_def] |
1025 Goalw [Integral_def] |
1023 "(EX k. Integral(a,b) f k) ==> \ |
1026 "(EX k. Integral(a,b) f k) ==> \ |
1035 by (forw_inst_tac [("x","D2")] spec 1); |
1038 by (forw_inst_tac [("x","D2")] spec 1); |
1036 by (REPEAT(dtac spec 1) THEN Auto_tac); |
1039 by (REPEAT(dtac spec 1) THEN Auto_tac); |
1037 by (thin_tac "0 < e" 1); |
1040 by (thin_tac "0 < e" 1); |
1038 by (dtac add_strict_mono 1 THEN assume_tac 1); |
1041 by (dtac add_strict_mono 1 THEN assume_tac 1); |
1039 by (auto_tac (claset(),HOL_ss addsimps [left_distrib RS sym, |
1042 by (auto_tac (claset(),HOL_ss addsimps [left_distrib RS sym, |
1040 real_mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"])); |
1043 mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"])); |
1041 by (arith_tac 1); |
1044 by (arith_tac 1); |
1042 qed "Integral_imp_Cauchy"; |
1045 qed "Integral_imp_Cauchy"; |
1043 |
1046 |
1044 Goalw [Cauchy_def] |
1047 Goalw [Cauchy_def] |
1045 "Cauchy X = \ |
1048 "Cauchy X = \ |