Skip to content
Open
Show file tree
Hide file tree
Changes from 119 commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
21aae86
Draft version
oliver-butterley May 30, 2025
e2b20d9
trim imports
oliver-butterley May 30, 2025
e009f64
Revert "trim imports"
oliver-butterley May 30, 2025
5a390b5
Filter.Tendsto.enorm'
oliver-butterley Jun 2, 2025
bed1aa6
enorm_prod_le_of_le
oliver-butterley Jun 2, 2025
6ab2d07
enorm_tsum_le_tsum_enorm
oliver-butterley Jun 2, 2025
5b2e24d
explicit
oliver-butterley Jun 2, 2025
c3793f3
comment in docstring
oliver-butterley Jun 2, 2025
9bb3663
Merge commit 'c3793f3be149421e18bf18df612a438b9762b7e2' into oliver-b…
oliver-butterley Jun 2, 2025
6dc88ea
clean
oliver-butterley Jun 2, 2025
c5f96a0
Reduced assumptions
oliver-butterley Jun 3, 2025
730777a
variation_of_ENNReal
oliver-butterley Jun 3, 2025
d456743
variation_SignedMeasure placeholder
oliver-butterley Jun 3, 2025
ddebcc7
isInnerPart_of_empty
oliver-butterley Jun 3, 2025
dcdbbb6
isInnerPart_self
oliver-butterley Jun 3, 2025
0861ff7
isInnerPart_monotone
oliver-butterley Jun 3, 2025
e2bf357
variables
oliver-butterley Jun 3, 2025
eb4d4a6
placeholder statements
oliver-butterley Jun 3, 2025
4321c77
isInnerPart_iUnion
oliver-butterley Jun 3, 2025
81af146
isInnerPart_of_disjoint
oliver-butterley Jun 3, 2025
9f65dbb
restriction_isInnerPart
oliver-butterley Jun 3, 2025
6193c13
supPartSum_empty'
oliver-butterley Jun 3, 2025
729dd8b
supSumPart_lt
oliver-butterley Jun 3, 2025
a2eab8f
supSumPart_le
oliver-butterley Jun 3, 2025
a2e614f
le_supSumPart
oliver-butterley Jun 3, 2025
8a4209e
notes
oliver-butterley Jun 3, 2025
22b45b5
var_aux
oliver-butterley Jun 3, 2025
4b5b63b
sum_part_le_tsum_sum_part
oliver-butterley Jun 3, 2025
5d7a442
sum_part_le_tsum_sum_part
oliver-butterley Jun 3, 2025
57c8cb8
isSubadditive_enorm_measure
oliver-butterley Jun 3, 2025
e6a0a9c
update toolchain to v4.20.1-rc1
kim-em Jun 4, 2025
0f91010
le_var_aux_iUnion
oliver-butterley Jun 4, 2025
4345cfa
le_var_aux_iUnion'
oliver-butterley Jun 4, 2025
5c0c94b
chore: bump toolchain to v4.20.1
Vierkantor Jun 4, 2025
1f0a3a0
sum_le_tsum'
oliver-butterley Jun 4, 2025
8c272eb
variation
oliver-butterley Jun 4, 2025
f2dd655
clean
oliver-butterley Jun 4, 2025
c15b5f4
norm_measure_le_variation
oliver-butterley Jun 4, 2025
a185aaa
variation μ = μ
oliver-butterley Jun 4, 2025
42bcdea
Merge commit '5c0c94b3f563ed756b48b9439788c53b0d56a897' into oliver-b…
oliver-butterley Jun 4, 2025
50cb736
correction
oliver-butterley Jun 4, 2025
2df1c9a
correction
oliver-butterley Jun 4, 2025
db8204f
Revert "Merge commit '5c0c94b3f563ed756b48b9439788c53b0d56a897' into …
oliver-butterley Jun 4, 2025
bb83c81
Revert "correction"
oliver-butterley Jun 4, 2025
2bf838d
Revert "correction"
oliver-butterley Jun 4, 2025
0bb1903
Merge branch 'master' into oliver-butterley/Variation
oliver-butterley Jun 4, 2025
58fdd28
correcting merge
oliver-butterley Jun 4, 2025
5176426
correcting
oliver-butterley Jun 4, 2025
9195b21
correction
oliver-butterley Jun 4, 2025
564d3df
correction
oliver-butterley Jun 4, 2025
029e12d
correction
oliver-butterley Jun 4, 2025
1a2c0a7
correction
oliver-butterley Jun 4, 2025
0ab31cc
comments
oliver-butterley Jun 4, 2025
aef3011
few improvements
oliver-butterley Jun 4, 2025
5e13065
monotone_of_ENNReal
oliver-butterley Jun 5, 2025
48366cf
🎨
oliver-butterley Jun 5, 2025
b38d025
biUnion_Finset
oliver-butterley Jun 5, 2025
77b6624
docstring
oliver-butterley Jun 5, 2025
7045c0b
improved ENNReal.sum_le_tsum'
oliver-butterley Jun 5, 2025
e7263bf
variation_SignedMeasure overview
oliver-butterley Jun 6, 2025
d25afb6
le_variation'
oliver-butterley Jun 6, 2025
4bb84db
to do
oliver-butterley Jun 6, 2025
8e49d8c
comments
oliver-butterley Jun 6, 2025
32fe360
variation_SignedMeasure (hard direction done)
oliver-butterley Jun 6, 2025
508063e
to do
oliver-butterley Jun 6, 2025
71b720e
μ (s ∩ p) - μ (sᶜ ∩ p)
oliver-butterley Jun 6, 2025
5da1d5b
sketch of proof with sign error
oliver-butterley Jun 6, 2025
76e18b0
|μ p| ≤ μ (s ∩ p) - μ (sᶜ ∩ p)
oliver-butterley Jun 6, 2025
78ade6e
messy but close
oliver-butterley Jun 6, 2025
5dbc563
no sorry (but huge mess at the end)
oliver-butterley Jun 7, 2025
11f5917
few refinements
oliver-butterley Jun 8, 2025
a955336
Merge branch 'master' into oliver-butterley/Variation
oliver-butterley Jun 8, 2025
09de77d
mk_all
oliver-butterley Jun 8, 2025
91650e3
comment
oliver-butterley Jun 8, 2025
c374b13
remove have
oliver-butterley Jun 9, 2025
51aecd1
refine imports
oliver-butterley Jun 9, 2025
e2af081
remove variation'
oliver-butterley Jun 9, 2025
88dca42
`signedMeasure_totalVariation_eq`
oliver-butterley Jun 9, 2025
f22bdf4
organize more
oliver-butterley Jun 9, 2025
f6925f3
μ ≪ᵥ μ.variation
oliver-butterley Jun 10, 2025
0b8fadf
missed simp
oliver-butterley Jun 10, 2025
34ec607
spaces, etc
oliver-butterley Jun 10, 2025
cb405ec
absolutelyContinuous
oliver-butterley Jun 10, 2025
e7470a7
min-imports
oliver-butterley Jun 10, 2025
8aa4fb2
Merge branch 'master' into oliver-butterley/Variation
oliver-butterley Jun 10, 2025
40e0068
divide file
oliver-butterley Jun 10, 2025
a32ee53
update Mathlib.lean
oliver-butterley Jun 10, 2025
c574aa9
Polar decomposition
oliver-butterley Jun 11, 2025
235a27f
Merge branch 'master' into oliver-butterley/Variation
oliver-butterley Jun 19, 2025
3112096
reduce to defs
oliver-butterley Jun 19, 2025
69a078b
update imports
oliver-butterley Jun 19, 2025
75eb79d
reduce lemmas
oliver-butterley Jun 19, 2025
fe224e4
update imports
oliver-butterley Jun 19, 2025
9eacf04
Merge commit '69a078bb703e8914d89ec793fff6fd5359dd2c3d' into variatio…
oliver-butterley Jun 19, 2025
7ba4d1e
update imports
oliver-butterley Jun 19, 2025
168264c
add lemma
oliver-butterley Jun 19, 2025
ebbea8c
correct problems
oliver-butterley Jun 19, 2025
e8b25e8
summary
oliver-butterley Jun 19, 2025
04a2211
remove #
oliver-butterley Jun 19, 2025
78a4894
Merge commit '04a22113d4d97aee5df8d4997a8c6a519046820b' into variatio…
oliver-butterley Jun 19, 2025
acc231c
update mathlib.lean
oliver-butterley Jun 19, 2025
d3f8231
Merge remote-tracking branch 'oliver-butterley/variation-lemmas-1' in…
yoh-tanimoto Aug 15, 2025
78f133d
Create Integral.lean
yoh-tanimoto Aug 15, 2025
6aae6ca
Update Mathlib.lean
yoh-tanimoto Aug 15, 2025
59bb59b
rename
yoh-tanimoto Aug 15, 2025
b3073df
remove duplicate
yoh-tanimoto Aug 15, 2025
af44b78
add docstrings
yoh-tanimoto Aug 16, 2025
825a92b
docstring, `withParing.integral` as CLM
yoh-tanimoto Aug 16, 2025
22ceb53
linter
yoh-tanimoto Aug 16, 2025
addc0ed
Merge remote-tracking branch 'upstream/master' into yoh-tanimoto-vect…
yoh-tanimoto Aug 20, 2025
fc4b26b
Merge branch 'master' into yoh-tanimoto-vectormeasure-integral
yoh-tanimoto Jan 5, 2026
3df6d4c
Update Defs.lean
yoh-tanimoto Jan 5, 2026
0610d69
adapt merge master
yoh-tanimoto Jan 5, 2026
3f1be56
Update Lemmas.lean
yoh-tanimoto Jan 5, 2026
f752977
module
yoh-tanimoto Jan 5, 2026
627162d
Merge branch 'master' into yoh-tanimoto-vectormeasure-integral
yoh-tanimoto Apr 9, 2026
5537595
remove lemmas.lean
yoh-tanimoto Apr 9, 2026
99e0f35
Update Integral.lean
yoh-tanimoto Apr 9, 2026
cb58ecf
Update Integral.lean
yoh-tanimoto Apr 9, 2026
3d6f285
Apply suggestions from code review
yoh-tanimoto Apr 10, 2026
3040edc
rename, add lemma
yoh-tanimoto Apr 12, 2026
f8a9dc7
change definition (the reference measure)
yoh-tanimoto Apr 12, 2026
8698921
docstring, remove `CompleteSpace G`
yoh-tanimoto Apr 12, 2026
8a76c1f
Merge branch 'master' into yoh-tanimoto-vectormeasure-integral
yoh-tanimoto Apr 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -5443,6 +5443,7 @@ public import Mathlib.MeasureTheory.VectorMeasure.Decomposition.Jordan
public import Mathlib.MeasureTheory.VectorMeasure.Decomposition.JordanSub
public import Mathlib.MeasureTheory.VectorMeasure.Decomposition.Lebesgue
public import Mathlib.MeasureTheory.VectorMeasure.Decomposition.RadonNikodym
public import Mathlib.MeasureTheory.VectorMeasure.Integral
public import Mathlib.MeasureTheory.VectorMeasure.Variation.Basic
public import Mathlib.MeasureTheory.VectorMeasure.Variation.Defs
public import Mathlib.MeasureTheory.VectorMeasure.WithDensity
Expand Down
208 changes: 208 additions & 0 deletions Mathlib/MeasureTheory/VectorMeasure/Integral.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
/-
Copyright (c) 2025 Yoh Tanimoto. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yoh Tanimoto
-/
module

