Plain-English statement
Independently verified science ac7cabf30e17a322ec187b7eb13e1a9d4a57695d. Original six analytic source conditions and literal actual recursion yield a total phase representative jointly Borel in deterministic parameters, finite physical time and actual input stream. It agrees with every covering live harmonic arc; uncovered exceptional inputs use explicitly attributed initial-phase fallback. For each fixed deterministic parameter tuple, on one actual-product AE event it agrees with a live arc for every finite time and starts at z0. No uniform parameter AE event or correlated random-parameter substitution follows. Path regularity/adaptedness/Markov/invariance/kernel/hypocoercivity/main/error/expected-cost/composition remain open. Aggregate/visual/main/PURIFIED/live and whole-paper/Goal completion remain separate.
Read the mathematics first, then descend into Lean
You do not need to know Lean before opening this panel. The page keeps the paper-level theorem, rigorous proof obligations, exact Lean declaration, and proof dependencies as separate layers so a first-time reader can move down one layer at a time.
Proof architecture
Start with the tree when learning: prerequisites sit below the theorem and downstream results sit above it. Switch to the network when you want to understand where this declaration lives in the local formal library. Every mapped node is clickable.
Graph rule: only dependencies found by the ASTIS source scan are drawn. Missing tactic indirection is treated as an under-approximation; the site never invents an edge just to make a prettier graph.
How to read the exact Lean declaration
Read a Lean theorem left-to-right exactly as you would unpack a mathematical sentence: name → ambient types → automatically inferred structures → explicit hypotheses → conclusion → proof. Then read the proof top-to-bottom as transformations of the current goal.
- NameWhat reusable mathematical fact is being created?
- ParametersWhich symbols are arbitrary, and which structures are inferred by typeclass search?
- PropositionAfter the colon, translate the Lean expression back into a paper statement.
- Proof actionsAfter
by, ask what each tactic does to the mathematical goal—not only what syntax it uses.
Syntax used on this page
This glossary is filtered to syntax that actually occurs in the declaration above. Open a symbol only when you meet it, rather than memorizing Lean grammar in advance.
Source voice and ASTIS voice stay separate
When Samplinglib shows a short quotation from Chewi, it is labeled as a source excerpt and linked to the canonical book page. Intuition, expanded proof steps, hidden regularity assumptions, and Lean explanations are ASTIS-authored commentary. A quotation never substitutes for a formal proof, and an ASTIS explanation is never attributed to the textbook author.
Lean statement
theorem actual_physical_time_measurable_phase
{E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E]
[FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E]
{V : E → ℝ} {α β : ℝ≥0} {η : ℝ}
(hα : 0 < (α : ℝ)) (hαβ : α ≤ β) (hV : ContDiff ℝ 2 V)
(hH : ∀ x v : E,
(α : ℝ) * ‖v‖ ^ 2 ≤ (fderiv ℝ (fderiv ℝ V) x v) v ∧
(fderiv ℝ (fderiv ℝ V) x v) v ≤ (β : ℝ) * ‖v‖ ^ 2)
(hη : 0 < η) (hβη : (β : ℝ) * η ≤ 1) :
actual_physical_time_measurable_phase_statement hα hαβ hV hH hη hβη := by
classical
let P : Measure (ℕ → ℝ) := Measure.infinitePi (fun _ : ℕ => expMeasure (1 : ℝ))
let ε : (ℕ → ℝ) → ℕ → ℝ≥0 := fun sample k => Real.toNNReal (sample k)
let c : E → E → E := fun y xRef => y - η • gradient V xRef
let Φ : E → E → ℝ → (E × E) → (E × E) := fun y xRef t z =>
(c y xRef + Real.cos t • (z.1 - c y xRef) +
(Real.sqrt η * Real.sin t) • z.2,
(-Real.sin t / Real.sqrt η) • (z.1 - c y xRef) + Real.cos t • z.2)
let S : E → (E × E) → (E × E) := fun xRef z =>
(z.1, z.2 - (2 * inner ℝ z.2 (gradient V z.1 - gradient V xRef) /
‖gradient V z.1 - gradient V xRef‖ ^ 2) • (gradient V z.1 - gradient V xRef))
let rate : E → (E × E) → ℝ := fun xRef z =>
Real.sqrt η * max 0 (inner ℝ z.2 (gradient V z.1 - gradient V xRef))
let Λ : E → E → (E × E) → ℝ≥0 → ℝ := fun y xRef z t =>
∫ s in (0 : ℝ)..(t : ℝ), rate xRef (Φ y xRef s z)
let τ : E → E → (E × E) → ℝ≥0 → WithTop ℝ≥0 := fun y xRef z e =>
MeasureTheory.hittingAfter
(fun t : ℝ≥0 => fun a : (E × E) × (E × E) × ℝ≥0 =>
Λ a.1.1 a.1.2 a.2.1 t - (a.2.2 : ℝ))
(Set.Ici (0 : ℝ)) 0 ((y, xRef), z, e)
let next : E → E → ℝ≥0 → ((ℝ≥0 × (E × E)) ⊕ Unit) →
((ℝ≥0 × (E × E)) ⊕ Unit) := fun y xRef e r =>
match r with
| Sum.inr _ => Sum.inr ()
| Sum.inl a =>
if τ y xRef a.2 e = ⊤ then Sum.inr () else
Sum.inl (a.1 + (τ y xRef a.2 e).untopD 0,
S xRef (Φ y xRef (((τ y xRef a.2 e).untopD 0 : ℝ≥0) : ℝ) a.2))
let record : E → E → (E × E) → (ℕ → ℝ≥0) → ℕ →
((ℝ≥0 × (E × E)) ⊕ Unit) := fun y xRef z₀ e n =>
Nat.rec (Sum.inl (0, z₀)) (fun k r => next y xRef (e k) r) n
let eventTime : E → E → (E × E) → (ℕ → ℝ≥0) → ℕ → WithTop ℝ≥0 :=
fun y xRef z₀ e n => (record y xRef z₀ e n).elim
(fun a => (a.1 : WithTop ℝ≥0)) (fun _ => ⊤)
have h76 := ActualFiniteJumpRecursion.actual_fixed_reference_finite_jump_recursion
hα hαβ hV hH hη hβη
rcases h76 with ⟨hinit, _, _, hrecordM, htimeM, hmono, _, _, _, hstrict⟩
have hflow := ActualHarmonicFlow.actual_harmonic_flow_laws hα hαβ hV hH hη hβη
have hΦM : Measurable (fun a : (E × E) × ℝ × (E × E) =>
Φ a.1.1 a.1.2 a.2.1 a.2.2) := hflow.2.1
have hΦ0 : ∀ y xRef : E, ∀ z : E × E, Φ y xRef 0 z = z := hflow.2.2.1
have hεM : Measurable ε := measurable_pi_lambda _ fun n =>
measurable_real_toNNReal.comp (measurable_pi_apply n)
let A := ((E × E) × (E × E)) × ℝ≥0 × (ℕ → ℝ)
let args : A → (E × E) × (E × E) × (ℕ → ℝ≥0) :=
fun a => (a.1.1, a.1.2, ε a.2.2)
have hargs : Measurable args := measurable_fst.fst.prodMk
(measurable_fst.snd.prodMk (hεM.comp measurable_snd.snd))
have hrM (n : ℕ) : Measurable (fun a : A =>
record a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2) n) := (hrecordM n).comp hargs
have hTM (n : ℕ) : Measurable (fun a : A =>
eventTime a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2) n) := (htimeM n).comp hargs
have htM : Measurable (fun a : A => (a.2.1 : WithTop ℝ≥0)) :=
WithTop.measurable_coe.comp measurable_snd.fst
let D : ℕ → Set A := fun n => {a |
eventTime a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2) n ≤ (a.2.1 : WithTop ℝ≥0) ∧
(a.2.1 : WithTop ℝ≥0) < eventTime a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2) (n + 1)}
have hDM (n : ℕ) : MeasurableSet (D n) :=
(measurableSet_le (hTM n) htM).inter (measurableSet_lt htM (hTM (n + 1)))
have hdisj (n m : ℕ) (a : A) (hn : a ∈ D n) (hm : a ∈ D m) : n = m := by
have hmon : Monotone (eventTime a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2)) :=
(hmono a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2)).2
rcases lt_trichotomy n m with hlt | heq | hgt
· exact False.elim ((not_lt_of_ge hm.1) (hn.2.trans_le (hmon (Nat.succ_le_of_lt hlt))))
· exact heq
· exact False.elim ((not_lt_of_ge hn.1) (hm.2.trans_le (hmon (Nat.succ_le_of_lt hgt))))
-- This total auxiliary projection is used only on D_n, where the record is live.
-- Its zero branch never supplies a source phase for a stopped record.
let L : ℕ → A → ℝ≥0 × (E × E) := fun n a =>
(record a.1.1.1 a.1.1.2 a.1.2 (ε a.2.2) n).elim id (fun _ => (0, (0, 0)))
have hLM (n : ℕ) : Measurable (L n) :=
(measurable_id.sumElim measurable_const).comp (hrM n)
let branch : ℕ → A → E × E := fun n a =>
Φ a.1.1.1 a.1.1.2 ((a.2.1 - (L n a).1 : ℝ≥0) : ℝ) (L n a).2
have hbM (n : ℕ) : Measurable (branch n) :=
hΦM.comp (measurable_fst.fst.prodMk
((measurable_coe_nnreal_real.comp (measurable_snd.fst.sub (hLM n).fst)).prodMk
(hLM n).snd))
let sets : Option ℕ → Set A
| none => (⋃ n, D n)ᶜ
| some n => D n
let values : Option ℕ → A → E × E
| none => fun a => a.1.2
| some n => branch n
have hsM (i : Option ℕ) : MeasurableSet (sets i) := by
cases i with
| none => exact (MeasurableSet.iUnion hDM).compl
| some n => exact hDM n
have hvM (i : Option ℕ) : Measurable (values i) := by
cases i with
| none => exact measurable_fst.snd
| some n => exact hbM n
have hcompat : Pairwise (fun i j => Set.EqOn (values i) (values j) (sets i ∩ sets j)) := by
intro i j hij a ha
cases i with
| none =>
cases j with
| none => exact False.elim (hij rfl)
| some m => exact False.elim (ha.1 (Set.mem_iUnion.mpr ⟨m, ha.2⟩))
| some n =>
cases j with
| none => exact False.elim (ha.2 (Set.mem_iUnion.mpr ⟨n, ha.1⟩))
| some m => exact False.elim (hij (congrArg some (hdisj n m a ha.1 ha.2)))
obtain ⟨f, hfM, hf⟩ := exists_measurable_piecewise sets hsM values hvM hcompat
let Z : E → E → (E × E) → ℝ≥0 → (ℕ → ℝ) → (E × E) :=
fun y xRef z₀ t sample => f (((y, xRef), z₀), t, sample)
have hZ (y xRef : E) (z₀ : E × E) (sample : ℕ → ℝ) (t : ℝ≥0)
(n : ℕ) (a : ℝ≥0 × (E × E))
(hl : eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0))
(hu : (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1))
(hr : record y xRef z₀ (ε sample) n = Sum.inl a) :
Z y xRef z₀ t sample = Φ y xRef ((t - a.1 : ℝ≥0) : ℝ) a.2 := by
have heq := hf (some n) (show (((y, xRef), z₀), t, sample) ∈ sets (some n) from ⟨hl, hu⟩)
change f (((y, xRef), z₀), t, sample) = _
rw [heq]
dsimp [values, branch, L]
rw [hr]
rfl
refine ⟨Z, hfM, hZ, ?_, ?_⟩
· intro y xRef z₀ sample t hn
exact hf none (show (((y, xRef), z₀), t, sample) ∈ sets none from by
intro hx
obtain ⟨n, hnD⟩ := Set.mem_iUnion.mp hx
exact hn ⟨n, hnD⟩)
· intro y xRef z₀
have hc := ActualPhysicalTimeCover.actual_fixed_reference_physical_time_cover
hα hαβ hV hH hη hβη y xRef z₀
have hp := AutoSamplingTheory.TechnicalLemmas.Probability.UnitExponentialProduct.unit_exponential_product_laws.2.2.2.1
filter_upwards [hc, hp] with sample hcover hpositive
constructor
· intro t
obtain ⟨n, hn, huniq⟩ := hcover.1 t
obtain ⟨a, ha, hau⟩ := hcover.2 t n hn.1 hn.2
exact ⟨n, a, hn.1, hn.2, ha.1, ha.2.1, ha.2.2,
hZ y xRef z₀ sample t n a hn.1 hn.2 ha.1⟩
· have hi0 : record y xRef z₀ (ε sample) 0 = Sum.inl (0, z₀) :=
hinit y xRef z₀ (ε sample)
have hT0 : eventTime y xRef z₀ (ε sample) 0 = 0 :=
(hmono y xRef z₀ (ε sample)).1
have hepos : 0 < ε sample 0 := Real.toNNReal_pos.mpr (hpositive 0).1
have hfirst : (0 : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) 1 := by
cases hr1 : record y xRef z₀ (ε sample) 1 with
| inr u =>
change (0 : WithTop ℝ≥0) <
(record y xRef z₀ (ε sample) 1).elim (fun a => (a.1 : WithTop ℝ≥0)) (fun _ => ⊤)
rw [hr1]
exact WithTop.coe_lt_top (0 : ℝ≥0)
| inl b =>
have hbpos : 0 < b.1 :=
(hstrict y xRef z₀ (ε sample) 0 (0, z₀) hi0).2 b hepos hr1
change (0 : WithTop ℝ≥0) <
(record y xRef z₀ (ε sample) 1).elim (fun a => (a.1 : WithTop ℝ≥0)) (fun _ => ⊤)
rw [hr1]
exact WithTop.coe_lt_coe.mpr hbpos
have heq := hZ y xRef z₀ sample 0 0 (0, z₀)
(by rw [hT0]; rfl) hfirst hi0
simpa only [tsub_zero, NNReal.coe_zero, hΦ0] using heq
end
end AutoSamplingTheory.ExampleCases.ProximalBPS.ActualPhysicalTimeMeasurability
Open AutoSamplingTheory/ExampleCases/ProximalBPS/ActualPhysicalTimeMeasurability.lean:83published source at ed709a7f320d
Proof architecture
PBPS actual physical-time law/kernel construction prerequisite; no SALD claim
Lean proof walkthrough
- Read the quantified variables and typeclass brackets as part of the mathematical statement; inferred arguments are not missing assumptions.
- `intro` introduces quantified hypotheses into the local proof context.
- `have` creates a named intermediate mathematical fact.
- `rw` rewrites by an established identity.
- `refine` instantiates a reusable theorem while leaving explicit subgoals.
- `exact` closes the current goal with an already typed term.
- `simpa` closes the goal after a controlled simplification of a typed result.
- `filter_upwards` moves an almost-everywhere or eventual statement into a pointwise local context.
Why the statement has this shape
The declaration is kept at the reusable level recorded by its Registry tags and direct consumers. Explicit measures, spaces, wrappers, and regularity hypotheses expose interfaces that paper notation often infers. A theorem card explains those interfaces but never widens the compiled statement.
Hidden assumptions and non-claims
- Measurability is represented explicitly or must be supplied by a dependency.
- Totalized `fderiv` values must not be read as a differentiability theorem.
- Almost-everywhere hypotheses depend on the stated measure and representative.