Theorem: MeasureTheory.Submartingale.stoppedValue_leastGE
File: Mathlib/Probability/Martingale/BorelCantelli.lean

tactic: rw [submartingale_iff_expected_stoppedValue_mono]
state_before: Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ Submartingale (fun i => stoppedValue f (leastGE f r i)) ℱ μ
state_after: Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ ∀ (τ π : Ω → ℕ),
    IsStoppingTime ℱ τ →
      IsStoppingTime ℱ π →
        τ ≤ π →
          (∃ N, ∀ (x : Ω), π x ≤ N) →
            ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) τ x ∂μ ≤
              ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ

case hadp
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ Adapted ℱ fun i => stoppedValue f (leastGE f r i)

case hint
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ ∀ (i : ℕ), Integrable (stoppedValue f (leastGE f r i)) μ

tactic: intro σ π hσ hπ hσ_le_π hπ_bdd
state_before: Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ ∀ (τ π : Ω → ℕ),
    IsStoppingTime ℱ τ →
      IsStoppingTime ℱ π →
        τ ≤ π →
          (∃ N, ∀ (x : Ω), π x ≤ N) →
            ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) τ x ∂μ ≤
              ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ
state_after: Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
hπ_bdd : ∃ N, ∀ (x : Ω), π x ≤ N
⊢ ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ

tactic: obtain ⟨n, hπ_le_n⟩ := hπ_bdd
state_before: Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
hπ_bdd : ∃ N, ∀ (x : Ω), π x ≤ N
⊢ ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ
state_after: case intro
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ

tactic: simp_rw [stoppedValue_stoppedValue_leastGE f σ r fun i => (hσ_le_π i).trans (hπ_le_n i)]
state_before: case intro
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ
state_after: case intro
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ ∫ (x : Ω), stoppedValue (stoppedProcess f (leastGE f r n)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ

tactic: simp_rw [stoppedValue_stoppedValue_leastGE f π r hπ_le_n]
state_before: case intro
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ ∫ (x : Ω), stoppedValue (stoppedProcess f (leastGE f r n)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (fun i => stoppedValue f (leastGE f r i)) π x ∂μ
state_after: case intro
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ ∫ (x : Ω), stoppedValue (stoppedProcess f (leastGE f r n)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (stoppedProcess f (leastGE f r n)) π x ∂μ

tactic: refine hf.expected_stoppedValue_mono ?_ ?_ ?_ fun ω => (min_le_left _ _).trans (hπ_le_n ω)
state_before: case intro
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ ∫ (x : Ω), stoppedValue (stoppedProcess f (leastGE f r n)) σ x ∂μ ≤
    ∫ (x : Ω), stoppedValue (stoppedProcess f (leastGE f r n)) π x ∂μ
state_after: case intro.refine_1
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ IsStoppingTime ℱ fun x => min (σ x) (leastGE f r n x)

case intro.refine_2
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ IsStoppingTime ℱ fun x => min (π x) (leastGE f r n x)

case intro.refine_3
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ (fun x => min (σ x) (leastGE f r n x)) ≤ fun x => min (π x) (leastGE f r n x)

tactic: exact hσ.min (hf.adapted.isStoppingTime_leastGE _ _)
state_before: case intro.refine_1
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ IsStoppingTime ℱ fun x => min (σ x) (leastGE f r n x)
state_after: no goals

tactic: exact hπ.min (hf.adapted.isStoppingTime_leastGE _ _)
state_before: case intro.refine_2
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ IsStoppingTime ℱ fun x => min (π x) (leastGE f r n x)
state_after: no goals

tactic: exact fun ω => min_le_min (hσ_le_π ω) le_rfl
state_before: case intro.refine_3
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
σ π : Ω → ℕ
hσ : IsStoppingTime ℱ σ
hπ : IsStoppingTime ℱ π
hσ_le_π : σ ≤ π
n : ℕ
hπ_le_n : ∀ (x : Ω), π x ≤ n
⊢ (fun x => min (σ x) (leastGE f r n x)) ≤ fun x => min (π x) (leastGE f r n x)
state_after: no goals

tactic: exact fun i => stronglyMeasurable_stoppedValue_of_le hf.adapted.progMeasurable_of_discrete
  (hf.adapted.isStoppingTime_leastGE _ _) leastGE_le
state_before: case hadp
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ Adapted ℱ fun i => stoppedValue f (leastGE f r i)
state_after: no goals

tactic: exact fun i => integrable_stoppedValue _ (hf.adapted.isStoppingTime_leastGE _ _) hf.integrable
  leastGE_le
state_before: case hint
Ω : Type u_1
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
inst✝ : IsFiniteMeasure μ
hf : Submartingale f ℱ μ
r : ℝ
⊢ ∀ (i : ℕ), Integrable (stoppedValue f (leastGE f r i)) μ
state_after: no goals