[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ≥0
⊢ ↑r • j = r • j
[PROOFSTEP]
rw [real_smul_def, if_pos (NNReal.coe_nonneg r), Real.toNNReal_coe]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ
hr : 0 ≤ r
⊢ (r • j).posPart = Real.toNNReal r • j.posPart
[PROOFSTEP]
rw [real_smul_def, ← smul_posPart, if_pos hr]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ
hr : 0 ≤ r
⊢ (r • j).negPart = Real.toNNReal r • j.negPart
[PROOFSTEP]
rw [real_smul_def, ← smul_negPart, if_pos hr]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ
hr : r < 0
⊢ (r • j).posPart = Real.toNNReal (-r) • j.negPart
[PROOFSTEP]
rw [real_smul_def, ← smul_negPart, if_neg (not_le.2 hr), neg_posPart]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ
hr : r < 0
⊢ (r • j).negPart = Real.toNNReal (-r) • j.posPart
[PROOFSTEP]
rw [real_smul_def, ← smul_posPart, if_neg (not_le.2 hr), neg_negPart]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ toSignedMeasure 0 = 0
[PROOFSTEP]
ext1 i hi
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
i : Set α
hi : MeasurableSet i
⊢ ↑(toSignedMeasure 0) i = ↑0 i
[PROOFSTEP]
rw [toSignedMeasure, toSignedMeasure_sub_apply hi, zero_posPart, zero_negPart, sub_self, VectorMeasure.coe_zero,
  Pi.zero_apply]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ toSignedMeasure (-j) = -toSignedMeasure j
[PROOFSTEP]
ext1 i hi
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
i : Set α
hi : MeasurableSet i
⊢ ↑(toSignedMeasure (-j)) i = ↑(-toSignedMeasure j) i
[PROOFSTEP]
rw [neg_apply, toSignedMeasure, toSignedMeasure, toSignedMeasure_sub_apply hi, toSignedMeasure_sub_apply hi, neg_sub,
  neg_posPart, neg_negPart]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ≥0
⊢ toSignedMeasure (r • j) = r • toSignedMeasure j
[PROOFSTEP]
ext1 i hi
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ≥0
i : Set α
hi : MeasurableSet i
⊢ ↑(toSignedMeasure (r • j)) i = ↑(r • toSignedMeasure j) i
[PROOFSTEP]
rw [VectorMeasure.smul_apply, toSignedMeasure, toSignedMeasure, toSignedMeasure_sub_apply hi,
  toSignedMeasure_sub_apply hi, smul_sub, smul_posPart, smul_negPart, ← ENNReal.toReal_smul, ← ENNReal.toReal_smul,
  smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply, smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ ∃ S,
    MeasurableSet S ∧
      VectorMeasure.restrict (toSignedMeasure j) S ≤ VectorMeasure.restrict 0 S ∧
        VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j) Sᶜ ∧
          ↑↑j.posPart S = 0 ∧ ↑↑j.negPart Sᶜ = 0
[PROOFSTEP]
obtain ⟨S, hS₁, hS₂, hS₃⟩ := j.mutuallySingular
[GOAL]
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 (toSignedMeasure j) S ≤ VectorMeasure.restrict 0 S ∧
        VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j) Sᶜ ∧
          ↑↑j.posPart S = 0 ∧ ↑↑j.negPart Sᶜ = 0
