Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

MarkovProcess.DenseTime.Shift

Definition
MarkovProcessModule_MarkovProcess_DenseTime_Shift

by WillR · Oct 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

markovprocessmarkovprocess-module-importscope-mainscott-armstrongsource-faithful

Shifts of dense-time paths

This file defines addition by a nonnegative rational time on the fixed dense carrier and the induced shift of dense-time paths. Restriction of a continuous path commutes with this shift. No probability law or Markov property is asserted.

Complete pinned Lean module MarkovProcess.DenseTime.Shift by Scott Armstrong (Apache-2.0). Contains the original definitions, instances, theorems and proofs in their original declaration order. Only local MarkovProcess import directives have been rewritten for Prove2Me; source mathematical declarations are unchanged. The bundle must pass Prove2Me's remote compiler before it can be used as a dependency.

Definition code
/-
Copyright (c) 2026 Scott Armstrong. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Armstrong
-/
import Definitions.Def_MarkovProcessModule_MarkovProcess_Path_Shift
import Definitions.Def_MarkovProcessModule_MarkovProcess_Continuity_DenseTimeContinuousExtension

/-!
# Shifts of dense-time paths

This file defines addition by a nonnegative rational time on the fixed dense carrier and the
induced shift of dense-time paths.  Restriction of a continuous path commutes with this shift.
No probability law or Markov property is asserted.
-/

namespace MarkovProcess

noncomputable section

namespace DenseTime

/-- Addition by a fixed dense time as an order embedding of the dense time carrier. -/
def addOrderEmbedding (s : DenseTime) : DenseTime ↪o DenseTime :=
  OrderEmbedding.ofStrictMono (fun t ↦ s + t) fun _ _ h ↦ by
    simpa only [add_comm] using add_lt_add_left h s

@[simp]
theorem addOrderEmbedding_apply (s t : DenseTime) : addOrderEmbedding s t = s + t := rfl

/-- Embedding a rational-time sum into physical time gives the sum of the embedded times. -/
@[simp]
theorem castOrderEmbedding_add (s t : DenseTime) :
    castOrderEmbedding (s + t) = castOrderEmbedding s + castOrderEmbedding t := by
  change ((s + t : DenseTime) : NNReal) = (s : NNReal) + (t : NNReal)
  norm_cast

end DenseTime

namespace DenseTimePath

variable {alpha : Type*}

/-- Shift a dense-time path by a fixed nonnegative rational time. -/
def shift (s : DenseTime) (path : DenseTime → alpha) : DenseTime → alpha :=
  path ∘ DenseTime.addOrderEmbedding s

@[simp]
theorem shift_apply (s t : DenseTime) (path : DenseTime → alpha) :
    shift s path t = path (s + t) := rfl

@[simp]
theorem shift_zero (path : DenseTime → alpha) : shift 0 path = path := by
  funext t
  simp only [shift_apply, zero_add]

theorem shift_add (s t : DenseTime) (path : DenseTime → alpha) :
    shift t (shift s path) = shift (s + t) path := by
  funext r
  simp only [shift_apply, add_assoc]

variable [MeasurableSpace alpha]

/-- Shifting dense-time paths by a fixed time is measurable for the product measurable space. -/
theorem measurable_shift (s : DenseTime) :
    Measurable (shift s : (DenseTime → alpha) → DenseTime → alpha) := by
  rw [measurable_pi_iff]
  intro t
  exact measurable_pi_apply (s + t)

end DenseTimePath

namespace ContinuousPath

variable {alpha : Type*} [TopologicalSpace alpha]

/-- Restricting a path after a rational physical-time shift is the same as shifting its
dense-time restriction. -/
theorem denseRestriction_shift (s : DenseTime) (omega : ContinuousPath alpha) :
    denseRestriction
        (shift (DenseTime.castOrderEmbedding s) omega) =
      DenseTimePath.shift s (denseRestriction omega) := by
  funext t
  simp only [denseRestriction_apply, shift_apply, DenseTimePath.shift_apply,
    DenseTime.castOrderEmbedding_add]

end ContinuousPath
end
end MarkovProcess
Source
https://github.com/scottnarmstrong/MarkovProcess/blob/1f8060caa137731fa08029592019eeaf9d997fe5/MarkovProcess/DenseTime/Shift.lean

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me