public import Mathlib.Analysis.InnerProductSpace.Basic
public import Mathlib.MeasureTheory.Integral.SetToL1
public import Mathlib.MeasureTheory.VectorMeasure.Variation.Basic

/-!
# Integral of vector-valued function against vector measure

We extend the definition of the Bochner integral (of vector-valued function against `ℝ≥0∞`-valued
measure) to vector measures through a bilinear pairing.
Let `E`, `F` be normed vector spaces, and `G` be a Banach space (complete normed vector space).
We fix a continuous linear pairing `B : E →L[ℝ] F →L[ℝ] → G` and an `F`-valued vector measure `μ`
on a measurable space `α`.
The vector measure `μ` gives the total variation measure `μ.totalvariation` on `α`.
For an L1 function `f : α → E` with respect to this total variation measure,
we define the `G`-valued integral, which is informally written `∫ B (f x) ∂μ x`.

The pairing integral is defined through the general setting `setToL1` which sends a set function to
a continuous linear map on the type of L1 functions, see the file
`Mathlib/MeasureTheory/Integral/SetToL1.lean`.

## Main definitions

The pairing integral is defined through the extension process described in the file
`Mathlib/MeasureTheory/Integral/SetToL1.lean`, which follows these steps:

1. Define the integral of the indicator of a set. This is `weightedVectorSMul B μ s x = B x (μ s)`.
`weightedVectorSMul B μ` is shown to be linear in the value `x` and `DominatedFinMeasAdditive`
(defined in the file `Mathlib/MeasureTheory/Integral/SetToL1.lean`) with respect to the set `s`.

