Theorem: MeasureTheory.SignedMeasure.mutuallySingular_iff
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: constructor
state_before: α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
⊢ s ⟂ᵥ t ↔ totalVariation s ⟂ₘ totalVariation t

tactic: rintro ⟨u, hmeas, hu₁, hu₂⟩
state_before: case mp
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
⊢ s ⟂ᵥ t → totalVariation s ⟂ₘ totalVariation t

tactic: obtain ⟨i, hi₁, hi₂, hi₃, hipos, hineg⟩ := s.toJordanDecomposition_spec
state_before: case mp.intro.intro.intro
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
⊢ totalVariation s ⟂ₘ totalVariation t

tactic: obtain ⟨j, hj₁, hj₂, hj₃, hjpos, hjneg⟩ := t.toJordanDecomposition_spec
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s (iᶜ) ≤ VectorMeasure.restrict 0 (iᶜ)
hipos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hineg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s (iᶜ) (_ : MeasurableSet (iᶜ)) hi₃
⊢ totalVariation s ⟂ₘ totalVariation t

tactic: refine' ⟨u, hmeas, _, _⟩
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s (iᶜ) ≤ VectorMeasure.restrict 0 (iᶜ)
hipos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hineg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s (iᶜ) (_ : MeasurableSet (iᶜ)) hi₃
j : Set α
hj₁ : MeasurableSet j
hj₂ : VectorMeasure.restrict 0 j ≤ VectorMeasure.restrict t j
hj₃ : VectorMeasure.restrict t (jᶜ) ≤ VectorMeasure.restrict 0 (jᶜ)
hjpos : (toJordanDecomposition t).posPart = toMeasureOfZeroLE t j hj₁ hj₂
hjneg : (toJordanDecomposition t).negPart = toMeasureOfLEZero t (jᶜ) (_ : MeasurableSet (jᶜ)) hj₃
⊢ totalVariation s ⟂ₘ totalVariation t

tactic: rw [totalVariation, Measure.add_apply, hipos, hineg, toMeasureOfZeroLE_apply _ _ _ hmeas,
  toMeasureOfLEZero_apply _ _ _ hmeas]
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s (iᶜ) ≤ VectorMeasure.restrict 0 (iᶜ)
hipos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hineg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s (iᶜ) (_ : MeasurableSet (iᶜ)) hi₃
j : Set α
hj₁ : MeasurableSet j
hj₂ : VectorMeasure.restrict 0 j ≤ VectorMeasure.restrict t j
hj₃ : VectorMeasure.restrict t (jᶜ) ≤ VectorMeasure.restrict 0 (jᶜ)
hjpos : (toJordanDecomposition t).posPart = toMeasureOfZeroLE t j hj₁ hj₂
hjneg : (toJordanDecomposition t).negPart = toMeasureOfLEZero t (jᶜ) (_ : MeasurableSet (jᶜ)) hj₃
⊢ ↑↑(totalVariation s) u = 0

tactic: simp [hu₁ _ (Set.inter_subset_right _ _), ← NNReal.eq_iff]
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s (iᶜ) ≤ VectorMeasure.restrict 0 (iᶜ)
hipos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hineg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s (iᶜ) (_ : MeasurableSet (iᶜ)) hi₃
j : Set α
hj₁ : MeasurableSet j
hj₂ : VectorMeasure.restrict 0 j ≤ VectorMeasure.restrict t j
hj₃ : VectorMeasure.restrict t (jᶜ) ≤ VectorMeasure.restrict 0 (jᶜ)
hjpos : (toJordanDecomposition t).posPart = toMeasureOfZeroLE t j hj₁ hj₂
hjneg : (toJordanDecomposition t).negPart = toMeasureOfLEZero t (jᶜ) (_ : MeasurableSet (jᶜ)) hj₃
⊢ ↑{ val := ↑s (i ∩ u), property := (_ : 0 ≤ ↑s (i ∩ u)) } +
      ↑{ val := -↑s (iᶜ ∩ u), property := (_ : 0 ≤ -↑s (iᶜ ∩ u)) } =
    0

tactic: rw [totalVariation, Measure.add_apply, hjpos, hjneg,
  toMeasureOfZeroLE_apply _ _ _ hmeas.compl,
  toMeasureOfLEZero_apply _ _ _ hmeas.compl]
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s (iᶜ) ≤ VectorMeasure.restrict 0 (iᶜ)
hipos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hineg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s (iᶜ) (_ : MeasurableSet (iᶜ)) hi₃
j : Set α
hj₁ : MeasurableSet j
hj₂ : VectorMeasure.restrict 0 j ≤ VectorMeasure.restrict t j
hj₃ : VectorMeasure.restrict t (jᶜ) ≤ VectorMeasure.restrict 0 (jᶜ)
hjpos : (toJordanDecomposition t).posPart = toMeasureOfZeroLE t j hj₁ hj₂
hjneg : (toJordanDecomposition t).negPart = toMeasureOfLEZero t (jᶜ) (_ : MeasurableSet (jᶜ)) hj₃
⊢ ↑↑(totalVariation t) (uᶜ) = 0

tactic: simp [hu₂ _ (Set.inter_subset_right _ _), ← NNReal.eq_iff]
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t_1 : Set α), t_1 ⊆ uᶜ → ↑t t_1 = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s (iᶜ) ≤ VectorMeasure.restrict 0 (iᶜ)
hipos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hineg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s (iᶜ) (_ : MeasurableSet (iᶜ)) hi₃
j : Set α
hj₁ : MeasurableSet j
hj₂ : VectorMeasure.restrict 0 j ≤ VectorMeasure.restrict t j
hj₃ : VectorMeasure.restrict t (jᶜ) ≤ VectorMeasure.restrict 0 (jᶜ)
hjpos : (toJordanDecomposition t).posPart = toMeasureOfZeroLE t j hj₁ hj₂
hjneg : (toJordanDecomposition t).negPart = toMeasureOfLEZero t (jᶜ) (_ : MeasurableSet (jᶜ)) hj₃
⊢ ↑{ val := ↑t (j ∩ uᶜ), property := (_ : 0 ≤ ↑t (j ∩ uᶜ)) } +
      ↑{ val := -↑t (jᶜ ∩ uᶜ), property := (_ : 0 ≤ -↑t (jᶜ ∩ uᶜ)) } =
    0

tactic: rintro ⟨u, hmeas, hu₁, hu₂⟩
state_before: case mpr
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
⊢ totalVariation s ⟂ₘ totalVariation t → s ⟂ᵥ t

tactic: exact
  ⟨u, hmeas, fun t htu => null_of_totalVariation_zero _ (measure_mono_null htu hu₁),
    fun t htv => null_of_totalVariation_zero _ (measure_mono_null htv hu₂)⟩
state_before: case mpr.intro.intro.intro
α : Type u_1
β : Type ?u.94762
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ↑↑(totalVariation s) u = 0
hu₂ : ↑↑(totalVariation t) (uᶜ) = 0
⊢ s ⟂ᵥ t