l3lab/ntp-mathlib huggingface dataset:
theorem toJordanDecomposition_spec (s : SignedMeasure α) :
    ∃ (i : Set α) (hi₁ : MeasurableSet i) (hi₂ : 0 ≤[i] s) (hi₃ : s ≤[iᶜ] 0),
      s.toJordanDecomposition.posPart = s.toMeasureOfZeroLE i hi₁ hi₂ ∧
        s.toJordanDecomposition.negPart = s.toMeasureOfLEZero iᶜ hi₁.compl hi₃ := by
  set i := choose s.exists_compl_positive_negative
  obtain ⟨hi₁, hi₂, hi₃⟩ := choose_spec s.exists_compl_positive_negative
  

Proof state:
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₁ : MeasurableSet i) (hi₂ : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i) (hi₃ :
      VectorMeasure.restrict s iᶜ ≤ VectorMeasure.restrict 0 iᶜ),
      (toJordanDecomposition s).posPart = toMeasureOfZeroLE s i hi₁ hi₂ ∧
        (toJordanDecomposition s).negPart = toMeasureOfLEZero s iᶜ (_ : MeasurableSet iᶜ) hi₃

Next tactic:
exact ⟨i, hi₁, hi₂, hi₃, rfl, rfl⟩
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  

Proof state:
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
s✝ : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
s : SignedMeasure α
⊢ JordanDecomposition.toSignedMeasure (toJordanDecomposition s) = s

Next tactic:
obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
  

Proof state:
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

Next tactic:
simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
  simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
  

Proof state:
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

Next tactic:
ext k hk
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
  simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
  ext k hk
  

Proof state:
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

Next tactic:
rw [toSignedMeasure_sub_apply hk, toMeasureOfZeroLE_apply _ hi₂ hi₁ hk,
    toMeasureOfLEZero_apply _ hi₃ hi₁.compl hk]
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
  simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
  ext k hk
  rw [toSignedMeasure_sub_apply hk, toMeasureOfZeroLE_apply _ hi₂ hi₁ hk,
    toMeasureOfLEZero_apply _ hi₃ hi₁.compl hk]
  

Proof state:
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

Next tactic:
simp only [ENNReal.coe_toReal, NNReal.coe_mk, ENNReal.some_eq_coe, sub_neg_eq_add]
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
  simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
  ext k hk
  rw [toSignedMeasure_sub_apply hk, toMeasureOfZeroLE_apply _ hi₂ hi₁ hk,
    toMeasureOfLEZero_apply _ hi₃ hi₁.compl hk]
  simp only [ENNReal.coe_toReal, NNReal.coe_mk, ENNReal.some_eq_coe, sub_neg_eq_add]
  

Proof state:
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

Next tactic:
rw [← of_union _ (MeasurableSet.inter hi₁ hk) (MeasurableSet.inter hi₁.compl hk),
    Set.inter_comm i, Set.inter_comm iᶜ, Set.inter_union_compl _ _]
/-- **The Jordan decomposition theorem**: Given a signed measure `s`, there exists a pair of
mutually singular measures `μ` and `ν` such that `s = μ - ν`. In this case, the measures `μ`
and `ν` are given by `s.toJordanDecomposition.posPart` and
`s.toJordanDecomposition.negPart` respectively.

Note that we use `MeasureTheory.JordanDecomposition.toSignedMeasure` to represent the
signed measure corresponding to
`s.toJordanDecomposition.posPart - s.toJordanDecomposition.negPart`. -/
@[simp]
theorem toSignedMeasure_toJordanDecomposition (s : SignedMeasure α) :
    s.toJordanDecomposition.toSignedMeasure = s := by
  obtain ⟨i, hi₁, hi₂, hi₃, hμ, hν⟩ := s.toJordanDecomposition_spec
  simp only [JordanDecomposition.toSignedMeasure, hμ, hν]
  ext k hk
  rw [toSignedMeasure_sub_apply hk, toMeasureOfZeroLE_apply _ hi₂ hi₁ hk,
    toMeasureOfLEZero_apply _ hi₃ hi₁.compl hk]
  simp only [ENNReal.coe_toReal, NNReal.coe_mk, ENNReal.some_eq_coe, sub_neg_eq_add]
  rw [← of_union _ (MeasurableSet.inter hi₁ hk) (MeasurableSet.inter hi₁.compl hk),
    Set.inter_comm i, Set.inter_comm iᶜ, Set.inter_union_compl _ _]
  

Proof state:
α : 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)

Next tactic:
exact (disjoint_compl_right.inf_left _).inf_right _
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a positive set `u`. -/
theorem subset_positive_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : 0 ≤[u] s) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  

Proof state:
α : 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

Next tactic:
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]
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a positive set `u`. -/
theorem subset_positive_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : 0 ≤[u] s) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  have : s v + s (w \ v) = 0 := by
    

Proof state:
α : 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

Next tactic:
rw [← hw₁, ← of_union Set.disjoint_sdiff_right hv (hw.diff hv), Set.union_diff_self,
      Set.union_eq_self_of_subset_left hwt]
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a positive set `u`. -/
theorem subset_positive_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : 0 ≤[u] s) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  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]
  

Proof state:
α : 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

Next tactic:
have h₁ := nonneg_of_zero_le_restrict _ (restrict_le_restrict_subset _ _ hu hsu (hwt.trans hw₂))
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a positive set `u`. -/
theorem subset_positive_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : 0 ≤[u] s) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  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]
  have h₁ := nonneg_of_zero_le_restrict _ (restrict_le_restrict_subset _ _ hu hsu (hwt.trans hw₂))
  

Proof state:
α : 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

Next tactic:
have h₂ :=
    nonneg_of_zero_le_restrict _
      (restrict_le_restrict_subset _ _ hu hsu ((w.diff_subset v).trans hw₂))
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a positive set `u`. -/
theorem subset_positive_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : 0 ≤[u] s) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  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]
  have h₁ := nonneg_of_zero_le_restrict _ (restrict_le_restrict_subset _ _ hu hsu (hwt.trans hw₂))
  have h₂ :=
    nonneg_of_zero_le_restrict _
      (restrict_le_restrict_subset _ _ hu hsu ((w.diff_subset v).trans hw₂))
  

Proof state:
α : 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

Next tactic:
linarith
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a negative set `u`. -/
theorem subset_negative_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : s ≤[u] 0) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  

Proof state:
α : 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

Next tactic:
rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a negative set `u`. -/
theorem subset_negative_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : s ≤[u] 0) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu
  

Proof state:
α : 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

Next tactic:
have := subset_positive_null_set hu hv hw hsu
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a negative set `u`. -/
theorem subset_negative_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : s ≤[u] 0) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu
  have := subset_positive_null_set hu hv hw hsu
  

Proof state:
α : 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

Next tactic:
simp only [Pi.neg_apply, neg_eq_zero, coe_neg] at this
/-- A subset `v` of a null-set `w` has zero measure if `w` is a subset of a negative set `u`. -/
theorem subset_negative_null_set (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hw : MeasurableSet w) (hsu : s ≤[u] 0) (hw₁ : s w = 0) (hw₂ : w ⊆ u) (hwt : v ⊆ w) :
    s v = 0 := by
  rw [← s.neg_le_neg_iff _ hu, neg_zero] at hsu
  have := subset_positive_null_set hu hv hw hsu
  simp only [Pi.neg_apply, neg_eq_zero, coe_neg] at this
  

Proof state:
α : 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

Next tactic:
exact this hw₁ hw₂ hwt
/-- If the symmetric difference of two positive sets is a null-set, then so are the differences
between the two sets. -/
theorem of_diff_eq_zero_of_symmDiff_eq_zero_positive (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hsu : 0 ≤[u] s) (hsv : 0 ≤[v] s) (hs : s (u ∆ v) = 0) : s (u \ v) = 0 ∧ s (v \ u) = 0 := by
  

Proof state:
α : 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

Next tactic:
rw [restrict_le_restrict_iff] at hsu hsv
/-- If the symmetric difference of two positive sets is a null-set, then so are the differences
between the two sets. -/
theorem of_diff_eq_zero_of_symmDiff_eq_zero_positive (hu : MeasurableSet u) (hv : MeasurableSet v)
    (hsu : 0 ≤[u] s) (hsv : 0 ≤[v] s) (hs : s (u ∆ v) = 0) : s (u \ v) = 0 ∧ s (v \ u) = 0 := by
  rw [restrict_le_restrict_iff] at hsu hsv
  

Proof state:
α : 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

Next tactic:
have a := hsu (hu.diff hv) (u.diff_subset v)