Theorem: MeasureTheory.ae_eq_zero_of_forall_inner
File: Mathlib/MeasureTheory/Function/AEEqOfIntegral.lean

tactic: let s := denseSeq E
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
⊢ f =ᵐ[μ] 0

tactic: have hs : DenseRange s := denseRange_denseSeq E
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
s : ℕ → E := denseSeq E
⊢ f =ᵐ[μ] 0

tactic: have hf' : ∀ᵐ x ∂μ, ∀ n : ℕ, inner (s n) (f x) = (0 : 𝕜) := ae_all_iff.mpr fun n => hf (s n)
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
s : ℕ → E := denseSeq E
hs : DenseRange s
⊢ f =ᵐ[μ] 0

tactic: refine' hf'.mono fun x hx => _
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
s : ℕ → E := denseSeq E
hs : DenseRange s
hf' : ∀ᵐ (x : α) ∂μ, ∀ (n : ℕ), inner (s n) (f x) = 0
⊢ f =ᵐ[μ] 0

tactic: rw [Pi.zero_apply, ← @inner_self_eq_zero 𝕜]
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
s : ℕ → E := denseSeq E
hs : DenseRange s
hf' : ∀ᵐ (x : α) ∂μ, ∀ (n : ℕ), inner (s n) (f x) = 0
x : α
hx : ∀ (n : ℕ), inner (s n) (f x) = 0
⊢ f x = OfNat.ofNat 0 x

tactic: have h_closed : IsClosed {c : E | inner c (f x) = (0 : 𝕜)} :=
  isClosed_eq (continuous_id.inner continuous_const) continuous_const
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
s : ℕ → E := denseSeq E
hs : DenseRange s
hf' : ∀ᵐ (x : α) ∂μ, ∀ (n : ℕ), inner (s n) (f x) = 0
x : α
hx : ∀ (n : ℕ), inner (s n) (f x) = 0
⊢ inner (f x) (f x) = 0

tactic: exact @isClosed_property ℕ E _ s (fun c => inner c (f x) = (0 : 𝕜)) hs h_closed (fun n => hx n) _
state_before: α : Type u_3
E : Type u_1
𝕜 : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : SecondCountableTopology E
f : α → E
hf : ∀ (c : E), (fun x => inner c (f x)) =ᵐ[μ] 0
s : ℕ → E := denseSeq E
hs : DenseRange s
hf' : ∀ᵐ (x : α) ∂μ, ∀ (n : ℕ), inner (s n) (f x) = 0
x : α
hx : ∀ (n : ℕ), inner (s n) (f x) = 0
h_closed : IsClosed {c | inner c (f x) = 0}
⊢ inner (f x) (f x) = 0