2. Define the structure `VectorMeasureWithPairing`, combining a pairing of two normed vector spaces
and a vector measure.

3. Define the pairing integral on L1 functions `f` as `setToL1 (...) f`. Note that, differently
from the definition of Bochner integral, here `setToL1` is already a continuous linear map from
L1 functions, not from step functions.

## Note

Let be `Bμ : VectorMeasureWithPairing`.
We often consider L1 functions with respect to the total variation of `Bμ.vectorMeasure`:
* `α →₁[Bμ.vectorMeasure.variation] E` : `E`-valued functions in L1 space.

-/

@[expose] public section

open ENNReal Set MeasureTheory VectorMeasure ContinuousLinearMap

namespace MeasureTheory

section weightedVectorSMul

variable {α E F G : Type*} [MeasurableSpace α]
[NormedAddCommGroup E] [NormedSpace ℝ E]
[NormedAddCommGroup F] [NormedSpace ℝ F]
[NormedAddCommGroup G] [NormedSpace ℝ G]
(B : E →L[ℝ] F →L[ℝ] G) (μ : VectorMeasure α F)

/-- Given a set `s`, return the continuous linear map `fun x : E => B x (μ s)`, where the `B` is a
`G`-valued bilinear form on `E` `F` and `μ` is an `F`-valued vector measure. The extension of that
set function through `setToL1` gives the pairing integral of L1 functions. -/
noncomputable def weightedVectorSMul (s : Set α) : E →L[ℝ] G where
toFun x := B x (μ s)
map_add' _ _ := map_add₂ B _ _ (μ s)
map_smul' _ _ := map_smulₛₗ₂ B _ _ (μ s)

