Integrals of Riemann, Henstock-Kurzweil, and McShane #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define the integral of a function over a box in `ℝⁿ. The same definition works for Riemann, Henstock-Kurzweil, and McShane integrals.
As usual, we represent ℝⁿ
as the type of functions ι → ℝ
for some finite type ι
. A rectangular
box (l, u]
in ℝⁿ
is defined to be the set {x : ι → ℝ | ∀ i, l i < x i ∧ x i ≤ u i}
, see
box_integral.box
.
Let vol
be a box-additive function on boxes in ℝⁿ
with codomain E →L[ℝ] F
. Given a function
f : ℝⁿ → E
, a box I
and a tagged partition π
of this box, the integral sum of f
over π
with respect to the volume vol
is the sum of vol J (f (π.tag J))
over all boxes of π
. Here
π.tag J
is the point (tag) in ℝⁿ
associated with the box J
.
The integral is defined as the limit of integral sums along a filter. Different filters correspond
to different integration theories. In order to avoid code duplication, all our definitions and
theorems take an argument l : box_integral.integration_params
. This is a type that holds three
boolean values, and encodes eight filters including those corresponding to Riemann,
Henstock-Kurzweil, and McShane integrals.
Following the design of infinite sums (see has_sum
and tsum
), we define a predicate
box_integral.has_integral
and a function box_integral.integral
that returns a vector satisfying
the predicate or zero if the function is not integrable.
Then we prove some basic properties of box integrals (linearity, a formula for the integral of a
constant). We also prove a version of the Henstock-Sacks inequality (see
box_integral.integrable.dist_integral_sum_le_of_mem_base_set
and
box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set_of_Union_eq
), prove
integrability of continuous functions, and provide a criterion for integrability w.r.t. a
non-Riemann filter (e.g., Henstock-Kurzweil and McShane).
Notation #
ℝⁿ
: local notation forι → ℝ
Tags #
integral
Integral sum and its basic properties #
The integral sum of f : ℝⁿ → E
over a tagged prepartition π
w.r.t. box-additive volume vol
with codomain E →L[ℝ] F
is the sum of vol J (f (π.tag J))
over all boxes of π
.
Equations
- box_integral.integral_sum f vol π = π.to_prepartition.boxes.sum (λ (J : box_integral.box ι), ⇑(⇑vol J) (f (π.tag J)))
Basic integrability theory #
The predicate has_integral I l f vol y
says that y
is the integral of f
over I
along l
w.r.t. volume vol
. This means that integral sums of f
tend to 𝓝 y
along
box_integral.integration_params.to_filter_Union I ⊤
.
Equations
- box_integral.has_integral I l f vol y = filter.tendsto (box_integral.integral_sum f vol) (l.to_filter_Union I ⊤) (nhds y)
A function is integrable if there exists a vector that satisfies the has_integral
predicate.
Equations
- box_integral.integrable I l f vol = ∃ (y : F), box_integral.has_integral I l f vol y
The integral of a function f
over a box I
along a filter l
w.r.t. a volume vol
. Returns
zero on non-integrable functions.
Equations
- box_integral.integral I l f vol = dite (box_integral.integrable I l f vol) (λ (h : box_integral.integrable I l f vol), Exists.some h) (λ (h : ¬box_integral.integrable I l f vol), 0)
Reinterpret box_integral.has_integral
as filter.tendsto
, e.g., dot-notation theorems
that are shadowed in the box_integral.has_integral
namespace.
The ε
-δ
definition of box_integral.has_integral
.
Quite often it is more natural to prove an estimate of the form a * ε
, not ε
in the RHS of
box_integral.has_integral_iff
, so we provide this auxiliary lemma.
In a complete space, a function is integrable if and only if its integral sums form a Cauchy
net. Here we restate this fact in terms of ∀ ε > 0, ∃ r, ...
.
The integral of a nonnegative function w.r.t. a volume generated by a locally-finite measure is nonnegative.
If ‖f x‖ ≤ g x
on [l, u]
and g
is integrable, then the norm of the integral of f
is less
than or equal to the integral of g
.
Henstock-Sacks inequality and integrability on subboxes #
Henstock-Sacks inequality for Henstock-Kurzweil integral says the following. Let f
be a function
integrable on a box I
; let r : ℝⁿ → (0, ∞)
be a function such that for any tagged partition of
I
subordinate to r
, the integral sum over this partition is ε
-close to the integral. Then for
any tagged prepartition (i.e. a finite collections of pairwise disjoint subboxes of I
with tagged
points) π
, the integral sum over π
differs from the integral of f
over the part of I
covered
by π
by at most ε
. The actual statement in the library is a bit more complicated to make it work
for any box_integral.integration_params
. We formalize several versions of this inequality in
box_integral.integrable.dist_integral_sum_le_of_mem_base_set
,
box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set_of_Union_eq
, and
box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set
.
Instead of using predicate assumptions on r
, we define
box_integral.integrable.convergence_r (h : integrable I l f vol) (ε : ℝ) (c : ℝ≥0) : ℝⁿ → (0, ∞)
to be a function r
such that
- if
l.bRiemann
, thenr
is a constant; - if
ε > 0
, then for any tagged partitionπ
ofI
subordinate tor
(more precisely, satisfying the predicatel.mem_base_set I c r
), the integral sum off
overπ
differs from the integral off
overI
by at mostε
.
The proof is mostly based on Russel A. Gordon, The integrals of Lebesgue, Denjoy, Perron, and Henstock.
If ε > 0
, then box_integral.integrable.convergence_r
is a function r : ℝ≥0 → ℝⁿ → (0, ∞)
such that for every c : ℝ≥0
, for every tagged partition π
subordinate to r
(and satisfying
additional distortion estimates if box_integral.integration_params.bDistortion l = tt
), the
corresponding integral sum is ε
-close to the integral.
If box.integral.integration_params.bRiemann = tt
, then r c x
does not depend on x
. If ε ≤ 0
,
then we use r c x = 1
.
Henstock-Sacks inequality. Let r₁ r₂ : ℝⁿ → (0, ∞)
be function such that for any tagged
partition of I
subordinate to rₖ
, k=1,2
, the integral sum of f
over this partition differs
from the integral of f
by at most εₖ
. Then for any two tagged prepartition π₁ π₂
subordinate
to r₁
and r₂
respectively and covering the same part of I
, the integral sums of f
over these
prepartitions differ from each other by at most ε₁ + ε₂
.
The actual statement
- uses
box_integral.integrable.convergence_r
instead of a predicate assumption onr
; - uses
box_integral.integration_params.mem_base_set
instead of “subordinate tor
” to account for additional requirements like being a Henstock partition or having a bounded distortion.
See also box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set_of_Union_eq
and
box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set
.
If f
is integrable on I
along l
, then for two sufficiently fine tagged prepartitions
(in the sense of the filter box_integral.integration_params.to_filter l I
) such that they cover
the same part of I
, the integral sums of f
over π₁
and π₂
are very close to each other.
If f
is integrable on a box I
along l
, then for any fixed subset s
of I
that can be
represented as a finite union of boxes, the integral sums of f
over tagged prepartitions that
cover exactly s
form a Cauchy “sequence” along l
.
If f
is integrable on a box I
, then it is integrable on any subbox of I
.
If f
is integrable on a box I
, then integral sums of f
over tagged prepartitions
that cover exactly a subbox J ≤ I
tend to the integral of f
over J
along l
.
Henstock-Sacks inequality. Let r : ℝⁿ → (0, ∞)
be a function such that for any tagged
partition of I
subordinate to r
, the integral sum of f
over this partition differs from the
integral of f
by at most ε
. Then for any tagged prepartition π
subordinate to r
, the
integral sum of f
over this prepartition differs from the integral of f
over the part of I
covered by π
by at most ε
.
The actual statement
- uses
box_integral.integrable.convergence_r
instead of a predicate assumption onr
; - uses
box_integral.integration_params.mem_base_set
instead of “subordinate tor
” to account for additional requirements like being a Henstock partition or having a bounded distortion; - takes an extra argument
π₀ : prepartition I
and an assumptionπ.Union = π₀.Union
instead of usingπ.to_prepartition
.
Henstock-Sacks inequality. Let r : ℝⁿ → (0, ∞)
be a function such that for any tagged
partition of I
subordinate to r
, the integral sum of f
over this partition differs from the
integral of f
by at most ε
. Then for any tagged prepartition π
subordinate to r
, the
integral sum of f
over this prepartition differs from the integral of f
over the part of I
covered by π
by at most ε
.
The actual statement
- uses
box_integral.integrable.convergence_r
instead of a predicate assumption onr
; - uses
box_integral.integration_params.mem_base_set
instead of “subordinate tor
” to account for additional requirements like being a Henstock partition or having a bounded distortion;
Integral sum of f
over a tagged prepartition π
such that π.Union = π₀.Union
tends to the
sum of integrals of f
over the boxes of π₀
.
If f
is integrable on I
, then λ J, integral J l f vol
is box-additive on subboxes of I
:
if π₁
, π₂
are two prepartitions of I
covering the same part of I
, then the sum of integrals
of f
over the boxes of π₁
is equal to the sum of integrals of f
over the boxes of π₂
.
See also box_integral.integrable.to_box_additive
for a bundled version.
If f
is integrable on I
, then λ J, integral J l f vol
is box-additive on subboxes of I
:
if π₁
, π₂
are two prepartitions of I
covering the same part of I
, then the sum of integrals
of f
over the boxes of π₁
is equal to the sum of integrals of f
over the boxes of π₂
.
See also box_integral.integrable.sum_integral_congr
for an unbundled version.
Equations
- h.to_box_additive = {to_fun := λ (J : box_integral.box ι), box_integral.integral J l f vol, sum_partition_boxes' := _}
Integrability conditions #
A continuous function is box-integrable with respect to any locally finite measure.
This is true for any volume with bounded variation.
This is an auxiliary lemma used to prove two statements at once. Use one of the next two lemmas instead.
A function f
has Henstock (or ⊥
) integral over I
is equal to the value of a box-additive
function g
on I
provided that vol J (f x)
is sufficiently close to g J
for sufficiently
small boxes J ∋ x
. This lemma is useful to prove, e.g., to prove the Divergence theorem for
integral along ⊥
.
Let l
be either box_integral.integration_params.Henstock
or ⊥
. Let g
a box-additive function
on subboxes of I
. Suppose that there exists a nonnegative box-additive function B
and a
countable set s
with the following property.
For every c : ℝ≥0
, a point x ∈ I.Icc
, and a positive ε
there exists δ > 0
such that for any
box J ≤ I
such that
x ∈ J.Icc ⊆ metric.closed_ball x δ
;- if
l.bDistortion
(i.e.,l = ⊥
), then the distortion ofJ
is less than or equal toc
,
the distance between the term vol J (f x)
of an integral sum corresponding to J
and g J
is
less than or equal to ε
if x ∈ s
and is less than or equal to ε * B J
otherwise.
Then f
is integrable on I along
lwith integral
g I`.
Suppose that there exists a nonnegative box-additive function B
with the following property.
For every c : ℝ≥0
, a point x ∈ I.Icc
, and a positive ε
there exists δ > 0
such that for any
box J ≤ I
such that
J.Icc ⊆ metric.closed_ball x δ
;- if
l.bDistortion
(i.e.,l = ⊥
), then the distortion ofJ
is less than or equal toc
,
the distance between the term vol J (f x)
of an integral sum corresponding to J
and g J
is
less than or equal to ε * B J
.
Then f
is McShane integrable on I
with integral g I
.