Theorem: Measure.meas_le_ne_meas_lt_subset_meas_pos
File: Mathlib/MeasureTheory/Integral/Layercake.lean

tactic: have uni : {a : α | t ≤ g a} = {a : α | t < g a} ∪ {a : α | t = g a} := by
  ext a
  simp only [mem_setOf, mem_union]
  apply le_iff_lt_or_eq
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
⊢ 0 < ↑↑μ {a | g a = t}

tactic: rw [show {a : α | t = g a} = {a : α | g a = t} by simp_rw [eq_comm]] at uni
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | t = g a}
⊢ 0 < ↑↑μ {a | g a = t}

tactic: have disj : {a : α | t < g a} ∩ {a : α | g a = t} = ∅ := by
  ext a
  simp only [mem_inter_iff, mem_setOf, mem_empty_iff_false, iff_false_iff, not_and]
  exact ne_of_gt
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
⊢ 0 < ↑↑μ {a | g a = t}

tactic: have μ_add : μ {a : α | t ≤ g a} = μ {a : α | t < g a} + μ {a : α | g a = t} := by
  rw [uni,
    measure_union (disjoint_iff_inter_eq_empty.mpr disj)
      (g_mble (Finite.measurableSet (finite_singleton t)))]
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
disj : {a | t < g a} ∩ {a | g a = t} = ∅
⊢ 0 < ↑↑μ {a | g a = t}

tactic: by_contra con
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
disj : {a | t < g a} ∩ {a | g a = t} = ∅
μ_add : ↑↑μ {a | t ≤ g a} = ↑↑μ {a | t < g a} + ↑↑μ {a | g a = t}
⊢ 0 < ↑↑μ {a | g a = t}

tactic: rw [not_lt, nonpos_iff_eq_zero] at con
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
disj : {a | t < g a} ∩ {a | g a = t} = ∅
μ_add : ↑↑μ {a | t ≤ g a} = ↑↑μ {a | t < g a} + ↑↑μ {a | g a = t}
con : ¬0 < ↑↑μ {a | g a = t}
⊢ False

tactic: rw [con, add_zero] at μ_add
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
disj : {a | t < g a} ∩ {a | g a = t} = ∅
μ_add : ↑↑μ {a | t ≤ g a} = ↑↑μ {a | t < g a} + ↑↑μ {a | g a = t}
con : ↑↑μ {a | g a = t} = 0
⊢ False

tactic: exact ht μ_add
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
disj : {a | t < g a} ∩ {a | g a = t} = ∅
μ_add : ↑↑μ {a | t ≤ g a} = ↑↑μ {a | t < g a}
con : ↑↑μ {a | g a = t} = 0
⊢ False

tactic: ext a
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
⊢ {a | t ≤ g a} = {a | t < g a} ∪ {a | t = g a}

tactic: simp only [mem_setOf, mem_union]
state_before: case h
α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
a : α
⊢ a ∈ {a | t ≤ g a} ↔ a ∈ {a | t < g a} ∪ {a | t = g a}

tactic: apply le_iff_lt_or_eq
state_before: case h
α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
a : α
⊢ t ≤ g a ↔ t < g a ∨ t = g a

tactic: simp_rw [eq_comm]
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | t = g a}
⊢ {a | t = g a} = {a | g a = t}

tactic: ext a
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
⊢ {a | t < g a} ∩ {a | g a = t} = ∅

tactic: simp only [mem_inter_iff, mem_setOf, mem_empty_iff_false, iff_false_iff, not_and]
state_before: case h
α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
a : α
⊢ a ∈ {a | t < g a} ∩ {a | g a = t} ↔ a ∈ ∅

tactic: exact ne_of_gt
state_before: case h
α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
a : α
⊢ t < g a → ¬g a = t

tactic: rw [uni,
  measure_union (disjoint_iff_inter_eq_empty.mpr disj)
    (g_mble (Finite.measurableSet (finite_singleton t)))]
state_before: α : Type u_2
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
β : Type ?u.395934
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSingletonClass β
R : Type u_1
inst✝² : LinearOrder R
inst✝¹ : MeasurableSpace R
inst✝ : MeasurableSingletonClass R
g : α → R
g_mble : Measurable g
t : R
ht : ↑↑μ {a | t ≤ g a} ≠ ↑↑μ {a | t < g a}
uni : {a | t ≤ g a} = {a | t < g a} ∪ {a | g a = t}
disj : {a | t < g a} ∩ {a | g a = t} = ∅
⊢ ↑↑μ {a | t ≤ g a} = ↑↑μ {a | t < g a} + ↑↑μ {a | g a = t}