Skip to content

feat: the pathwise variation process - #494

Merged
RemyDegenne merged 21 commits into
RemyDegenne:masterfrom
CoolRmal:variation-process
Jul 29, 2026
Merged

feat: the pathwise variation process#494
RemyDegenne merged 21 commits into
RemyDegenne:masterfrom
CoolRmal:variation-process

Conversation

@CoolRmal

@CoolRmal CoolRmal commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Adds the pathwise variation process variationProcess X a: at time t and outcome ω, the signed variation variationOnFromTo (X · ω) Set.univ a t of the path s ↦ X s ω.

Main definition

  • variationProcess

Main results

  • variationProcess_nonneg — nonnegativity, for a ≤ t;
  • monotone_variationProcess — monotone in time, for paths of locally bounded variation;
  • MeasureTheory.StronglyAdapted.measurable_variationProcess_of_continuous, ..._of_continuousWithinAt_Ioi, ..._of_continuousWithinAt_Iio — for a ≤ t, the value at time t of the variation process of a strongly adapted process is 𝓕 t-measurable.

Measurability: two sets of assumptions

The variation over a set of times is an uncountable supremum, so measurability is obtained by computing it over a countable dense set of times instead (measurable_eVariationOn_of_countable). Which dense sets suffice depends on the regularity of the paths, and this file provides two independent results:

  1. the first assumes continuity of the paths together with separability of the time index — eVariationOn_eq_comp_val_of_dense, measurable_eVariationOn_of_continuousWithinAt;
  2. the second assumes only right-continuity of the paths, but requires the time index to be second countableeVariationOn_eq_comp_val_of_dense_Ioi, measurable_eVariationOn_of_continuousWithinAt_Ioi, together with the left-continuous counterparts eVariationOn_eq_comp_val_of_dense_Iio and measurable_eVariationOn_of_continuousWithinAt_Iio.

Neither hypothesis implies the other, and the second genuinely needs second countability: a separable linearly ordered set can have uncountably many right isolated points (e.g. https://topology.pi-base.org/spaces/S000093)

CoolRmal and others added 6 commits July 17, 2026 12:16
Add `variationProcess X a`: at time `t` and outcome `ω`, the total variation
of the path `s ↦ X s ω` on `[a, t]`, defined as `(eVariationOn (X · ω)
(Set.Icc a t)).toReal`. Since `Set.Icc a t` is empty for `t < a`, the process
vanishes below `a`, which makes it adapted without assuming the index type has
a bottom element.

API:
* `variationProcess_nonneg`, `variationProcess_of_le`;
* `monotone_variationProcess`;
* `continuous_variationProcess`, with one-sided `continuousWithinAt_*`;
* `MeasureTheory.StronglyAdapted.variationProcess` (adaptedness);
* `isStronglyProgressive_variationProcess`.

This is the process used in Kallenberg, Proposition 18.2, to reduce a
continuous local martingale of locally finite variation to a bounded-variation
stopping argument. Split out of RemyDegenne#490 for review; the file depends only on
Mathlib.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Redefine `variationProcess X a t ω` as `variationOnFromTo (X · ω) Set.univ a t`
(signed) instead of the clamped `(eVariationOn (Set.Icc a t)).toReal`.

Consequences:
* `variationProcess_nonneg` and `variationProcess_eq_toReal_eVariationOn_Icc`
  now require `a ≤ t`;
* continuity and monotonicity become uniform (no `a`-vs-point case split);
* adaptedness is stated pointwise as
  `MeasureTheory.StronglyAdapted.stronglyMeasurable_variationProcess` for
  `a ≤ t` (global `StronglyAdapted` no longer holds: below `a` the value
  depends on the path over `[t, a]`);
* progressive measurability is deferred (see the TODO in the module doc).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`Set` is already open; remove `Finset` from the `open` list (it is only used
qualified, as `Finset.range`/`Finset.sum`) so `Icc`, `univ`, `Iic`, … resolve
to `Set` without the prefix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Since `variationProcess X a · ω = variationOnFromTo (X · ω) univ a`,
right-continuity is exactly Mathlib's
`BoundedVariationOn.continuousWithinAt_variationOnFromTo_Ici`, so
`continuousWithinAt_variationProcess_Ici` becomes a one-liner. This requires the
continuity hypotheses to be the global `BoundedVariationOn univ` that lemma
takes (rather than `LocallyBoundedVariationOn`); the left-continuity proof then
also simplifies to a single uniform argument (no interval-bracketing case
split). Drops the now-unused `eVariationOn_Icc_ne_top` helper.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@CoolRmal
CoolRmal marked this pull request as ready for review July 26, 2026 03:42
CoolRmal and others added 2 commits July 25, 2026 21:04
`countable_setOf_isolated_right_within` was deprecated (2026-07-09) in
favour of `countable_setOfPred_isolated_right_within`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@CoolRmal

CoolRmal commented Jul 26, 2026

Copy link
Copy Markdown
Contributor Author

@RemyDegenne Sorry for the delay, I spent a lot of time golfing the AI-generated proof. The mathlib PR is here: leanprover-community/mathlib4#42102

@RemyDegenne

Copy link
Copy Markdown
Owner

Can you split the file in two? One for results that are about variation of a function, and another one for the new variation process.

CoolRmal and others added 3 commits July 28, 2026 09:15
Move the results about the variation of a function (`eVariationOn_*`,
`measurable_eVariationOn_*` and the auxiliary `nhdsGT_subtype_eq_bot_iff`)
into `BrownianMotion/Auxiliary/EVariationOn.lean`, leaving
`BrownianMotion/StochasticIntegral/VariationProcess.lean` with only
`variationProcess` and its properties.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@CoolRmal

Copy link
Copy Markdown
Contributor Author

I just split the file.

@RemyDegenne

Copy link
Copy Markdown
Owner

I moved the measurability statements to the file about the process.

Thanks for this PR!

@RemyDegenne
RemyDegenne merged commit a7216f4 into RemyDegenne:master Jul 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants