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

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
⊢ Injective toSignedMeasure
state_after: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁ = j₂
tactic: intro j₁ j₂ hj
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁ = j₂
state_after: case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
⊢ j₁ = j₂
tactic: obtain ⟨S, hS₁, hS₂, hS₃, hS₄, hS₅⟩ := j₁.exists_compl_positive_negative
state_before: case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
⊢ j₁ = j₂
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₂.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₂.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
⊢ j₁ = j₂
tactic: obtain ⟨T, hT₁, hT₂, hT₃, hT₄, hT₅⟩ := j₂.exists_compl_positive_negative
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₂.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₂.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
⊢ j₁ = j₂
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
⊢ j₁ = j₂
tactic: rw [← hj] at hT₂ hT₃
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
⊢ j₁ = j₂
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
⊢ j₁ = j₂
tactic: obtain ⟨hST₁, -⟩ :=
    of_symmDiff_compl_positive_negative hS₁.compl hT₁.compl ⟨hS₃, (compl_compl S).symm ▸ hS₂⟩
      ⟨hT₃, (compl_compl T).symm ▸ hT₂⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
⊢ j₁ = j₂
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
⊢ j₁.posPart = j₂.posPart
tactic: refine eq_of_posPart_eq_posPart ?_ hj
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
⊢ j₁.posPart = j₂.posPart
state_after: 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 : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
⊢ j₁.posPart i = j₂.posPart i
tactic: ext1 i hi
state_before: 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 : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : (j₁.posPart i).toReal = ↑j₁.toSignedMeasure (i ∩ Sᶜ)
hμ₂ : (j₂.posPart i).toReal = ↑j₂.toSignedMeasure (i ∩ Tᶜ)
⊢ j₁.posPart i = j₂.posPart i
state_after: 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 : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : (j₁.posPart i).toReal = ↑j₁.toSignedMeasure (i ∩ Sᶜ)
hμ₂ : (j₂.posPart i).toReal = ↑j₂.toSignedMeasure (i ∩ Tᶜ)
⊢ ↑j₁.toSignedMeasure (i ∩ Sᶜ) = ↑j₁.toSignedMeasure (i ∩ Tᶜ)
tactic: rw [← ENNReal.toReal_eq_toReal (measure_ne_top _ _) (measure_ne_top _ _), hμ₁, hμ₂, ← hj]
state_before: 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 : j₁.toSignedMeasure = j₂.toSignedMeasure
S : Set α
hS₁ : MeasurableSet S
hS₂ : VectorMeasure.restrict j₁.toSignedMeasure S ≤ VectorMeasure.restrict 0 S
hS₃ : VectorMeasure.restrict 0 Sᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Sᶜ
hS₄ : j₁.posPart S = 0
hS₅ : j₁.negPart Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : VectorMeasure.restrict j₁.toSignedMeasure T ≤ VectorMeasure.restrict 0 T
hT₃ : VectorMeasure.restrict 0 Tᶜ ≤ VectorMeasure.restrict j₁.toSignedMeasure Tᶜ
hT₄ : j₂.posPart T = 0
hT₅ : j₂.negPart Tᶜ = 0
hST₁ : ↑j₁.toSignedMeasure (symmDiff Sᶜ Tᶜ) = 0
i : Set α
hi : MeasurableSet i
hμ₁ : (j₁.posPart i).toReal = ↑j₁.toSignedMeasure (i ∩ Sᶜ)
hμ₂ : (j₂.posPart i).toReal = ↑j₂.toSignedMeasure (i ∩ Tᶜ)
⊢ ↑j₁.toSignedMeasure (i ∩ Sᶜ) = ↑j₁.toSignedMeasure (i ∩ Tᶜ)
state_after: no goals
tactic: exact of_inter_eq_of_symmDiff_eq_zero_positive hS₁.compl hT₁.compl hi hS₃ hT₃ hST₁