Theorem: MeasureTheory.JordanDecomposition.exists_compl_positive_negative
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: obtain ⟨S, hS₁, hS₂, hS₃⟩ := j.mutuallySingular
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ ∃ S,
    MeasurableSet S ∧
      VectorMeasure.restrict j.toSignedMeasure S ≤ VectorMeasure.restrict 0 S ∧
        VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j.toSignedMeasure Sᶜ ∧ j.posPart S = 0 ∧ j.negPart Sᶜ = 0
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
⊢ ∃ S,
    MeasurableSet S ∧
      VectorMeasure.restrict j.toSignedMeasure S ≤ VectorMeasure.restrict 0 S ∧
        VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j.toSignedMeasure Sᶜ ∧ j.posPart S = 0 ∧ j.negPart Sᶜ = 0

tactic: refine ⟨S, hS₁, ?_, ?_, hS₂, hS₃⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
⊢ ∃ S,
    MeasurableSet S ∧
      VectorMeasure.restrict j.toSignedMeasure S ≤ VectorMeasure.restrict 0 S ∧
        VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j.toSignedMeasure Sᶜ ∧ j.posPart S = 0 ∧ j.negPart Sᶜ = 0
state_after: case intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
⊢ VectorMeasure.restrict j.toSignedMeasure S ≤ VectorMeasure.restrict 0 S

case intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
⊢ VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j.toSignedMeasure Sᶜ

tactic: refine restrict_le_restrict_of_subset_le _ _ fun A hA hA₁ => ?_
state_before: case intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
⊢ VectorMeasure.restrict j.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
state_after: case intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ S
⊢ ↑j.toSignedMeasure A ≤ ↑0 A

tactic: rw [toSignedMeasure, toSignedMeasure_sub_apply hA,
  show j.posPart A = 0 from nonpos_iff_eq_zero.1 (hS₂ ▸ measure_mono hA₁), ENNReal.zero_toReal,
  zero_sub, neg_le, zero_apply, neg_zero]
state_before: case intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ S
⊢ ↑j.toSignedMeasure A ≤ ↑0 A
state_after: case intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ S
⊢ 0 ≤ (j.negPart A).toReal

tactic: exact ENNReal.toReal_nonneg
state_before: case intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ S
⊢ 0 ≤ (j.negPart A).toReal
state_after: no goals

tactic: refine restrict_le_restrict_of_subset_le _ _ fun A hA hA₁ => ?_
state_before: case intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
⊢ VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j.toSignedMeasure Sᶜ
state_after: case intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ Sᶜ
⊢ ↑0 A ≤ ↑j.toSignedMeasure A

tactic: rw [toSignedMeasure, toSignedMeasure_sub_apply hA,
  show j.negPart A = 0 from nonpos_iff_eq_zero.1 (hS₃ ▸ measure_mono hA₁), ENNReal.zero_toReal,
  sub_zero]
state_before: case intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ Sᶜ
⊢ ↑0 A ≤ ↑j.toSignedMeasure A
state_after: case intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ Sᶜ
⊢ ↑0 A ≤ (j.posPart A).toReal

tactic: exact ENNReal.toReal_nonneg
state_before: case intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
S : Set α
hS₁ : MeasurableSet S
hS₂ : j.posPart S = 0
hS₃ : j.negPart Sᶜ = 0
A : Set α
hA : MeasurableSet A
hA₁ : A ⊆ Sᶜ
⊢ ↑0 A ≤ (j.posPart A).toReal
state_after: no goals