src/HOL/Hyperreal/Integration.ML
changeset 14387 e96d5c42c4b0
parent 14365 3d4df8c166ae
child 14435 9e22eeccf129
equal deleted inserted replaced
14386:ad1ffcc90162 14387:e96d5c42c4b0
     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 = \