[PROOFSTEP]
refine' ⟨S, hS₁, _, _, hS₂, hS₃⟩
[GOAL]
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 (toSignedMeasure j) S ≤ VectorMeasure.restrict 0 S
[PROOFSTEP]
refine' restrict_le_restrict_of_subset_le _ _ fun A hA hA₁ => _
[GOAL]
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
⊢ ↑(toSignedMeasure j) A ≤ ↑0 A
[PROOFSTEP]
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]
[GOAL]
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 ≤ ENNReal.toReal (↑↑j.negPart A)
[PROOFSTEP]
exact ENNReal.toReal_nonneg
[GOAL]
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 (toSignedMeasure j) Sᶜ
[PROOFSTEP]
refine' restrict_le_restrict_of_subset_le _ _ fun A hA hA₁ => _
[GOAL]
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 ≤ ↑(toSignedMeasure j) A
[PROOFSTEP]
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]
[GOAL]
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 ≤ ENNReal.toReal (↑↑j.posPart A)
[PROOFSTEP]
exact ENNReal.toReal_nonneg
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
hi : MeasurableSet
    (choose
      (_ :
        ∃ i,
          MeasurableSet i ∧
            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
  VectorMeasure.restrict 0
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
      VectorMeasure.restrict s
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
    VectorMeasure.restrict s
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
      VectorMeasure.restrict 0
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ :=
  choose_spec (exists_compl_positive_negative s)
⊢ toMeasureOfZeroLE s i
      (_ :
        MeasurableSet
          (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)))
      (_ :
        VectorMeasure.restrict 0
            (choose
              (_ :
                ∃ i,
                  MeasurableSet i ∧
                    VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                      VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
          VectorMeasure.restrict s
            (choose
              (_ :
                ∃ i,
                  MeasurableSet i ∧
                    VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                      VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))) ⟂ₘ
    toMeasureOfLEZero s iᶜ
      (_ :
        MeasurableSet
          (choose
              (_ :
                ∃ i,
                  MeasurableSet i ∧
                    VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                      VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ)
      (_ :
        VectorMeasure.restrict s
            (choose
                (_ :
                  ∃ i,
                    MeasurableSet i ∧
                      VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                        VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
          VectorMeasure.restrict 0
            (choose
                (_ :
                  ∃ i,
                    MeasurableSet i ∧
                      VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                        VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ)
[PROOFSTEP]
refine'
  ⟨iᶜ, hi.1.compl, _, _⟩
    -- Porting note: added `← NNReal.eq_iff`
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
hi : MeasurableSet
    (choose
      (_ :
        ∃ i,
          MeasurableSet i ∧
            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
  VectorMeasure.restrict 0
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
      VectorMeasure.restrict s
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
    VectorMeasure.restrict s
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
      VectorMeasure.restrict 0
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ :=
  choose_spec (exists_compl_positive_negative s)
⊢ ↑↑(toMeasureOfZeroLE s i
            (_ :
              MeasurableSet
                (choose
                  (_ :
                    ∃ i,
                      MeasurableSet i ∧
                        VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                          VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)))
            (_ :
              VectorMeasure.restrict 0
                  (choose
                    (_ :
                      ∃ i,
                        MeasurableSet i ∧
                          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
                VectorMeasure.restrict s
                  (choose
                    (_ :
                      ∃ i,
                        MeasurableSet i ∧
                          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))))
      iᶜ =
    0
[PROOFSTEP]
rw [toMeasureOfZeroLE_apply _ _ hi.1 hi.1.compl]
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
hi : MeasurableSet
    (choose
      (_ :
        ∃ i,
          MeasurableSet i ∧
            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
  VectorMeasure.restrict 0
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
      VectorMeasure.restrict s
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
    VectorMeasure.restrict s
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
      VectorMeasure.restrict 0
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ :=
  choose_spec (exists_compl_positive_negative s)
⊢ ↑{
        val :=
          ↑s
            (choose
                (_ :
                  ∃ i,
                    MeasurableSet i ∧
                      VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                        VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ) ∩
              (choose
                  (_ :
                    ∃ i,
                      MeasurableSet i ∧
                        VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                          VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ),
        property :=
          (_ :
            0 ≤
              ↑s
                (choose
                    (_ :
                      ∃ i,
                        MeasurableSet i ∧
                          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ) ∩
                  (choose
                      (_ :
                        ∃ i,
                          MeasurableSet i ∧
                            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ)) } =
    0
[PROOFSTEP]
simp [← NNReal.eq_iff]
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
hi : MeasurableSet
    (choose
      (_ :
        ∃ i,
          MeasurableSet i ∧
            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
  VectorMeasure.restrict 0
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
      VectorMeasure.restrict s
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
    VectorMeasure.restrict s
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
      VectorMeasure.restrict 0
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ :=
  choose_spec (exists_compl_positive_negative s)
⊢ ↑↑(toMeasureOfLEZero s iᶜ
            (_ :
              MeasurableSet
                (choose
                    (_ :
                      ∃ i,
                        MeasurableSet i ∧
                          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ)
            (_ :
              VectorMeasure.restrict s
                  (choose
                      (_ :
                        ∃ i,
                          MeasurableSet i ∧
                            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
                VectorMeasure.restrict 0
                  (choose
                      (_ :
                        ∃ i,
                          MeasurableSet i ∧
                            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ))
      iᶜᶜ =
    0
[PROOFSTEP]
rw [toMeasureOfLEZero_apply _ _ hi.1.compl hi.1.compl.compl]
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
hi : MeasurableSet
    (choose
      (_ :
        ∃ i,
          MeasurableSet i ∧
            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
  VectorMeasure.restrict 0
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
      VectorMeasure.restrict s
        (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ∧
    VectorMeasure.restrict s
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
      VectorMeasure.restrict 0
        (choose
            (_ :
              ∃ i,
                MeasurableSet i ∧
                  VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                    VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ :=
  choose_spec (exists_compl_positive_negative s)
⊢ ↑{
        val :=
          -↑s
              ((choose
                    (_ :
                      ∃ i,
                        MeasurableSet i ∧
                          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ∩
                (choose
                      (_ :
                        ∃ i,
                          MeasurableSet i ∧
                            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜᶜ),
        property :=
          (_ :
            0 ≤
              -↑s
                  ((choose
                        (_ :
                          ∃ i,
                            MeasurableSet i ∧
                              VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                                VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ∩
                    (choose
                          (_ :
                            ∃ i,
                              MeasurableSet i ∧
                                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜᶜ)) } =
    0
[PROOFSTEP]
simp [← NNReal.eq_iff]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
⊢ ∃ i hi₁ hi₂ hi₃,
    (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂ ∧
      (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
[PROOFSTEP]
set i := choose s.exists_compl_positive_negative
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
⊢ ∃ i hi₁ hi₂ hi₃,
    (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂ ∧
      (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
[PROOFSTEP]
obtain ⟨hi₁, hi₂, hi₃⟩ := choose_spec s.exists_compl_positive_negative
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α :=
  choose
    (_ :
      ∃ i,
        MeasurableSet i ∧
          VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
            VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)
hi₁ :
  MeasurableSet
    (choose
      (_ :
        ∃ i,
          MeasurableSet i ∧
            VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
              VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))
hi₂ :
  VectorMeasure.restrict 0
      (choose
        (_ :
          ∃ i,
            MeasurableSet i ∧
              VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ)) ≤
    VectorMeasure.restrict s
      (choose
        (_ :
          ∃ i,
            MeasurableSet i ∧
              VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))
hi₃ :
  VectorMeasure.restrict s
      (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ ≤
    VectorMeasure.restrict 0
      (choose
          (_ :
            ∃ i,
              MeasurableSet i ∧
                VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i ∧
                  VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ))ᶜ
⊢ ∃ i hi₁ hi₂ hi₃,
    (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂ ∧
      (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
[PROOFSTEP]
exact ⟨i, hi₁, hi₂, hi₃, rfl, rfl⟩
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
⊢ JordanDecomposition.toSignedMeasure (toJordanDecomposition s) = s
[PROOFSTEP]
obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hμ : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hν : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ JordanDecomposition.toSignedMeasure (toJordanDecomposition s) = s
[PROOFSTEP]
simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hμ : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hν : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ Measure.toSignedMeasure (toMeasureOfZeroLE s i hi₁ hi₂) -
      Measure.toSignedMeasure (toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃) =
    s
[PROOFSTEP]
ext k hk
[GOAL]
case intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hμ : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hν : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
k : Set α
hk : MeasurableSet k
⊢ ↑(Measure.toSignedMeasure (toMeasureOfZeroLE s i hi₁ hi₂) -
          Measure.toSignedMeasure (toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃))
      k =
    ↑s k
[PROOFSTEP]
rw [toSignedMeasure_sub_apply hk, toMeasureOfZeroLE_apply _ hi₂ hi₁ hk, toMeasureOfLEZero_apply _ hi₃ hi₁.compl hk]
[GOAL]
case intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hμ : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hν : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
k : Set α
hk : MeasurableSet k
⊢ ENNReal.toReal ↑{ val := ↑s (i ∩ k), property := (_ : 0 ≤ ↑s (i ∩ k)) } -
      ENNReal.toReal ↑{ val := -↑s (iᶜ ∩ k), property := (_ : 0 ≤ -↑s (iᶜ ∩ k)) } =
    ↑s k
[PROOFSTEP]
simp only [ENNReal.coe_toReal, NNReal.coe_mk, ENNReal.some_eq_coe, sub_neg_eq_add]
[GOAL]
case intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hμ : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hν : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
k : Set α
hk : MeasurableSet k
⊢ ↑s (i ∩ k) + ↑s (iᶜ ∩ k) = ↑s k
[PROOFSTEP]
rw [← of_union _ (MeasurableSet.inter hi₁ hk) (MeasurableSet.inter hi₁.compl hk), Set.inter_comm i, Set.inter_comm iᶜ,
  Set.inter_union_compl _ _]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hμ : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hν : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
k : Set α
hk : MeasurableSet k
⊢ Disjoint (i ∩ k) (iᶜ ∩ k)
[PROOFSTEP]
exact (disjoint_compl_right.inf_left _).inf_right _
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
⊢ ↑s v = 0
[PROOFSTEP]
have : s v + s (w \ v) = 0 := by
  rw [← hw₁, ← of_union Set.disjoint_sdiff_right hv (hw.diff hv), Set.union_diff_self,
    Set.union_eq_self_of_subset_left hwt]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
⊢ ↑s v + ↑s (w \ v) = 0
[PROOFSTEP]
rw [← hw₁, ← of_union Set.disjoint_sdiff_right hv (hw.diff hv), Set.union_diff_self,
  Set.union_eq_self_of_subset_left hwt]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s v + ↑s (w \ v) = 0
⊢ ↑s v = 0
[PROOFSTEP]
have h₁ := nonneg_of_zero_le_restrict _ (restrict_le_restrict_subset _ _ hu hsu (hwt.trans hw₂))
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s v + ↑s (w \ v) = 0
h₁ : 0 ≤ ↑s v
⊢ ↑s v = 0
[PROOFSTEP]
have h₂ := nonneg_of_zero_le_restrict _ (restrict_le_restrict_subset _ _ hu hsu ((w.diff_subset v).trans hw₂))
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s v + ↑s (w \ v) = 0
h₁ : 0 ≤ ↑s v
h₂ : 0 ≤ ↑s (w \ v)
⊢ ↑s v = 0
[PROOFSTEP]
linarith
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict s u ≤ VectorMeasure.restrict 0 u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
⊢ ↑s v = 0
[PROOFSTEP]
rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
⊢ ↑s v = 0
[PROOFSTEP]
have := subset_positive_null_set hu hv hw hsu
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑(-s) w = 0 → w ⊆ u → v ⊆ w → ↑(-s) v = 0
⊢ ↑s v = 0
[PROOFSTEP]
simp only [Pi.neg_apply, neg_eq_zero, coe_neg] at this 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s w = 0 → w ⊆ u → v ⊆ w → ↑s v = 0
⊢ ↑s v = 0
[PROOFSTEP]
exact this hw₁ hw₂ hwt
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
[PROOFSTEP]
rw [restrict_le_restrict_iff] at hsu hsv 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u ∆ v) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
have a := hsu (hu.diff hv) (u.diff_subset v)
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u ∆ v) = 0
a : ↑0 (u \ v) ≤ ↑s (u \ v)
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
have b := hsv (hv.diff hu) (v.diff_subset u)
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u ∆ v) = 0
a : ↑0 (u \ v) ≤ ↑s (u \ v)
b : ↑0 (v \ u) ≤ ↑s (v \ u)
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
erw [of_union (Set.disjoint_of_subset_left (u.diff_subset v) disjoint_sdiff_self_right) (hu.diff hv) (hv.diff hu)] at hs 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : ↑0 (u \ v) ≤ ↑s (u \ v)
b : ↑0 (v \ u) ≤ ↑s (v \ u)
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
rw [zero_apply] at a b 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
constructor
[GOAL]
case left
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (u \ v) = 0
case right
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (v \ u) = 0
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
all_goals
  first
  | linarith
  | infer_instance
  | assumption
[GOAL]
case left
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (u \ v) = 0
[PROOFSTEP]
first
| linarith
| infer_instance
| assumption
[GOAL]
case left
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (u \ v) = 0
[PROOFSTEP]
linarith
[GOAL]
case right
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (v \ u) = 0
[PROOFSTEP]
first
| linarith
| infer_instance
| assumption
[GOAL]
case right
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ v → ↑0 j ≤ ↑s j
hs : ↑s (u \ v) + ↑s (v \ u) = 0
a : 0 ≤ ↑s (u \ v)
b : 0 ≤ ↑s (v \ u)
⊢ ↑s (v \ u) = 0
[PROOFSTEP]
linarith
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
[PROOFSTEP]
first
| linarith
| infer_instance
| assumption
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
[PROOFSTEP]
linarith
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
[PROOFSTEP]
infer_instance
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : ∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ u → ↑0 j ≤ ↑s j
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet v
[PROOFSTEP]
assumption
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
first
| linarith
| infer_instance
| assumption
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
linarith
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
infer_instance
[GOAL]
case hi
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ MeasurableSet u
[PROOFSTEP]
assumption
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict s u ≤ VectorMeasure.restrict 0 u
hsv : VectorMeasure.restrict s v ≤ VectorMeasure.restrict 0 v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
[PROOFSTEP]
rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict s v ≤ VectorMeasure.restrict 0 v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
[PROOFSTEP]
rw [← s.neg_le_neg_iff _ hv, neg_zero] at hsv 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict (-s) v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
[PROOFSTEP]
have := of_diff_eq_zero_of_symmDiff_eq_zero_positive hu hv hsu hsv
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict (-s) v
hs : ↑s (u ∆ v) = 0
this : ↑(-s) (u ∆ v) = 0 → ↑(-s) (u \ v) = 0 ∧ ↑(-s) (v \ u) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
[PROOFSTEP]
simp only [Pi.neg_apply, neg_eq_zero, coe_neg] at this 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict (-s) v
hs : ↑s (u ∆ v) = 0
this : ↑s (u ∆ v) = 0 → ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
⊢ ↑s (u \ v) = 0 ∧ ↑s (v \ u) = 0
[PROOFSTEP]
exact this hs
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
have hwuv : s ((w ∩ u) ∆ (w ∩ v)) = 0 :=
  by
  refine'
    subset_positive_null_set (hu.union hv) ((hw.inter hu).symmDiff (hw.inter hv)) (hu.symmDiff hv)
      (restrict_le_restrict_union _ _ hu hsu hv hsv) hs Set.symmDiff_subset_union _
  rw [← Set.inter_symmDiff_distrib_left]
  exact Set.inter_subset_right _ _
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ ↑s ((w ∩ u) ∆ (w ∩ v)) = 0
[PROOFSTEP]
refine'
  subset_positive_null_set (hu.union hv) ((hw.inter hu).symmDiff (hw.inter hv)) (hu.symmDiff hv)
    (restrict_le_restrict_union _ _ hu hsu hv hsv) hs Set.symmDiff_subset_union _
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ (w ∩ u) ∆ (w ∩ v) ⊆ u ∆ v
[PROOFSTEP]
rw [← Set.inter_symmDiff_distrib_left]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
⊢ w ∩ u ∆ v ⊆ u ∆ v
[PROOFSTEP]
exact Set.inter_subset_right _ _
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
hwuv : ↑s ((w ∩ u) ∆ (w ∩ v)) = 0
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
obtain ⟨huv, hvu⟩ :=
  of_diff_eq_zero_of_symmDiff_eq_zero_positive (hw.inter hu) (hw.inter hv)
    (restrict_le_restrict_subset _ _ hu hsu (w.inter_subset_right u))
    (restrict_le_restrict_subset _ _ hv hsv (w.inter_subset_right v)) hwuv
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict s v
hs : ↑s (u ∆ v) = 0
hwuv : ↑s ((w ∩ u) ∆ (w ∩ v)) = 0
huv : ↑s ((w ∩ u) \ (w ∩ v)) = 0
hvu : ↑s ((w ∩ v) \ (w ∩ u)) = 0
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
rw [← of_diff_of_diff_eq_zero (hw.inter hu) (hw.inter hv) hvu, huv, zero_add]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict s u ≤ VectorMeasure.restrict 0 u
hsv : VectorMeasure.restrict s v ≤ VectorMeasure.restrict 0 v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict s v ≤ VectorMeasure.restrict 0 v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
rw [← s.neg_le_neg_iff _ hv, neg_zero] at hsv 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict (-s) v
hs : ↑s (u ∆ v) = 0
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
have := of_inter_eq_of_symmDiff_eq_zero_positive hu hv hw hsu hsv
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict (-s) v
hs : ↑s (u ∆ v) = 0
this : ↑(-s) (u ∆ v) = 0 → ↑(-s) (w ∩ u) = ↑(-s) (w ∩ v)
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
simp only [Pi.neg_apply, neg_inj, neg_eq_zero, coe_neg] at this 
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict (-s) u
hsv : VectorMeasure.restrict 0 v ≤ VectorMeasure.restrict (-s) v
hs : ↑s (u ∆ v) = 0
this : ↑s (u ∆ v) = 0 → ↑s (w ∩ u) = ↑s (w ∩ v)
⊢ ↑s (w ∩ u) = ↑s (w ∩ v)
[PROOFSTEP]
exact this hs
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : toSignedMeasure j₁ = toSignedMeasure j₂
⊢ j₁ = j₂
[PROOFSTEP]
ext1
[GOAL]
case posPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : toSignedMeasure j₁ = toSignedMeasure j₂
⊢ j₁.posPart = j₂.posPart
[PROOFSTEP]
exact hj
[GOAL]
case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : toSignedMeasure j₁ = toSignedMeasure j₂
⊢ j₁.negPart = j₂.negPart
[PROOFSTEP]
rw [← toSignedMeasure_eq_toSignedMeasure_iff]
  -- Porting note: golfed
[GOAL]
case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : toSignedMeasure j₁ = toSignedMeasure j₂
⊢ Measure.toSignedMeasure j₁.negPart = Measure.toSignedMeasure j₂.negPart
[PROOFSTEP]
unfold toSignedMeasure at hj' 
[GOAL]
case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' :
  Measure.toSignedMeasure j₁.posPart - Measure.toSignedMeasure j₁.negPart =
    Measure.toSignedMeasure j₂.posPart - Measure.toSignedMeasure j₂.negPart
⊢ Measure.toSignedMeasure j₁.negPart = Measure.toSignedMeasure j₂.negPart
[PROOFSTEP]
simp_rw [hj, sub_right_inj] at hj' 
[GOAL]
case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : Measure.toSignedMeasure j₁.negPart = Measure.toSignedMeasure j₂.negPart
⊢ Measure.toSignedMeasure j₁.negPart = Measure.toSignedMeasure j₂.negPart
[PROOFSTEP]
exact hj'
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
⊢ Injective toSignedMeasure
[PROOFSTEP]
intro j₁ j₂ hj
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
⊢ j₁ = j₂
[PROOFSTEP]
obtain ⟨S, hS₁, hS₂, hS₃, hS₄, hS₅⟩ := j₁.exists_compl_positive_negative
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
⊢ j₁ = j₂
[PROOFSTEP]
obtain ⟨T, hT₁, hT₂, hT₃, hT₄, hT₅⟩ := j₂.exists_compl_positive_negative
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₂) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₂) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
⊢ j₁ = j₂
[PROOFSTEP]
rw [← hj] at hT₂ hT₃ 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
⊢ j₁ = j₂
[PROOFSTEP]
obtain ⟨hST₁, -⟩ :=
  of_symmDiff_compl_positive_negative hS₁.compl hT₁.compl ⟨hS₃, (compl_compl S).symm ▸ hS₂⟩
    ⟨hT₃, (compl_compl T).symm ▸ hT₂⟩
      -- it suffices to show the Jordan decompositions have the same positive parts
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
⊢ j₁ = j₂
[PROOFSTEP]
refine' eq_of_posPart_eq_posPart _ hj
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
⊢ j₁.posPart = j₂.posPart
[PROOFSTEP]
ext1 i hi
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ ↑↑j₁.posPart i = ↑↑j₂.posPart i
[PROOFSTEP]
have hμ₁ : (j₁.posPart i).toReal = j₁.toSignedMeasure (i ∩ Sᶜ) :=
  by
  rw [toSignedMeasure, toSignedMeasure_sub_apply (hi.inter hS₁.compl),
    show j₁.negPart (i ∩ Sᶜ) = 0 from nonpos_iff_eq_zero.1 (hS₅ ▸ measure_mono (Set.inter_subset_right _ _)),
    ENNReal.zero_toReal, sub_zero]
  conv_lhs => rw [← Set.inter_union_compl i S]
  rw [measure_union,
    show j₁.posPart (i ∩ S) = 0 from nonpos_iff_eq_zero.1 (hS₄ ▸ measure_mono (Set.inter_subset_right _ _)), zero_add]
  ·
    refine'
      Set.disjoint_of_subset_left (Set.inter_subset_right _ _)
        (Set.disjoint_of_subset_right (Set.inter_subset_right _ _) disjoint_compl_right)
  · exact hi.inter hS₁.compl
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
[PROOFSTEP]
rw [toSignedMeasure, toSignedMeasure_sub_apply (hi.inter hS₁.compl),
  show j₁.negPart (i ∩ Sᶜ) = 0 from nonpos_iff_eq_zero.1 (hS₅ ▸ measure_mono (Set.inter_subset_right _ _)),
  ENNReal.zero_toReal, sub_zero]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ ENNReal.toReal (↑↑j₁.posPart i) = ENNReal.toReal (↑↑j₁.posPart (i ∩ Sᶜ))
[PROOFSTEP]
conv_lhs => rw [← Set.inter_union_compl i S]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
| ENNReal.toReal (↑↑j₁.posPart i)
[PROOFSTEP]
rw [← Set.inter_union_compl i S]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
| ENNReal.toReal (↑↑j₁.posPart i)
[PROOFSTEP]
rw [← Set.inter_union_compl i S]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
| ENNReal.toReal (↑↑j₁.posPart i)
[PROOFSTEP]
rw [← Set.inter_union_compl i S]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ ENNReal.toReal (↑↑j₁.posPart (i ∩ S ∪ i ∩ Sᶜ)) = ENNReal.toReal (↑↑j₁.posPart (i ∩ Sᶜ))
[PROOFSTEP]
rw [measure_union,
  show j₁.posPart (i ∩ S) = 0 from nonpos_iff_eq_zero.1 (hS₄ ▸ measure_mono (Set.inter_subset_right _ _)), zero_add]
[GOAL]
case hd
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ Disjoint (i ∩ S) (i ∩ Sᶜ)
[PROOFSTEP]
refine'
  Set.disjoint_of_subset_left (Set.inter_subset_right _ _)
    (Set.disjoint_of_subset_right (Set.inter_subset_right _ _) disjoint_compl_right)
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ MeasurableSet (i ∩ Sᶜ)
[PROOFSTEP]
exact hi.inter hS₁.compl
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
⊢ ↑↑j₁.posPart i = ↑↑j₂.posPart i
[PROOFSTEP]
have hμ₂ : (j₂.posPart i).toReal = j₂.toSignedMeasure (i ∩ Tᶜ) :=
  by
  rw [toSignedMeasure, toSignedMeasure_sub_apply (hi.inter hT₁.compl),
    show j₂.negPart (i ∩ Tᶜ) = 0 from nonpos_iff_eq_zero.1 (hT₅ ▸ measure_mono (Set.inter_subset_right _ _)),
    ENNReal.zero_toReal, sub_zero]
  conv_lhs => rw [← Set.inter_union_compl i T]
  rw [measure_union,
    show j₂.posPart (i ∩ T) = 0 from nonpos_iff_eq_zero.1 (hT₄ ▸ measure_mono (Set.inter_subset_right _ _)), zero_add]
  ·
    exact
      Set.disjoint_of_subset_left (Set.inter_subset_right _ _)
        (Set.disjoint_of_subset_right (Set.inter_subset_right _ _) disjoint_compl_right)
  · exact hi.inter hT₁.compl
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
⊢ ENNReal.toReal (↑↑j₂.posPart i) = ↑(toSignedMeasure j₂) (i ∩ Tᶜ)
[PROOFSTEP]
rw [toSignedMeasure, toSignedMeasure_sub_apply (hi.inter hT₁.compl),
  show j₂.negPart (i ∩ Tᶜ) = 0 from nonpos_iff_eq_zero.1 (hT₅ ▸ measure_mono (Set.inter_subset_right _ _)),
  ENNReal.zero_toReal, sub_zero]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
⊢ ENNReal.toReal (↑↑j₂.posPart i) = ENNReal.toReal (↑↑j₂.posPart (i ∩ Tᶜ))
[PROOFSTEP]
conv_lhs => rw [← Set.inter_union_compl i T]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
| ENNReal.toReal (↑↑j₂.posPart i)
[PROOFSTEP]
rw [← Set.inter_union_compl i T]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
| ENNReal.toReal (↑↑j₂.posPart i)
[PROOFSTEP]
rw [← Set.inter_union_compl i T]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
| ENNReal.toReal (↑↑j₂.posPart i)
[PROOFSTEP]
rw [← Set.inter_union_compl i T]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
⊢ ENNReal.toReal (↑↑j₂.posPart (i ∩ T ∪ i ∩ Tᶜ)) = ENNReal.toReal (↑↑j₂.posPart (i ∩ Tᶜ))
[PROOFSTEP]
rw [measure_union,
  show j₂.posPart (i ∩ T) = 0 from nonpos_iff_eq_zero.1 (hT₄ ▸ measure_mono (Set.inter_subset_right _ _)), zero_add]
[GOAL]
case hd
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
⊢ Disjoint (i ∩ T) (i ∩ Tᶜ)
[PROOFSTEP]
exact
  Set.disjoint_of_subset_left (Set.inter_subset_right _ _)
    (Set.disjoint_of_subset_right (Set.inter_subset_right _ _) disjoint_compl_right)
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
⊢ MeasurableSet (i ∩ Tᶜ)
[PROOFSTEP]
exact hi.inter hT₁.compl
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
hμ₂ : ENNReal.toReal (↑↑j₂.posPart i) = ↑(toSignedMeasure j₂) (i ∩ Tᶜ)
⊢ ↑↑j₁.posPart i = ↑↑j₂.posPart i
[PROOFSTEP]
rw [← ENNReal.toReal_eq_toReal (measure_ne_top _ _) (measure_ne_top _ _), hμ₁, hμ₂, ← hj]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : toSignedMeasure j₁ = toSignedMeasure j₂
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict (toSignedMeasure j₁) S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Sᶜ
hS₄ : ↑↑j₁.posPart S = 0
hS₅ : ↑↑j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict (toSignedMeasure j₁) T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict (toSignedMeasure j₁) Tᶜ
hT₄ : ↑↑j₂.posPart T = 0
hT₅ : ↑↑j₂.negPart Tᶜ = 0
hST₁ : ↑(toSignedMeasure j₁) (Sᶜ ∆ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : ENNReal.toReal (↑↑j₁.posPart i) = ↑(toSignedMeasure j₁) (i ∩ Sᶜ)
hμ₂ : ENNReal.toReal (↑↑j₂.posPart i) = ↑(toSignedMeasure j₂) (i ∩ Tᶜ)
⊢ ↑(toSignedMeasure j₁) (i ∩ Sᶜ) = ↑(toSignedMeasure j₁) (i ∩ Tᶜ)
[PROOFSTEP]
exact of_inter_eq_of_symmDiff_eq_zero_positive hS₁.compl hT₁.compl hi hS₃ hT₃ hST₁
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ toSignedMeasure j = toSignedMeasure (toJordanDecomposition (toSignedMeasure j))
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
⊢ toJordanDecomposition 0 = 0
[PROOFSTEP]
apply toSignedMeasure_injective
[GOAL]
case a
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
⊢ toSignedMeasure (toJordanDecomposition 0) = toSignedMeasure 0
[PROOFSTEP]
simp [toSignedMeasure_zero]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
⊢ toJordanDecomposition (-s) = -toJordanDecomposition s
[PROOFSTEP]
apply toSignedMeasure_injective
[GOAL]
case a
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
⊢ toSignedMeasure (toJordanDecomposition (-s)) = toSignedMeasure (-toJordanDecomposition s)
[PROOFSTEP]
simp [toSignedMeasure_neg]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ toJordanDecomposition (r • s) = r • toJordanDecomposition s
[PROOFSTEP]
apply toSignedMeasure_injective
[GOAL]
case a
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ toSignedMeasure (toJordanDecomposition (r • s)) = toSignedMeasure (r • toJordanDecomposition s)
[PROOFSTEP]
simp [toSignedMeasure_smul]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : 0 ≤ r
⊢ toJordanDecomposition (r • s) = r • toJordanDecomposition s
[PROOFSTEP]
lift r to ℝ≥0 using hr
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ toJordanDecomposition (↑r • s) = ↑r • toJordanDecomposition s
[PROOFSTEP]
rw [JordanDecomposition.coe_smul, ← toJordanDecomposition_smul]
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ toJordanDecomposition (↑r • s) = toJordanDecomposition (r • s)
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
⊢ toJordanDecomposition (r • s) = r • toJordanDecomposition s
[PROOFSTEP]
by_cases hr : 0 ≤ r
[GOAL]
case pos
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : 0 ≤ r
⊢ toJordanDecomposition (r • s) = r • toJordanDecomposition s
[PROOFSTEP]
exact toJordanDecomposition_smul_real_nonneg s r hr
[GOAL]
case neg
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ toJordanDecomposition (r • s) = r • toJordanDecomposition s
[PROOFSTEP]
ext1
[GOAL]
case neg.posPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ (toJordanDecomposition (r • s)).posPart = (r • toJordanDecomposition s).posPart
[PROOFSTEP]
rw [real_smul_posPart_neg _ _ (not_le.1 hr), show r • s = -(-r • s) by rw [neg_smul, neg_neg],
  toJordanDecomposition_neg, neg_posPart, toJordanDecomposition_smul_real_nonneg, ← smul_negPart, real_smul_nonneg]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ r • s = -(-r • s)
[PROOFSTEP]
rw [neg_smul, neg_neg]
[GOAL]
case neg.posPart.hr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ 0 ≤ -r
case neg.posPart.hr α : Type u_1 β : Type u_2 inst✝ : MeasurableSpace α s : SignedMeasure α r : ℝ hr : ¬0 ≤ r ⊢ 0 ≤ -r
[PROOFSTEP]
all_goals exact Left.nonneg_neg_iff.2 (le_of_lt (not_le.1 hr))
[GOAL]
case neg.posPart.hr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ 0 ≤ -r
[PROOFSTEP]
exact Left.nonneg_neg_iff.2 (le_of_lt (not_le.1 hr))
[GOAL]
case neg.posPart.hr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ 0 ≤ -r
[PROOFSTEP]
exact Left.nonneg_neg_iff.2 (le_of_lt (not_le.1 hr))
[GOAL]
case neg.negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ (toJordanDecomposition (r • s)).negPart = (r • toJordanDecomposition s).negPart
[PROOFSTEP]
rw [real_smul_negPart_neg _ _ (not_le.1 hr), show r • s = -(-r • s) by rw [neg_smul, neg_neg],
  toJordanDecomposition_neg, neg_negPart, toJordanDecomposition_smul_real_nonneg, ← smul_posPart, real_smul_nonneg]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ r • s = -(-r • s)
[PROOFSTEP]
rw [neg_smul, neg_neg]
[GOAL]
case neg.negPart.hr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ 0 ≤ -r
case neg.negPart.hr α : Type u_1 β : Type u_2 inst✝ : MeasurableSpace α s : SignedMeasure α r : ℝ hr : ¬0 ≤ r ⊢ 0 ≤ -r
[PROOFSTEP]
all_goals exact Left.nonneg_neg_iff.2 (le_of_lt (not_le.1 hr))
[GOAL]
case neg.negPart.hr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ 0 ≤ -r
[PROOFSTEP]
exact Left.nonneg_neg_iff.2 (le_of_lt (not_le.1 hr))
[GOAL]
case neg.negPart.hr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ 0 ≤ -r
[PROOFSTEP]
exact Left.nonneg_neg_iff.2 (le_of_lt (not_le.1 hr))
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
j : JordanDecomposition α
h : s = toSignedMeasure j
⊢ toJordanDecomposition s = j
[PROOFSTEP]
rw [h, toJordanDecomposition_toSignedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
⊢ totalVariation 0 = 0
[PROOFSTEP]
simp [totalVariation, toJordanDecomposition_zero]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
⊢ totalVariation (-s) = totalVariation s
[PROOFSTEP]
simp [totalVariation, toJordanDecomposition_neg, add_comm]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
i : Set α
hs : ↑↑(totalVariation s) i = 0
⊢ ↑s i = 0
[PROOFSTEP]
rw [totalVariation, Measure.coe_add, Pi.add_apply, add_eq_zero_iff] at hs 
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
i : Set α
hs : ↑↑(toJordanDecomposition s).posPart i = 0 ∧ ↑↑(toJordanDecomposition s).negPart i = 0
⊢ ↑s i = 0
[PROOFSTEP]
rw [← toSignedMeasure_toJordanDecomposition s, toSignedMeasure, VectorMeasure.coe_sub, Pi.sub_apply,
  Measure.toSignedMeasure_apply, Measure.toSignedMeasure_apply]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
i : Set α
hs : ↑↑(toJordanDecomposition s).posPart i = 0 ∧ ↑↑(toJordanDecomposition s).negPart i = 0
⊢ ((if MeasurableSet i then ENNReal.toReal (↑↑(toJordanDecomposition s).posPart i) else 0) -
      if MeasurableSet i then ENNReal.toReal (↑↑(toJordanDecomposition s).negPart i) else 0) =
    0
[PROOFSTEP]
by_cases hi : MeasurableSet i
[GOAL]
case pos
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
i : Set α
hs : ↑↑(toJordanDecomposition s).posPart i = 0 ∧ ↑↑(toJordanDecomposition s).negPart i = 0
hi : MeasurableSet i
⊢ ((if MeasurableSet i then ENNReal.toReal (↑↑(toJordanDecomposition s).posPart i) else 0) -
      if MeasurableSet i then ENNReal.toReal (↑↑(toJordanDecomposition s).negPart i) else 0) =
    0
[PROOFSTEP]
rw [if_pos hi, if_pos hi]
[GOAL]
case pos
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
i : Set α
hs : ↑↑(toJordanDecomposition s).posPart i = 0 ∧ ↑↑(toJordanDecomposition s).negPart i = 0
hi : MeasurableSet i
⊢ ENNReal.toReal (↑↑(toJordanDecomposition s).posPart i) - ENNReal.toReal (↑↑(toJordanDecomposition s).negPart i) = 0
[PROOFSTEP]
simp [hs.1, hs.2]
[GOAL]
case neg
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
i : Set α
hs : ↑↑(toJordanDecomposition s).posPart i = 0 ∧ ↑↑(toJordanDecomposition s).negPart i = 0
hi : ¬MeasurableSet i
⊢ ((if MeasurableSet i then ENNReal.toReal (↑↑(toJordanDecomposition s).posPart i) else 0) -
      if MeasurableSet i then ENNReal.toReal (↑↑(toJordanDecomposition s).negPart i) else 0) =
    0
[PROOFSTEP]
simp [if_neg hi]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
⊢ s ≪ᵥ μ ↔ totalVariation s ≪ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
⊢ s ≪ᵥ μ → totalVariation s ≪ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
intro h
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
⊢ totalVariation s ≪ VectorMeasure.ennrealToMeasure μ → s ≪ᵥ μ
[PROOFSTEP]
intro h
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : s ≪ᵥ μ
⊢ totalVariation s ≪ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
refine' Measure.AbsolutelyContinuous.mk fun S hS₁ hS₂ => _
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : s ≪ᵥ μ
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) S = 0
⊢ ↑↑(totalVariation s) S = 0
[PROOFSTEP]
obtain ⟨i, hi₁, hi₂, hi₃, hpos, hneg⟩ := s.toJordanDecomposition_spec
[GOAL]
case mp.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : s ≪ᵥ μ
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) S = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑↑(totalVariation s) S = 0
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, hpos, hneg, toMeasureOfZeroLE_apply _ _ _ hS₁, toMeasureOfLEZero_apply _ _ _ hS₁]
[GOAL]
case mp.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : s ≪ᵥ μ
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) S = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑{ val := ↑s (i ∩ S), property := (_ : 0 ≤ ↑s (i ∩ S)) } +
      ↑{ val := -↑s (iᶜ ∩ S), property := (_ : 0 ≤ -↑s (iᶜ ∩ S)) } =
    0
[PROOFSTEP]
rw [← VectorMeasure.AbsolutelyContinuous.ennrealToMeasure] at h 
[GOAL]
case mp.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : ∀ ⦃s_1 : Set α⦄, ↑↑(VectorMeasure.ennrealToMeasure μ) s_1 = 0 → ↑s s_1 = 0
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) S = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑{ val := ↑s (i ∩ S), property := (_ : 0 ≤ ↑s (i ∩ S)) } +
      ↑{ val := -↑s (iᶜ ∩ S), property := (_ : 0 ≤ -↑s (iᶜ ∩ S)) } =
    0
[PROOFSTEP]
simp [h (measure_mono_null (i.inter_subset_right S) hS₂), h (measure_mono_null (iᶜ.inter_subset_right S) hS₂), ←
  NNReal.eq_iff]
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : totalVariation s ≪ VectorMeasure.ennrealToMeasure μ
⊢ s ≪ᵥ μ
[PROOFSTEP]
refine' VectorMeasure.AbsolutelyContinuous.mk fun S hS₁ hS₂ => _
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : totalVariation s ≪ VectorMeasure.ennrealToMeasure μ
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑μ S = 0
⊢ ↑s S = 0
[PROOFSTEP]
rw [← VectorMeasure.ennrealToMeasure_apply hS₁] at hS₂ 
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
h : totalVariation s ≪ VectorMeasure.ennrealToMeasure μ
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) S = 0
⊢ ↑s S = 0
[PROOFSTEP]
exact null_of_totalVariation_zero s (h hS₂)
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
⊢ totalVariation s ≪ μ ↔ (toJordanDecomposition s).posPart ≪ μ ∧ (toJordanDecomposition s).negPart ≪ μ
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
⊢ totalVariation s ≪ μ → (toJordanDecomposition s).posPart ≪ μ ∧ (toJordanDecomposition s).negPart ≪ μ
[PROOFSTEP]
intro h
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
⊢ (toJordanDecomposition s).posPart ≪ μ ∧ (toJordanDecomposition s).negPart ≪ μ → totalVariation s ≪ μ
[PROOFSTEP]
intro h
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
⊢ (toJordanDecomposition s).posPart ≪ μ ∧ (toJordanDecomposition s).negPart ≪ μ
[PROOFSTEP]
constructor
[GOAL]
case mp.left
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
⊢ (toJordanDecomposition s).posPart ≪ μ
case mp.right
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
⊢ (toJordanDecomposition s).negPart ≪ μ
[PROOFSTEP]
all_goals
  refine' Measure.AbsolutelyContinuous.mk fun S _ hS₂ => _
  have := h hS₂
  rw [totalVariation, Measure.add_apply, add_eq_zero_iff] at this 
[GOAL]
case mp.left
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
⊢ (toJordanDecomposition s).posPart ≪ μ
[PROOFSTEP]
refine' Measure.AbsolutelyContinuous.mk fun S _ hS₂ => _
[GOAL]
case mp.left
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
⊢ ↑↑(toJordanDecomposition s).posPart S = 0
[PROOFSTEP]
have := h hS₂
[GOAL]
case mp.left
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
this : ↑↑(totalVariation s) S = 0
⊢ ↑↑(toJordanDecomposition s).posPart S = 0
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, add_eq_zero_iff] at this 
[GOAL]
case mp.right
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
⊢ (toJordanDecomposition s).negPart ≪ μ
[PROOFSTEP]
refine' Measure.AbsolutelyContinuous.mk fun S _ hS₂ => _
[GOAL]
case mp.right
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
⊢ ↑↑(toJordanDecomposition s).negPart S = 0
[PROOFSTEP]
have := h hS₂
[GOAL]
case mp.right
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
this : ↑↑(totalVariation s) S = 0
⊢ ↑↑(toJordanDecomposition s).negPart S = 0
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, add_eq_zero_iff] at this 
[GOAL]
case mp.left
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
this : ↑↑(toJordanDecomposition s).posPart S = 0 ∧ ↑↑(toJordanDecomposition s).negPart S = 0
⊢ ↑↑(toJordanDecomposition s).posPart S = 0
case mp.right
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : totalVariation s ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
this : ↑↑(toJordanDecomposition s).posPart S = 0 ∧ ↑↑(toJordanDecomposition s).negPart S = 0
⊢ ↑↑(toJordanDecomposition s).negPart S = 0
[PROOFSTEP]
exacts [this.1, this.2]
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : (toJordanDecomposition s).posPart ≪ μ ∧ (toJordanDecomposition s).negPart ≪ μ
⊢ totalVariation s ≪ μ
[PROOFSTEP]
refine' Measure.AbsolutelyContinuous.mk fun S _ hS₂ => _
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : Measure α
h : (toJordanDecomposition s).posPart ≪ μ ∧ (toJordanDecomposition s).negPart ≪ μ
S : Set α
x✝ : MeasurableSet S
hS₂ : ↑↑μ S = 0
⊢ ↑↑(totalVariation s) S = 0
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, h.1 hS₂, h.2 hS₂, add_zero]
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s t : SignedMeasure α
⊢ s ⟂ᵥ t ↔ totalVariation s ⟂ₘ totalVariation t
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s t : SignedMeasure α
⊢ s ⟂ᵥ t → totalVariation s ⟂ₘ totalVariation t
[PROOFSTEP]
rintro ⟨u, hmeas, hu₁, hu₂⟩
[GOAL]
case mp.intro.intro.intro
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
obtain ⟨i, hi₁, hi₂, hi₃, hipos, hineg⟩ := s.toJordanDecomposition_spec
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
obtain ⟨j, hj₁, hj₂, hj₃, hjpos, hjneg⟩ := t.toJordanDecomposition_spec
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
refine' ⟨u, hmeas, _, _⟩
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, hipos, hineg, toMeasureOfZeroLE_apply _ _ _ hmeas,
  toMeasureOfLEZero_apply _ _ _ hmeas]
  -- Porting note: added `← NNReal.eq_iff`
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
simp [hu₁ _ (Set.inter_subset_right _ _), ← NNReal.eq_iff]
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, hjpos, hjneg, toMeasureOfZeroLE_apply _ _ _ hmeas.compl,
  toMeasureOfLEZero_apply _ _ _ hmeas.compl]
  -- Porting note: added `← NNReal.eq_iff`
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
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
[PROOFSTEP]
simp [hu₂ _ (Set.inter_subset_right _ _), ← NNReal.eq_iff]
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s t : SignedMeasure α
⊢ totalVariation s ⟂ₘ totalVariation t → s ⟂ᵥ t
[PROOFSTEP]
rintro ⟨u, hmeas, hu₁, hu₂⟩
[GOAL]
case mpr.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s t : SignedMeasure α
u : Set α
hmeas : MeasurableSet u
hu₁ : ↑↑(totalVariation s) u = 0
hu₂ : ↑↑(totalVariation t) uᶜ = 0
⊢ s ⟂ᵥ t
[PROOFSTEP]
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₂)⟩
[GOAL]
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
⊢ s ⟂ᵥ μ ↔ totalVariation s ⟂ₘ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
⊢ s ⟂ᵥ μ → totalVariation s ⟂ₘ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
rintro ⟨u, hmeas, hu₁, hu₂⟩
[GOAL]
case mp.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t : Set α), t ⊆ uᶜ → ↑μ t = 0
⊢ totalVariation s ⟂ₘ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
obtain ⟨i, hi₁, hi₂, hi₃, hpos, hneg⟩ := s.toJordanDecomposition_spec
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t : Set α), t ⊆ uᶜ → ↑μ t = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ totalVariation s ⟂ₘ VectorMeasure.ennrealToMeasure μ
[PROOFSTEP]
refine' ⟨u, hmeas, _, _⟩
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t : Set α), t ⊆ uᶜ → ↑μ t = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑↑(totalVariation s) u = 0
[PROOFSTEP]
rw [totalVariation, Measure.add_apply, hpos, hneg, toMeasureOfZeroLE_apply _ _ _ hmeas,
  toMeasureOfLEZero_apply _ _ _ hmeas]
  -- Porting note: added `← NNReal.eq_iff`
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t : Set α), t ⊆ uᶜ → ↑μ t = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑{ val := ↑s (i ∩ u), property := (_ : 0 ≤ ↑s (i ∩ u)) } +
      ↑{ val := -↑s (iᶜ ∩ u), property := (_ : 0 ≤ -↑s (iᶜ ∩ u)) } =
    0
[PROOFSTEP]
simp [hu₁ _ (Set.inter_subset_right _ _), ← NNReal.eq_iff]
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t : Set α), t ⊆ uᶜ → ↑μ t = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑↑(VectorMeasure.ennrealToMeasure μ) uᶜ = 0
[PROOFSTEP]
rw [VectorMeasure.ennrealToMeasure_apply hmeas.compl]
[GOAL]
case mp.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ∀ (t : Set α), t ⊆ u → ↑s t = 0
hu₂ : ∀ (t : Set α), t ⊆ uᶜ → ↑μ t = 0
i : Set α
hi₁ : MeasurableSet i
hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₃ : VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ
hpos : (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂
hneg : (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃
⊢ ↑μ uᶜ = 0
[PROOFSTEP]
exact hu₂ _ (Set.Subset.refl _)
[GOAL]
case mpr
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
⊢ totalVariation s ⟂ₘ VectorMeasure.ennrealToMeasure μ → s ⟂ᵥ μ
[PROOFSTEP]
rintro ⟨u, hmeas, hu₁, hu₂⟩
[GOAL]
case mpr.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ↑↑(totalVariation s) u = 0
hu₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) uᶜ = 0
⊢ s ⟂ᵥ μ
[PROOFSTEP]
refine'
  VectorMeasure.MutuallySingular.mk u hmeas (fun t htu _ => null_of_totalVariation_zero _ (measure_mono_null htu hu₁))
    fun t htv hmt => _
[GOAL]
case mpr.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ↑↑(totalVariation s) u = 0
hu₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) uᶜ = 0
t : Set α
htv : t ⊆ uᶜ
hmt : MeasurableSet t
⊢ ↑μ t = 0
[PROOFSTEP]
rw [← VectorMeasure.ennrealToMeasure_apply hmt]
[GOAL]
case mpr.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
μ : VectorMeasure α ℝ≥0∞
u : Set α
hmeas : MeasurableSet u
hu₁ : ↑↑(totalVariation s) u = 0
hu₂ : ↑↑(VectorMeasure.ennrealToMeasure μ) uᶜ = 0
t : Set α
htv : t ⊆ uᶜ
hmt : MeasurableSet t
⊢ ↑↑(VectorMeasure.ennrealToMeasure μ) t = 0
[PROOFSTEP]
exact measure_mono_null htv hu₂