@[simp]
theorem weightedVectorSMul_apply (s : Set α) (x : E) : weightedVectorSMul B μ s x = B x (μ s) := rfl

theorem weightedVectorSMul_union (s t : Set α) (hs : MeasurableSet s) (ht : MeasurableSet t)
(hdisj : Disjoint s t) :
weightedVectorSMul B μ (s ∪ t) = weightedVectorSMul B μ s + weightedVectorSMul B μ t := by
ext x
simp only [weightedVectorSMul_apply, ContinuousLinearMap.add_apply, ← (B x).map_add]
congr
exact of_union hdisj hs ht

theorem norm_weightedVectorSMul_le (s : Set α) :
‖(weightedVectorSMul B μ s : E →L[ℝ] G)‖ ≤ ‖B‖ * ‖μ s‖ := by
rw [ContinuousLinearMap.opNorm_le_iff (mul_nonneg (norm_nonneg B) (norm_nonneg (μ s)))]
intro x
simp only [weightedVectorSMul_apply]
apply le_trans (le_opNorm (B x) (μ s))
rw [mul_assoc, mul_comm _ ‖x‖, ← mul_assoc]
gcongr
exact le_opNorm B x

theorem dominatedFinMeasAdditive_weightedVectorSMul :
DominatedFinMeasAdditive (μ.variation)
(weightedVectorSMul B μ : Set α → E →L[ℝ] G) ‖B‖ := by
refine ⟨fun s t hs ht _ _ hdisj => weightedVectorSMul_union B μ s t hs ht hdisj, ?_⟩
intro s hs hsf
apply (fun s _ _ => (norm_weightedVectorSMul_le B μ s).trans)
gcongr
rw [Measure.real, ← ofReal_le_iff_le_toReal (LT.lt.ne_top hsf), ofReal_norm]
exact enorm_measure_le_variation μ s

end weightedVectorSMul

open SimpleFunc L1

section

variable (α E F G : Type*) [MeasurableSpace α]
[NormedAddCommGroup E] [NormedSpace ℝ E]
[NormedAddCommGroup F] [NormedSpace ℝ F]
[NormedAddCommGroup G] [NormedSpace ℝ G] [CompleteSpace G]

/-- The structure containing a continuous linear pairing and a vector measure,
enabling the dot notation `VectorMeasureWithParing.integral`. -/
structure VectorMeasureWithPairing where
/-- A continuous linear pairing from `E` `F` into a Banach space `G`. -/
pairing : E →L[ℝ] F →L[ℝ] G
/-- An `F`-valued vector measure. -/
vectorMeasure : VectorMeasure α F

