Actual PBPS finite physical-time interval coverage
AutoSamplingTheory.ExampleCases.ProximalBPS.ActualPhysicalTimeCover.actual_fixed_reference_physical_time_cover · theorem · Teaching coverage
Mathematical statement
Let E be any finite-dimensional real inner-product space, including dimension zero, with its Borel measurable structure. Let V:E→ℝ be C². Let α,β be nonnegative reals and η a real number satisfying α>0, α≤β, α‖v‖²≤D²V(x)[v,v]≤β‖v‖² for every x,v∈E, η>0, and βη≤1. Fix any y,xRef∈E and initial phase z0=(x0,p0)∈E×E. Set c=y−η∇V(xRef). For z=(x,p), define the actual harmonic flow Φ_t(z)=(c+cos(t)(x−c)+√η sin(t)p, −sin(t)(x−c)/√η+cos(t)p), reflection S(z)=(x,p−[2〈p,g(x)〉/‖g(x)‖²]g(x)), residual g(x)=∇V(x)−∇V(xRef), and rate λ(z)=√η max{0,〈p,g(x)〉}. The reflection uses total real division, hence is the identity when g(x)=0. Define Λ(z,t)=∫_0^t λ(Φ_s(z)) ds for finite t≥0 and τ(z,e)=inf{t≥0:Λ(z,t)≥e}, with inf empty=∞. Let P be the actual countable product of rate-one exponential Borel measures on Ω=ℝ^ℕ; let ε_k(sample)=max{sample_k,0} viewed as a nonnegative real. Define active records (T,z) and an absorbing stopped record carrying no phase. Initialize record0=(0,z0). At index k, a stopped record stays stopped; an active record (T,z) becomes stopped if τ(z,ε_k)=∞ and otherwise becomes (T+τ(z,ε_k), S(Φ_{τ(z,ε_k)}(z))). Its event time T_k is the finite time component if active and ∞ if stopped. Then for these fixed y,xRef,z0, for P-almost every sample, simultaneously: (i) for every finite nonnegative physical time t there exists exactly one n∈ℕ with T_n≤t<T_(n+1); (ii) for every such t and every index n satisfying those inequalities, there exists exactly one finite live record a=(s,z) such that record_n=inl(a), s≤t, and t−s<τ(z,ε_n), using nonnegative real subtraction and extended-valued comparison. In particular no stopped record supplies a phase, and when the next wait is infinite the last live record continues to cover every later finite physical time. Initialization index0 is retained and ε_n is source E_(n+1). Half-open intervals fix event-endpoint ownership; zero-length intervals are empty and strict positive waits are not an extra premise. This is the ASTIS interval/live-record/elapsed adapter needed by Appendix A.1's between-jump formula. It does not construct a global interpolated process, assert index(t=0)=0, or prove measurability, path regularity, full process uniqueness, Markov/invariance or costs.
Lean statement · actual_fixed_reference_physical_time_cover
Let E be any finite-dimensional real inner-product space, including dimension zero, with its Borel measurable structure. Let V:E→ℝ be C². Let α,β be nonnegative reals and η a real number satisfying α>0, α≤β, α‖v‖²≤D²V(x)[v,v]≤β‖v‖² for every x,v∈E, η>0, and βη≤1. Fix any y,xRef∈E and initial phase z0=(x0,p0)∈E×E. Set c=y−η∇V(xRef). For z=(x,p), define the actual harmonic flow Φ_t(z)=(c+cos(t)(x−c)+√η sin(t)p, −sin(t)(x−c)/√η+cos(t)p), reflection S(z)=(x,p−[2〈p,g(x)〉/‖g(x)‖²]g(x)), residual g(x)=∇V(x)−∇V(xRef), and rate λ(z)=√η max{0,〈p,g(x)〉}. The reflection uses total real division, hence is the identity when g(x)=0. Define Λ(z,t)=∫_0^t λ(Φ_s(z)) ds for finite t≥0 and τ(z,e)=inf{t≥0:Λ(z,t)≥e}, with inf empty=∞. Let P be the actual countable product of rate-one exponential Borel measures on Ω=ℝ^ℕ; let ε_k(sample)=max{sample_k,0} viewed as a nonnegative real. Define active records (T,z) and an absorbing stopped record carrying no phase. Initialize record0=(0,z0). At index k, a stopped record stays stopped; an active record (T,z) becomes stopped if τ(z,ε_k)=∞ and otherwise becomes (T+τ(z,ε_k), S(Φ_{τ(z,ε_k)}(z))). Its event time T_k is the finite time component if active and ∞ if stopped. Then for these fixed y,xRef,z0, for P-almost every sample, simultaneously: (i) for every finite nonnegative physical time t there exists exactly one n∈ℕ with T_n≤t<T_(n+1); (ii) for every such t and every index n satisfying those inequalities, there exists exactly one finite live record a=(s,z) such that record_n=inl(a), s≤t, and t−s<τ(z,ε_n), using nonnegative real subtraction and extended-valued comparison. In particular no stopped record supplies a phase, and when the next wait is infinite the last live record continues to cover every later finite physical time. Initialization index0 is retained and ε_n is source E_(n+1). Half-open intervals fix event-endpoint ownership; zero-length intervals are empty and strict positive waits are not an extra premise. This is the ASTIS interval/live-record/elapsed adapter needed by Appendix A.1's between-jump formula. It does not construct a global interpolated process, assert index(t=0)=0, or prove measurability, path regularity, full process uniqueness, Markov/invariance or costs.
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
theorem actual_fixed_reference_physical_time_cover
{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_fixed_reference_physical_time_cover_statement hα hαβ hV hH hη hβηFull Lean proposition (definition) · actual_fixed_reference_physical_time_cover_statement
This literal definition stores the complete proposition asserted above. It supplies no mathematical proof or additional hypothesis; the theorem proof must establish its value.
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
private def actual_fixed_reference_physical_time_cover_statement
{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) : Prop :=
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 _ => ⊤)
∀ y xRef : E, ∀ z₀ : E × E, ∀ᵐ sample ∂P,
(∀ t : ℝ≥0, ∃! n : ℕ,
eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) ∧
(t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1)) ∧
(∀ t : ℝ≥0, ∀ n : ℕ,
eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) →
(t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1) →
∃! a : ℝ≥0 × (E × E),
record y xRef z₀ (ε sample) n = Sum.inl a ∧ a.1 ≤ t ∧
((t - a.1 : ℝ≥0) : WithTop ℝ≥0) < τ y xRef a.2 (ε sample n))
set_option maxHeartbeats 800000 inProof roadmap
- 1Fix the actual source objects and finite-time target
Keep the literal source flow, reflection, hazard, first hitting time and guarded finite-record recurrence. Use the canonical Exp1 product and total NNReal thresholds. The two conclusions concern the actual half-open clock interval and the actual stored live record with finite elapsed time.
- 2Reuse initialized monotone actual clocks on the common AE event
The exact finite-recursion parent supplies initialization, monotonicity and guarded next-record updates. The actual nonaccumulation parent supplies finite-horizon escape on one AE event for each fixed parameter triple. No certificate is supplied as a new public assumption.
- 3Select the predecessor of the first clock crossing
For each finite t choose the least k with t<T_k. Initialization gives k>0. Let n=k−1. Minimality gives T_n≤t, and n+1=k gives t<T_(n+1).
- 4Prove that the half-open interval index is unique
If two indices m,n satisfy their half-open inequalities, m>n would imply T_(n+1)≤T_m≤t, contradicting t<T_(n+1). The opposite inequality is symmetric. Empty zero-length intervals cause no overlap, so no extra strict-wait premise is needed.
- 5Exclude stopped records at finite covering times
A stopped record has eventTime=∞. Its lower interval inequality ∞≤t contradicts finiteness of t. Thus every covering record must be active.
- 6Recover the actual live record and its stored time
For an active record a the exact eventTime eliminator gives T_n=a.time. The lower interval inequality gives a.time≤t. The record supplied in the conclusion is this actual record, not a chosen external state.
- 7Keep the last live arc when the next wait is infinite
If the actual next waiting time is infinity, every finite NNReal elapsed offset is strictly less than it. Stopping the next jump does not erase the currently live state or invent a phase at infinity.
- 8Bound the elapsed offset for a finite next wait
Write the actual finite wait as q. The existing guarded recurrence gives record_(n+1)=(a.time+q, bounce(flow(q,a.state))) and hence T_(n+1)=a.time+q. Therefore t<T_(n+1) and a.time≤t imply t−a.time<q. Subtraction is nonnegative and never evaluates an infinite elapsed duration.
- 9Prove uniqueness of the actual live record
The record recursion is a function. Two live records at the same index have equal Sum.inl values, so injectivity gives equal time/state pairs. Assemble the interval and live-record conclusions on the common AE event.
Full assumptions and notation
All objects and hypotheses
- E is finite-dimensional real inner-product with its Borel measurable structure; no positive-dimension restriction. V is C² and α,β≥0.
- The six exact source conditions are α>0; α≤β; V∈C²; for all x,v, α‖v‖²≤D²V(x)[v,v]≤β‖v‖²; η>0; βη≤1. No third or higher derivative condition.
- y,xRef,z0 are arbitrary deterministic parameters. P and ε are literal canonical definitions. No probability, iid, positivity, divergence, cap, energy, waiting-time or recurrence certificate is a public premise.
- Threshold positivity and faithful clamp/raw equality hold simultaneously only almost surely. The all-finite-horizon conclusion is pathwise on the common good-input event for each fixed parameter triple; no uncountable intersection over triples is assumed.
- Stopped records have eventTime=∞ and carry no phase. Every selected record is live with finite stored time and finite nonnegative elapsed offset. The next wait may be infinite; zero-length intervals are empty. No positive-wait, index, recurrence, nonaccumulation, measurable-selector or path certificate is a public premise.
Mathematical proof
1. Fix the actual source objects and finite-time target
Keep the literal source flow, reflection, hazard, first hitting time and guarded finite-record recurrence. Use the canonical Exp1 product and total NNReal thresholds. The two conclusions concern the actual half-open clock interval and the actual stored live record with finite elapsed time.
Corresponding Lean step
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 _ => ⊤)
change ∀ y xRef : E, ∀ z₀ : E × E, ∀ᵐ sample ∂P,
(∀ t : ℝ≥0, ∃! n : ℕ,
eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) ∧
(t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1)) ∧
(∀ t : ℝ≥0, ∀ n : ℕ,
eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) →
(t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1) →
∃! a : ℝ≥0 × (E × E),
record y xRef z₀ (ε sample) n = Sum.inl a ∧ a.1 ≤ t ∧
((t - a.1 : ℝ≥0) : WithTop ℝ≥0) < τ y xRef a.2 (ε sample n))
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
2. Reuse initialized monotone actual clocks on the common AE event
The exact finite-recursion parent supplies initialization, monotonicity and guarded next-record updates. The actual nonaccumulation parent supplies finite-horizon escape on one AE event for each fixed parameter triple. No certificate is supplied as a new public assumption.
Corresponding Lean step
-- Exact deterministic initialization/monotonicity and guarded live-record updates.
rcases ActualFiniteJumpRecursion.actual_fixed_reference_finite_jump_recursion
hα hαβ hV hH hη hβη with
⟨_, hstep, _, _, _, htime, _, _, _, _⟩
have hinput := ActualNonaccumulation.actual_fixed_reference_event_time_nonaccumulation
hα hαβ hV hH hη hβη
intro y xRef z₀
filter_upwards [hinput y xRef z₀] with sample hgood
have hzero : eventTime y xRef z₀ (ε sample) 0 = 0 :=
(htime y xRef z₀ (ε sample)).1
have hmono : Monotone (eventTime y xRef z₀ (ε sample)) :=
(htime y xRef z₀ (ε sample)).2
constructor
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
3. Select the predecessor of the first clock crossing
For each finite t choose the least k with t<T_k. Initialization gives k>0. Let n=k−1. Minimality gives T_n≤t, and n+1=k gives t<T_(n+1).
Corresponding Lean step
· -- The first clock strictly above t has an initialized finite predecessor.
intro t
obtain ⟨N, hN⟩ := eventually_atTop.mp (hgood.1 t)
have hex : ∃ k : ℕ, (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) k :=
⟨N, hN N le_rfl⟩
let k : ℕ := Nat.find hex
have hk : (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) k :=
Nat.find_spec hex
have hkpos : 0 < k := by
by_contra h
have hk0 : k = 0 := Nat.eq_zero_of_not_pos h
rw [hk0, hzero] at hk
exact (not_lt_of_ge (show (0 : WithTop ℝ≥0) ≤ t from bot_le)) hk
let n : ℕ := k - 1
have hsucc : n + 1 = k := by dsimp [n]; omega
have hlow : eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) := by
apply le_of_not_gt
exact Nat.find_min hex (by change k - 1 < k; omega)
have hupp : (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1) := by
simpa only [hsucc] using hk
refine ⟨n, ⟨hlow, hupp⟩, ?_⟩
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
4. Prove that the half-open interval index is unique
If two indices m,n satisfy their half-open inequalities, m>n would imply T_(n+1)≤T_m≤t, contradicting t<T_(n+1). The opposite inequality is symmetric. Empty zero-length intervals cause no overlap, so no extra strict-wait premise is needed.
Corresponding Lean step
-- Monotonicity makes distinct half-open event intervals disjoint.
intro m hm
apply le_antisymm
· by_contra h
have hnm : n + 1 ≤ m := by omega
exact (not_lt_of_ge ((hmono hnm).trans hm.1)) hupp
· by_contra h
have hmn : m + 1 ≤ n := by omega
exact (not_lt_of_ge ((hmono hmn).trans hlow)) hm.2
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
5. Exclude stopped records at finite covering times
A stopped record has eventTime=∞. Its lower interval inequality ∞≤t contradicts finiteness of t. Thus every covering record must be active.
Corresponding Lean step
· -- A clock below finite t cannot be a stopped record.
intro t n hlow hupp
cases hr : record y xRef z₀ (ε sample) n with
| inr u =>
have hevent : eventTime y xRef z₀ (ε sample) n = ⊤ := by
change (record y xRef z₀ (ε sample) n).elim _ _ = ⊤
rw [hr]
rfl
rw [hevent] at hlow
exact False.elim ((not_le_of_gt (WithTop.coe_lt_top t)) hlow)
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
6. Recover the actual live record and its stored time
For an active record a the exact eventTime eliminator gives T_n=a.time. The lower interval inequality gives a.time≤t. The record supplied in the conclusion is this actual record, not a chosen external state.
Corresponding Lean step
| inl a =>
have haClock : eventTime y xRef z₀ (ε sample) n = (a.1 : WithTop ℝ≥0) := by
change (record y xRef z₀ (ε sample) n).elim _ _ = _
rw [hr]
rfl
have hat : a.1 ≤ t := WithTop.coe_le_coe.mp (by
rw [← haClock]
exact hlow)
refine ⟨a, ⟨rfl, hat, ?_⟩, ?_⟩
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
7. Keep the last live arc when the next wait is infinite
If the actual next waiting time is infinity, every finite NNReal elapsed offset is strictly less than it. Stopping the next jump does not erase the currently live state or invent a phase at infinity.
Corresponding Lean step
· -- Infinite wait keeps the last live arc available at every finite offset.
by_cases hwtop : τ y xRef a.2 (ε sample n) = ⊤
· simp only [hwtop, WithTop.coe_lt_top]
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
8. Bound the elapsed offset for a finite next wait
Write the actual finite wait as q. The existing guarded recurrence gives record_(n+1)=(a.time+q, bounce(flow(q,a.state))) and hence T_(n+1)=a.time+q. Therefore t<T_(n+1) and a.time≤t imply t−a.time<q. Subtraction is nonnegative and never evaluates an infinite elapsed duration.
Corresponding Lean step
-- Finite wait: the actual next clock is a.time plus that same wait.
· let q : ℝ≥0 := (τ y xRef a.2 (ε sample n)).untop hwtop
have hq : (q : WithTop ℝ≥0) = τ y xRef a.2 (ε sample n) :=
WithTop.coe_untop _ _
have hn : record y xRef z₀ (ε sample) (n + 1) =
Sum.inl (a.1 + (τ y xRef a.2 (ε sample n)).untopD 0,
S xRef (Φ y xRef (((τ y xRef a.2 (ε sample n)).untopD 0 : ℝ≥0) : ℝ) a.2)) :=
((hstep y xRef z₀ (ε sample) n).2 a hr).2 hwtop
rw [← hq] at hn ⊢
have hnTime : eventTime y xRef z₀ (ε sample) (n + 1) =
((a.1 + q : ℝ≥0) : WithTop ℝ≥0) := by
change (record y xRef z₀ (ε sample) (n + 1)).elim _ _ = _
rw [hn]
rfl
have hsmall : t < a.1 + q := WithTop.coe_lt_coe.mp (by
simpa only [hnTime] using hupp)
exact WithTop.coe_lt_coe.mpr ((tsub_lt_iff_right hat).mpr (by
simpa only [add_comm] using hsmall))
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
9. Prove uniqueness of the actual live record
The record recursion is a function. Two live records at the same index have equal Sum.inl values, so injectivity gives equal time/state pairs. Assemble the interval and live-record conclusions on the common AE event.
Corresponding Lean step
· -- The stored record is a function; injectivity gives uniqueness.
intro b hb
exact Sum.inl.inj hb.1.symm
Exact contiguous compiled proof region; preceding local definitions and facts remain in scope.
Lean verification
The exact proof begins folded immediately after the mathematical argument; the statement is folded beside the claim above.
Lean proof · actual_fixed_reference_physical_time_cover
Fix the actual source objects and finite-time target; Reuse initialized monotone actual clocks on the common AE event; Select the predecessor of the first clock crossing; Prove that the half-open interval index is unique; Exclude stopped records at finite covering times; Recover the actual live record and its stored time; Keep the last live arc when the next wait is infinite; Bound the elapsed offset for a finite next wait; Prove uniqueness of the actual live record
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
theorem actual_fixed_reference_physical_time_cover
{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_fixed_reference_physical_time_cover_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 _ => ⊤)
change ∀ y xRef : E, ∀ z₀ : E × E, ∀ᵐ sample ∂P,
(∀ t : ℝ≥0, ∃! n : ℕ,
eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) ∧
(t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1)) ∧
(∀ t : ℝ≥0, ∀ n : ℕ,
eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) →
(t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1) →
∃! a : ℝ≥0 × (E × E),
record y xRef z₀ (ε sample) n = Sum.inl a ∧ a.1 ≤ t ∧
((t - a.1 : ℝ≥0) : WithTop ℝ≥0) < τ y xRef a.2 (ε sample n))
-- Exact deterministic initialization/monotonicity and guarded live-record updates.
rcases ActualFiniteJumpRecursion.actual_fixed_reference_finite_jump_recursion
hα hαβ hV hH hη hβη with
⟨_, hstep, _, _, _, htime, _, _, _, _⟩
have hinput := ActualNonaccumulation.actual_fixed_reference_event_time_nonaccumulation
hα hαβ hV hH hη hβη
intro y xRef z₀
filter_upwards [hinput y xRef z₀] with sample hgood
have hzero : eventTime y xRef z₀ (ε sample) 0 = 0 :=
(htime y xRef z₀ (ε sample)).1
have hmono : Monotone (eventTime y xRef z₀ (ε sample)) :=
(htime y xRef z₀ (ε sample)).2
constructor
· -- The first clock strictly above t has an initialized finite predecessor.
intro t
obtain ⟨N, hN⟩ := eventually_atTop.mp (hgood.1 t)
have hex : ∃ k : ℕ, (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) k :=
⟨N, hN N le_rfl⟩
let k : ℕ := Nat.find hex
have hk : (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) k :=
Nat.find_spec hex
have hkpos : 0 < k := by
by_contra h
have hk0 : k = 0 := Nat.eq_zero_of_not_pos h
rw [hk0, hzero] at hk
exact (not_lt_of_ge (show (0 : WithTop ℝ≥0) ≤ t from bot_le)) hk
let n : ℕ := k - 1
have hsucc : n + 1 = k := by dsimp [n]; omega
have hlow : eventTime y xRef z₀ (ε sample) n ≤ (t : WithTop ℝ≥0) := by
apply le_of_not_gt
exact Nat.find_min hex (by change k - 1 < k; omega)
have hupp : (t : WithTop ℝ≥0) < eventTime y xRef z₀ (ε sample) (n + 1) := by
simpa only [hsucc] using hk
refine ⟨n, ⟨hlow, hupp⟩, ?_⟩
-- Monotonicity makes distinct half-open event intervals disjoint.
intro m hm
apply le_antisymm
· by_contra h
have hnm : n + 1 ≤ m := by omega
exact (not_lt_of_ge ((hmono hnm).trans hm.1)) hupp
· by_contra h
have hmn : m + 1 ≤ n := by omega
exact (not_lt_of_ge ((hmono hmn).trans hlow)) hm.2
· -- A clock below finite t cannot be a stopped record.
intro t n hlow hupp
cases hr : record y xRef z₀ (ε sample) n with
| inr u =>
have hevent : eventTime y xRef z₀ (ε sample) n = ⊤ := by
change (record y xRef z₀ (ε sample) n).elim _ _ = ⊤
rw [hr]
rfl
rw [hevent] at hlow
exact False.elim ((not_le_of_gt (WithTop.coe_lt_top t)) hlow)
| inl a =>
have haClock : eventTime y xRef z₀ (ε sample) n = (a.1 : WithTop ℝ≥0) := by
change (record y xRef z₀ (ε sample) n).elim _ _ = _
rw [hr]
rfl
have hat : a.1 ≤ t := WithTop.coe_le_coe.mp (by
rw [← haClock]
exact hlow)
refine ⟨a, ⟨rfl, hat, ?_⟩, ?_⟩
· -- Infinite wait keeps the last live arc available at every finite offset.
by_cases hwtop : τ y xRef a.2 (ε sample n) = ⊤
· simp only [hwtop, WithTop.coe_lt_top]
-- Finite wait: the actual next clock is a.time plus that same wait.
· let q : ℝ≥0 := (τ y xRef a.2 (ε sample n)).untop hwtop
have hq : (q : WithTop ℝ≥0) = τ y xRef a.2 (ε sample n) :=
WithTop.coe_untop _ _
have hn : record y xRef z₀ (ε sample) (n + 1) =
Sum.inl (a.1 + (τ y xRef a.2 (ε sample n)).untopD 0,
S xRef (Φ y xRef (((τ y xRef a.2 (ε sample n)).untopD 0 : ℝ≥0) : ℝ) a.2)) :=
((hstep y xRef z₀ (ε sample) n).2 a hr).2 hwtop
rw [← hq] at hn ⊢
have hnTime : eventTime y xRef z₀ (ε sample) (n + 1) =
((a.1 + q : ℝ≥0) : WithTop ℝ≥0) := by
change (record y xRef z₀ (ε sample) (n + 1)).elim _ _ = _
rw [hn]
rfl
have hsmall : t < a.1 + q := WithTop.coe_lt_coe.mp (by
simpa only [hnTime] using hupp)
exact WithTop.coe_lt_coe.mpr ((tsub_lt_iff_right hat).mpr (by
simpa only [add_comm] using hsmall))
· -- The stored record is a function; injectivity gives uniqueness.
intro b hb
exact Sum.inl.inj hb.1.symm
end
end AutoSamplingTheory.ExampleCases.ProximalBPS.ActualPhysicalTimeCoverScope and omitted-condition boundaries
- Only actual interval/live-record/elapsed coverage on a common AE actual-input event per fixed deterministic parameter triple. No measurable index or interpolated process, explicit index0 initialization, global path uniqueness/regularity, Markov/invariance/kernel/hypocoercivity/main/errors/cost/composition. Stopped next jump leaves last live arc; no phase at infinity. No full-paper/Goal, stabilized, merged, purified or live credit.
Sources, dependencies, and reuse
Source and reuse
Samplinglib parents called
AutoSamplingTheory.ExampleCases.ProximalBPS.ActualFiniteJumpRecursion.actual_fixed_reference_finite_jump_recursionAutoSamplingTheory.ExampleCases.ProximalBPS.ActualNonaccumulation.actual_fixed_reference_event_time_nonaccumulation
Mathlib API called (external library)
- Nat.find
- Nat.find_spec
- Nat.find_min
- Nat.eq_zero_of_not_pos
- Filter.eventually_atTop
- WithTop.coe_lt_top
- WithTop.coe_le_coe
- WithTop.coe_lt_coe
- WithTop.coe_untop
- tsub_lt_iff_right
- Sum.inl.inj
Mathematical sources
- Chen-Chewi-Lu-Zhang arXiv2609.06905v1 AppendixA1 A.2, A1.E2 and between-jump A1.SS1.p2.2; nonaccumulation p3.7; original Algorithm1 and six analytic conditions. — Only actual interval/live-record/elapsed coverage on a common AE actual-input event per fixed deterministic parameter triple. No measurable index or interpolated process, explicit index0 initialization, global path uniqueness/regularity, Markov/invariance/kernel/hypocoercivity/main/errors/cost/composition. Stopped next jump leaves last live arc; no phase at infinity. No full-paper/Goal, stabilized, merged, purified or live credit.
Samplinglib prose is not a quotation or a source-equivalence certificate. Definitions and aliases are explained as constructions, not counted as new mathematical proofs.