src/HOL/Multivariate_Analysis/Integration.thy
changeset 41863 e5104b436ea1
parent 41851 96184364aa6f
child 41874 a3035d56171d
equal deleted inserted replaced
41855:c3b6e69da386 41863:e5104b436ea1
     4     Translation from HOL light: Robert Himmelmann, TU Muenchen *)
     4     Translation from HOL light: Robert Himmelmann, TU Muenchen *)
     5 
     5 
     6 theory Integration
     6 theory Integration
     7 imports
     7 imports
     8   Derivative
     8   Derivative
     9   "~~/src/HOL/Decision_Procs/Dense_Linear_Order"
       
    10   "~~/src/HOL/Library/Indicator_Function"
     9   "~~/src/HOL/Library/Indicator_Function"
    11 begin
    10 begin
    12 
    11 
    13 declare [[smt_certificates="Integration.certs"]]
    12 declare [[smt_certificates="Integration.certs"]]
    14 declare [[smt_fixed=true]]
    13 declare [[smt_fixed=true]]
    15 declare [[smt_oracle=false]]
    14 declare [[smt_oracle=false]]
    16 
       
    17 setup {* Arith_Data.add_tactic "Ferrante-Rackoff" (K FerranteRackoff.dlo_tac) *}
       
    18 
    15 
    19 (*declare not_less[simp] not_le[simp]*)
    16 (*declare not_less[simp] not_le[simp]*)
    20 
    17 
    21 lemmas scaleR_simps = scaleR_zero_left scaleR_minus_left scaleR_left_diff_distrib
    18 lemmas scaleR_simps = scaleR_zero_left scaleR_minus_left scaleR_left_diff_distrib
    22   scaleR_zero_right scaleR_minus_right scaleR_right_diff_distrib scaleR_eq_0_iff
    19   scaleR_zero_right scaleR_minus_right scaleR_right_diff_distrib scaleR_eq_0_iff
  2877 subsection {* Specialization of additivity to one dimension. *}
  2874 subsection {* Specialization of additivity to one dimension. *}
  2878 
  2875 
  2879 lemma operative_1_lt: assumes "monoidal opp"
  2876 lemma operative_1_lt: assumes "monoidal opp"
  2880   shows "operative opp f \<longleftrightarrow> ((\<forall>a b. b \<le> a \<longrightarrow> f {a..b::real} = neutral opp) \<and>
  2877   shows "operative opp f \<longleftrightarrow> ((\<forall>a b. b \<le> a \<longrightarrow> f {a..b::real} = neutral opp) \<and>
  2881                 (\<forall>a b c. a < c \<and> c < b \<longrightarrow> opp (f{a..c})(f{c..b}) = f {a..b}))"
  2878                 (\<forall>a b c. a < c \<and> c < b \<longrightarrow> opp (f{a..c})(f{c..b}) = f {a..b}))"
  2882   unfolding operative_def content_eq_0 DIM_real less_one dnf_simps(39,41) Eucl_real_simps
  2879   unfolding operative_def content_eq_0 DIM_real less_one simp_thms(39,41) Eucl_real_simps
  2883     (* The dnf_simps simplify "\<exists> x. x= _ \<and> _" and "\<forall>k. k = _ \<longrightarrow> _" *)
  2880     (* The dnf_simps simplify "\<exists> x. x= _ \<and> _" and "\<forall>k. k = _ \<longrightarrow> _" *)
  2884 proof safe fix a b c::"real" assume as:"\<forall>a b c. f {a..b} = opp (f ({a..b} \<inter> {x. x \<le> c}))
  2881 proof safe fix a b c::"real" assume as:"\<forall>a b c. f {a..b} = opp (f ({a..b} \<inter> {x. x \<le> c}))
  2885     (f ({a..b} \<inter> {x. c \<le> x}))" "a < c" "c < b"
  2882     (f ({a..b} \<inter> {x. c \<le> x}))" "a < c" "c < b"
  2886     from this(2-) have "{a..b} \<inter> {x. x \<le> c} = {a..c}" "{a..b} \<inter> {x. x \<ge> c} = {c..b}" by auto
  2883     from this(2-) have "{a..b} \<inter> {x. x \<le> c} = {a..c}" "{a..b} \<inter> {x. x \<ge> c} = {c..b}" by auto
  2887     thus "opp (f {a..c}) (f {c..b}) = f {a..b}" unfolding as(1)[rule_format,of a b "c"] by auto
  2884     thus "opp (f {a..c}) (f {c..b}) = f {a..b}" unfolding as(1)[rule_format,of a b "c"] by auto
  4352 lemma henstock_lemma_part1: fixes f::"'n::ordered_euclidean_space \<Rightarrow> 'a::banach"
  4349 lemma henstock_lemma_part1: fixes f::"'n::ordered_euclidean_space \<Rightarrow> 'a::banach"
  4353   assumes "f integrable_on {a..b}" "0 < e" "gauge d"
  4350   assumes "f integrable_on {a..b}" "0 < e" "gauge d"
  4354   "(\<forall>p. p tagged_division_of {a..b} \<and> d fine p \<longrightarrow> norm (setsum (\<lambda>(x,k). content k *\<^sub>R f x) p - integral({a..b}) f) < e)"
  4351   "(\<forall>p. p tagged_division_of {a..b} \<and> d fine p \<longrightarrow> norm (setsum (\<lambda>(x,k). content k *\<^sub>R f x) p - integral({a..b}) f) < e)"
  4355   and p:"p tagged_partial_division_of {a..b}" "d fine p"
  4352   and p:"p tagged_partial_division_of {a..b}" "d fine p"
  4356   shows "norm(setsum (\<lambda>(x,k). content k *\<^sub>R f x - integral k f) p) \<le> e" (is "?x \<le> e")
  4353   shows "norm(setsum (\<lambda>(x,k). content k *\<^sub>R f x - integral k f) p) \<le> e" (is "?x \<le> e")
  4357 proof-  { presume "\<And>k. 0<k \<Longrightarrow> ?x \<le> e + k" thus ?thesis by arith }
  4354 proof-  { presume "\<And>k. 0<k \<Longrightarrow> ?x \<le> e + k" thus ?thesis by (blast intro: field_le_epsilon) }
  4358   fix k::real assume k:"k>0" note p' = tagged_partial_division_ofD[OF p(1)]
  4355   fix k::real assume k:"k>0" note p' = tagged_partial_division_ofD[OF p(1)]
  4359   have "\<Union>snd ` p \<subseteq> {a..b}" using p'(3) by fastsimp
  4356   have "\<Union>snd ` p \<subseteq> {a..b}" using p'(3) by fastsimp
  4360   note partial_division_of_tagged_division[OF p(1)] this
  4357   note partial_division_of_tagged_division[OF p(1)] this
  4361   from partial_division_extend_interval[OF this] guess q . note q=this and q' = division_ofD[OF this(2)]
  4358   from partial_division_extend_interval[OF this] guess q . note q=this and q' = division_ofD[OF this(2)]
  4362   def r \<equiv> "q - snd ` p" have "snd ` p \<inter> r = {}" unfolding r_def by auto
  4359   def r \<equiv> "q - snd ` p" have "snd ` p \<inter> r = {}" unfolding r_def by auto