end

namespace VectorMeasureWithPairing

variable {α E F G : Type*} [MeasurableSpace α]
[NormedAddCommGroup E] [NormedSpace ℝ E]
[NormedAddCommGroup F] [NormedSpace ℝ F]
[NormedAddCommGroup G] [NormedSpace ℝ G] [CompleteSpace G]
(Bμ : VectorMeasureWithPairing α E F G)

/-- The pairing integral in L1 space as a continuous linear map. -/
noncomputable def integral : (α →₁[Bμ.vectorMeasure.variation] E) →L[ℝ] G :=
setToL1 (dominatedFinMeasAdditive_weightedVectorSMul Bμ.pairing Bμ.vectorMeasure)

@[integral_simps]
theorem integral_add (f g : α →₁[Bμ.vectorMeasure.variation] E) :
Bμ.integral (f + g) = Bμ.integral f + Bμ.integral g := by
simp [integral]

@[integral_simps]
theorem integral_neg (f : α →₁[Bμ.vectorMeasure.variation] E) :
Bμ.integral (-f) = -Bμ.integral f := by
simp [integral]

@[integral_simps]
theorem integral_sub (f g : α →₁[Bμ.vectorMeasure.variation] E) :
Bμ.integral (f - g) = Bμ.integral f - Bμ.integral g := by
simp [integral]

@[integral_simps]
theorem integral_smul (c : ℝ) (f : α →₁[Bμ.vectorMeasure.variation] E) :
Bμ.integral (c • f) = c • Bμ.integral f := by
simp [integral]

@[simp]
lemma integral_apply (f : (α →₁[Bμ.vectorMeasure.variation] E)) :
Bμ.integral f
= setToL1 (dominatedFinMeasAdditive_weightedVectorSMul Bμ.pairing Bμ.vectorMeasure) f := rfl

theorem integral_le (f : (α →₁[Bμ.vectorMeasure.variation] E)) :
‖Bμ.integral f‖ ≤ ‖Bμ.pairing‖ * ‖f‖:= by
simp only [integral_apply]
exact norm_setToL1_le_mul_norm
(dominatedFinMeasAdditive_weightedVectorSMul Bμ.pairing Bμ.vectorMeasure)
(norm_nonneg Bμ.pairing) f

theorem norm_integral_le_norm_pairing : ‖Bμ.integral‖ ≤ ‖Bμ.pairing‖ :=
(ContinuousLinearMap.opNorm_le_iff (norm_nonneg Bμ.pairing)).mpr
(integral_le Bμ)

theorem nnnorm_integral_le_nnNnorm : ‖Bμ.integral‖₊ ≤ ‖Bμ.pairing‖₊ :=
norm_integral_le_norm_pairing Bμ

theorem nnnorm_integral_le (f : α →₁[Bμ.vectorMeasure.variation] E) :
‖Bμ.integral f‖₊ ≤ ‖Bμ.pairing‖₊ * ‖f‖₊ := integral_le Bμ f

@[continuity]
theorem continuous_integral :
Continuous fun f : α →₁[Bμ.vectorMeasure.variation] E =>
Bμ.integral f :=
(setToL1 (dominatedFinMeasAdditive_weightedVectorSMul Bμ.pairing Bμ.vectorMeasure)).continuous

end VectorMeasureWithPairing

namespace VectorMeasure

variable {α F : Type*} [MeasurableSpace α]
[NormedAddCommGroup F] [NormedSpace ℝ F] [CompleteSpace F]
(μ : VectorMeasure α F)

/-- For an `F`-valued vector measure `μ`, `μ.withPairing` is a structure `VectorMeasureWithPairing`
where `pairing` is just the `ℝ`-multiplication, so that `μ.withPairing.integral` is the
`F`-valued integral of `μ`. -/
noncomputable def withPairing : VectorMeasureWithPairing α ℝ F F where
pairing := lsmul (E := F) ℝ ℝ
vectorMeasure := μ

/-- The `F`-valued integral with respect to an `F`-valued vector measure as a continuous linear map,
defined as the pairing integral where the pairing is `lsmul`. -/
noncomputable def integral : (α →₁[μ.variation] ℝ) →L[ℝ] F :=
μ.withPairing.integral

end VectorMeasure

end MeasureTheory
Loading