Theorem: ProbabilityTheory.strong_law_ae
File: Mathlib/Probability/StrongLaw.lean

tactic: have A : ∀ i, Integrable (X i) := fun i ↦ (hident i).integrable_iff.2 hint
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: let Y : ℕ → Ω → E := fun i ↦ (A i).1.mk (X i)
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: have B : ∀ᵐ ω, ∀ n, X n ω = Y n ω :=
  ae_all_iff.2 (fun i ↦ AEStronglyMeasurable.ae_eq_mk (A i).1)
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: have Yint: Integrable (Y 0) := Integrable.congr hint (AEStronglyMeasurable.ae_eq_mk (A 0).1)
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: have C : ∀ᵐ ω, Tendsto (fun n : ℕ ↦ (n : ℝ) ⁻¹ • (∑ i ∈ range n, Y i ω)) atTop (𝓝 𝔼[Y 0]) := by
  apply strong_law_ae_of_measurable Y Yint ((A 0).1.stronglyMeasurable_mk)
    (fun i j hij ↦ IndepFun.ae_eq (hindep hij) (A i).1.ae_eq_mk (A j).1.ae_eq_mk)
    (fun i ↦ ((A i).1.identDistrib_mk.symm.trans (hident i)).trans (A 0).1.identDistrib_mk)
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: filter_upwards [B, C] with ω h₁ h₂
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: case h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
⊢ Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: have : 𝔼[X 0] = 𝔼[Y 0] := integral_congr_ae (AEStronglyMeasurable.ae_eq_mk (A 0).1)
state_before: case h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
⊢ Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: case h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
⊢ Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))

tactic: rw [this]
state_before: case h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
⊢ Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), X 0 a))
state_after: case h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
⊢ Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))

tactic: apply Tendsto.congr (fun n ↦ ?_) h₂
state_before: case h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
⊢ Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
state_after: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
n : ℕ
⊢ (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω = (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω

tactic: congr with i
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
n : ℕ
⊢ (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω = (↑n)⁻¹ • ∑ i ∈ Finset.range n, X i ω
state_after: case e_a.e_f.h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
n i : ℕ
⊢ Y i ω = X i ω

tactic: exact (h₁ i).symm
state_before: case e_a.e_f.h
Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
C : ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
ω : Ω
h₁ : ∀ (n : ℕ), X n ω = Y n ω
h₂ : Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
this : ∫ (a : Ω), X 0 a = ∫ (a : Ω), Y 0 a
n i : ℕ
⊢ Y i ω = X i ω
state_after: no goals

tactic: apply strong_law_ae_of_measurable Y Yint ((A 0).1.stronglyMeasurable_mk)
  (fun i j hij ↦ IndepFun.ae_eq (hindep hij) (A i).1.ae_eq_mk (A j).1.ae_eq_mk)
  (fun i ↦ ((A i).1.identDistrib_mk.symm.trans (hident i)).trans (A 0).1.identDistrib_mk)
state_before: Ω : Type u_1
inst✝⁶ : MeasureSpace Ω
inst✝⁵ : IsProbabilityMeasure ℙ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
X : ℕ → Ω → E
hint : Integrable (X 0) ℙ
hindep : Pairwise fun i j => IndepFun (X i) (X j) ℙ
hident : ∀ (i : ℕ), IdentDistrib (X i) (X 0) ℙ ℙ
A : ∀ (i : ℕ), Integrable (X i) ℙ
Y : ℕ → Ω → E := fun i => AEStronglyMeasurable.mk (X i) ⋯
B : ∀ᵐ (ω : Ω), ∀ (n : ℕ), X n ω = Y n ω
Yint : Integrable (Y 0) ℙ
⊢ ∀ᵐ (ω : Ω), Tendsto (fun n => (↑n)⁻¹ • ∑ i ∈ Finset.range n, Y i ω) atTop (𝓝 (∫ (a : Ω), Y 0 a))
state_after: no goals