Skip to content

DRY backlog from the martingale-representation reviews: mulBddCLM, inner_eq_integral_mul, the MGF block #185

Description

@raphaelrrcoelho

context

three DRY items the martingale-representation reviews surfaced but left alone, because each is a change
to a file outside the program's scope. none is urgent; all three are the same failure mode, a general
fact living in an application file or inlined instead of consumed.

1. mulBddCLM should absorb the hand-rolled truncCLM

Foundations/ItoIntegralLocality.lean:155 defines mulBddCLM ν hg hgC, multiplication by a bounded
measurable function as an operator over an arbitrary measure, with its characterising a.e. identity
coeFn_mulBddCLM at :183. mathlib has no such operator.

Foundations/ItoIntegralProcessIsometry.lean:214 has truncCLM, a private hand-rolled special case:
multiplication by the indicator of a time band. it predates mulBddCLM and does the same work.

the blocker is DAG order. ItoIntegralLocality sits above ItoIntegralProcessIsometry, so mulBddCLM
has to move down before truncCLM can consume it. that move is the actual task; the deletion is two
lines after it.

2. inner_eq_integral_mul is public now, and should be consumed

Foundations/MartingaleRepresentation.lean:81 states ⟪f, g⟫_ℝ = ∫ ω, f ω * g ω ∂μ and was hoisted
public during the cleanup pass. the idiom it names is inlined as a bare rw [L2.inner_def] plus a
simp at, at least:

  • ItoIntegralL2.lean:196
  • ItoIntegralL2Dense.lean:106
  • ItoIntegralCLM.lean:579-581
  • ItoIntegralCovariation.lean:78
  • ItoIntegralProcessMartingale.lean:368
  • WienerIntegralL2.lean:234-238, :431
  • PoissonCompensatedIntegralOperator.lean:202

check each: some are rw ... at h on a hypothesis and may want the symmetric form, some may not be the
same idiom at all. and the same DAG problem applies, worse: MartingaleRepresentation is near the top of
the tower, so the lemma has to move down to ItoIntegralL2 or a shared prelude first.

3. ExpMartingaleQBrownian triplicates a five-step MGF block

Foundations/ExpMartingaleQBrownian.lean runs the same chain three times, at :114-125, :233-245 and
:346-358: integrableExpSet = univ from the gaussian, transfer along the MGF equality, interior is
univ, eqOn_complexMGF_of_mgf, Measure.ext_of_complexMGF_eq, rwa [Measure.map_id].

the shared content is one lemma: a real random variable whose Q-MGF equals the N(0,v) MGF has law
N(0,v). state it once as Measure.map X Q = gaussianReal 0 v from mgf X Q = mgf id (gaussianReal 0 v)
plus AEMeasurable X Q, and the three sites become one line each. this is pre-existing, not from the
representation program; it was found while checking whether the totality proof shared a root with it
(it does not, and that verdict stands).

acceptance criteria

  • truncCLM deleted, its call sites on mulBddCLM.
  • inner_eq_integral_mul at a level where the tower can consume it, and consumed where it is the
    same idiom.
  • the MGF-to-gaussian-law step named once and applied three times.
  • lake build MathFin && lake lint green; ledger re-verified.

pointers

  • MathFin/Foundations/ItoIntegralLocality.lean:155,183, ItoIntegralProcessIsometry.lean:212-241,
    MartingaleRepresentation.lean:81, ExpMartingaleQBrownian.lean:114,233,346.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:foundationsFoundations/ — Itô, Brownian motion, stochastic integration, martingales, Poisson, Markov, SDEsdifficulty:smallStraightforward change for someone familiar with the repostatus:readyScoped enough for a contributor to pick uptype:refactorStructure or naming change that should preserve behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions