Theorem: MeasureTheory.integrable_count_iff
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [Integrable, hasFiniteIntegral_count_iff, and_iff_right_iff_imp]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
⊢ Integrable f Measure.count ↔ Summable fun x => ‖f x‖
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
⊢ (Summable fun x => ‖f x‖) → AEStronglyMeasurable f Measure.count

tactic: intro hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
⊢ (Summable fun x => ‖f x‖) → AEStronglyMeasurable f Measure.count
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
⊢ AEStronglyMeasurable f Measure.count

tactic: have hs' : (Function.support f).Countable := by
  simpa only [Ne, Pi.zero_apply, eq_comm, Function.support, norm_eq_zero]
    using hs.countable_support
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
⊢ AEStronglyMeasurable f Measure.count
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
⊢ AEStronglyMeasurable f Measure.count

tactic: letI : MeasurableSpace β := borel β
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
⊢ AEStronglyMeasurable f Measure.count
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this : MeasurableSpace β := borel β
⊢ AEStronglyMeasurable f Measure.count

tactic: haveI : BorelSpace β := ⟨rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this : MeasurableSpace β := borel β
⊢ AEStronglyMeasurable f Measure.count
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ AEStronglyMeasurable f Measure.count

tactic: refine aestronglyMeasurable_iff_aemeasurable_separable.mpr ⟨?_, ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ AEStronglyMeasurable f Measure.count
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ AEMeasurable f Measure.count

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂Measure.count, f x ∈ t

tactic: simpa only [Ne, Pi.zero_apply, eq_comm, Function.support, norm_eq_zero]
  using hs.countable_support
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
⊢ (Function.support f).Countable
state_after: no goals

tactic: refine (measurable_zero.measurable_of_countable_ne ?_).aemeasurable
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ AEMeasurable f Measure.count
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ {x | 0 x ≠ f x}.Countable

tactic: simpa only [Ne, Pi.zero_apply, eq_comm, Function.support] using hs'
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ {x | 0 x ≠ f x}.Countable
state_after: no goals

tactic: refine ⟨f '' univ, ?_, ae_of_all _ fun a ↦ ⟨a, ⟨mem_univ _, rfl⟩⟩⟩
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂Measure.count, f x ∈ t
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ IsSeparable (f '' univ)

tactic: suffices f '' univ ⊆ (f '' f.support) ∪ {0} from
  (((hs'.image f).union (countable_singleton 0)).mono this).isSeparable
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ IsSeparable (f '' univ)
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ f '' univ ⊆ f '' Function.support f ∪ {0}

tactic: intro g hg
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
⊢ f '' univ ⊆ f '' Function.support f ∪ {0}
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
g : β
hg : g ∈ f '' univ
⊢ g ∈ f '' Function.support f ∪ {0}

tactic: rcases eq_or_ne g 0 with rfl | hg'
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
g : β
hg : g ∈ f '' univ
⊢ g ∈ f '' Function.support f ∪ {0}
state_after: case refine_2.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
hg : 0 ∈ f '' univ
⊢ 0 ∈ f '' Function.support f ∪ {0}

case refine_2.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
g : β
hg : g ∈ f '' univ
hg' : g ≠ 0
⊢ g ∈ f '' Function.support f ∪ {0}

tactic: exact Or.inr (mem_singleton _)
state_before: case refine_2.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
hg : 0 ∈ f '' univ
⊢ 0 ∈ f '' Function.support f ∪ {0}
state_after: no goals

tactic: obtain ⟨x, -, rfl⟩ := (mem_image ..).mp hg
state_before: case refine_2.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
g : β
hg : g ∈ f '' univ
hg' : g ≠ 0
⊢ g ∈ f '' Function.support f ∪ {0}
state_after: case refine_2.inr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
x : α
hg : f x ∈ f '' univ
hg' : f x ≠ 0
⊢ f x ∈ f '' Function.support f ∪ {0}

tactic: exact Or.inl ⟨x, hg', rfl⟩
state_before: case refine_2.inr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : MeasurableSingletonClass α
f : α → β
hs : Summable fun x => ‖f x‖
hs' : (Function.support f).Countable
this✝ : MeasurableSpace β := borel β
this : BorelSpace β
x : α
hg : f x ∈ f '' univ
hg' : f x ≠ 0
⊢ f x ∈ f '' Function.support f ∪ {0}
state_after: no goals