Riemann–Stieltjes and Riemann integrals #
In this file we give some API for intervals (using the type BoxIntegral.Box (Fin 1)), and
use this to define the (one-dimensional) Riemann–Stieltjes integral ∫ˢ x in a..b, f x ∂[B; g]
from a to b of a function f : ℝ → E against an integrator g : ℝ → F, paired
by a continuous bilinear map B : E →L[ℝ] F →L[ℝ] G. It is not required that a < b.
The notation here is deliberately chosen to mimic the notation ∫ x in a..b, f x ∂μ for
IntervalIntegral, as well as the notation ∫ᵛ x, f x ∂[B; μ] for
MeasureTheory.VectorMeasure.Integral.
The bilinear pairing B covers the three main variants of
Stieltjes integration that appear in practice:
fscalar,gvector-valued (B = .lsmul ℝ ℝ): notation∫ˢ x in a..b, f x ∂•g.fvector-valued,gscalar (B = (.lsmul ℝ ℝ).flip): notation∫ˢ x in a..b, f x ∂<•g.fandgboth real or both complex (B = .mul ℝ E): no dedicated shorthand; use the general∫ˢ x in a..b, f x ∂[B; g].
The . here can be removed if ContinuousLinearMap is open.
The Riemann integral is the special case F = ℝ, B = (.lsmul ℝ ℝ).flip and g = id, and
is denoted ∫ʳ x in a..b, f x.
Key definitions #
interval hab: the one-dimensional interval(a, b]as aBox (Fin 1), given a proof ofhab : a < b.BoxAdditiveMap.increment g: the box-additive map onBox (Fin 1)defined byJ ↦ g J.upper₁ - g J.lower₁, whereg : ℝ → Mis a function to an additive commutative groupM.BoxIntegral.StieltjesIntegrable a b B f g: the predicate that the integral∫ˢ x in a..b, f x ∂[B; g]exists.BoxIntegral.HasStieltjesIntegral a b B f g L: the predicate that the integral∫ˢ x in a..b, f x ∂[B; g]exists and equalsL.BoxIntegral.stieltjesIntegral a b B f g: the value of∫ˢ x in a..b, f x ∂[B; g]if it exists, or the junk value of0otherwise.BoxIntegral.RiemannIntegrable a b f: the predicate that the Riemann integral∫ʳ x in a..b, f xexists.BoxIntegral.HasRiemannIntegral a b f L: the predicate that the Riemann integral∫ʳ x in a..b, f xexists and equalsL.BoxIntegral.riemannIntegral a b f: the value of∫ʳ x in a..b, f xif it exists, or the junk value of0otherwise.
These notions are named in analogy with BoxIntegral.Integrable, BoxIntegral.HasIntegral, and
BoxIntegral.integral.
Thanks to ICERM for hosting the workshop "Formalization of Analysis" where most of this work was conducted.
Usage #
Some very basic API is provided in this file. More extensive API may be found at
https://github.com/leanprover-community/mathlib-at-ICERM26/tree/stieltjes . However, unless
one is specifically interested in the Riemann aspect of integration theory, it is recommended that
one instead use the more general integration API already in
Mathlib, specifically MeasureTheory.Integral.Bochner (for
integration against non-negative measures) or MeasureTheory.VectorMeasure (to handle
Lebesgue--Stieltjes) type integrals.
Tags #
Stieltjes integral, Riemann–Stieltjes, Riemann integral
One-dimensional intervals #
Ioc intervals can be represented within the BoxIntegral API as objects of type Box (Fin 1).
We provide some minimal API for manipulating such intervals.
Note: one could use Equiv.funUnique (Fin 1) ℝ instead of using the maps x ↦ x 0 and
x ↦ ![x] to identify Fin 1 → ℝ and ℝ, but this does not seem to gain very much.
The increment of a function on ℝ as a box-additive map #
Underlying construction for increment: sends g : ℝ → M to the box-additive map on
Box (Fin 1) defined by J ↦ g J.upper₁ - g J.lower₁.
Equations
- BoxIntegral.BoxAdditiveMap.incrementAux g = BoxIntegral.BoxAdditiveMap.ofMapSplitAdd (fun (J : BoxIntegral.Box (Fin 1)) => g J.upper₁ - g J.lower₁) ⊤ ⋯
Instances For
The box-additive increment sending a function g : ℝ → M to the box-additive map on
Box (Fin 1) defined by J ↦ g J.upper₁ - g J.lower₁, bundled as an
AddMonoidHom.
Equations
- BoxIntegral.BoxAdditiveMap.increment = { toFun := BoxIntegral.BoxAdditiveMap.incrementAux, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The increment of ContinuousLinearMap.lsmul ℝ ℝ : ℝ → (E →L[ℝ] E)
equals the Lebesgue volume box-additive map on Box (Fin 1).
Definition of the Riemann--Stieltjes integral #
The (Riemann--)Stieltjes integral predicate of a function f : ℝ → E and g : ℝ → F having
its Riemann--Stieltjes sums converge to a limit L : G, given a bilinear map B : E → F → G and
endpoints a, b takes values in G. Initially defined under the implicit assumption that
a < b.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension of HasStieltjesIntegralOrdered to cover the cases a = b and a > b.
Equations
- One or more equations did not get rendered due to their size.
Instances For
StieltjesIntegrable a b B f g asserts that the Riemann–Stieltjes integral of f against g
paired by B from a to b exists, i.e. some L satisfies HasStieltjesIntegral a b B f g L.
Equations
- RiemannStieltjes.StieltjesIntegrable a b B f g = ∃ (L : G), RiemannStieltjes.HasStieltjesIntegral a b B f g L
Instances For
The Riemann–Stieltjes integral of f against g paired by B from a to b.
Returns the junk value 0 if no such integral exists.
The integral remains meaningful outside of the case a < b.
Equations
- RiemannStieltjes.stieltjesIntegral a b B f g = if h : RiemannStieltjes.StieltjesIntegrable a b B f g then Exists.choose h else 0
Instances For
Notation ∫ˢ x in a..b, f x ∂[B; g] for the Riemann–Stieltjes integral of f against the
integrator g, paired by the bilinear map B. Mirrors the vector-measure integral notation
∫ᵛ x, f x ∂[B; μ], and parallels ∫ x in a..b, f x ∂μ for intervalIntegral.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The special case of ∫ˢ x in a..b, f x ∂[B; g] with f real-valued, g vector-valued, and
B = ContinuousLinearMap.lsmul ℝ ℝ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The special case of ∫ˢ x in a..b, f x ∂[B; g] with f vector-valued, g real-valued, and
B = (ContinuousLinearMap.lsmul ℝ ℝ).flip.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Riemann integral #
HasRiemannIntegral a b f L is defined to equal
HasStieltjesIntegral a b (lsmul ℝ ℝ).flip f id L. Use unfold HasRiemannIntegral or similar
to access the Stieltjes integral API.
Equations
Instances For
RiemannIntegrable a b f is defined to equal
StieltjesIntegrable a b (lsmul ℝ ℝ).flip f id. Use unfold RiemannIntegrable or similar
to access the Stieltjes integral API.
Equations
Instances For
riemannIntegral a b f, with notation ∫ʳ x in a..b, f x, is defined to equal
∫ˢ x in a..b, f x ∂<•id. Use unfold riemannIntegral or similar to access the Stieltjes integral
API. One could relate riemannIntegral to intervalIntegral under suitable hypotheses on f; see
https://github.com/leanprover-community/mathlib-at-ICERM26/blob/stieltjes/Mathlib/Analysis/BoxIntegral/Stieltjes/Measure.lean
Equations
- RiemannStieltjes.riemannIntegral a b f = RiemannStieltjes.stieltjesIntegral a b (ContinuousLinearMap.lsmul ℝ ℝ).flip (fun (x : ℝ) => f x) id
Instances For
riemannIntegral a b f, with notation ∫ʳ x in a..b, f x, is defined to equal
∫ˢ x in a..b, f x ∂<•id. Use unfold riemannIntegral or similar to access the Stieltjes integral
API. One could relate riemannIntegral to intervalIntegral under suitable hypotheses on f; see
https://github.com/leanprover-community/mathlib-at-ICERM26/blob/stieltjes/Mathlib/Analysis/BoxIntegral/Stieltjes/Measure.lean
Equations
- One or more equations did not get rendered due to their size.
Instances For
Simple properties #
Uniqueness: the Riemann–Stieltjes integral, when it exists, is unique.
The existence of a Riemann–Stieltjes integral implies StieltjesIntegrable.
If HasStieltjesIntegral a b B f g L, then ∫ˢ x in a..b, f x ∂[B; g] = L.