Theorem: disjointed_unique
File: Mathlib/Order/Disjointed.lean

tactic: ext n
state_before: α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
⊢ d = disjointed f
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d n = disjointed f n

tactic: cases' n with n
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d n = disjointed f n
state_after: case h.zero
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
⊢ d 0 = disjointed f 0

case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d (n + 1) = disjointed f (n + 1)

tactic: suffices h : d n.succ = partialSups d n.succ \ partialSups d n by
  rw [h, hsups, partialSups_succ, disjointed_succ, sup_sdiff, sdiff_self, bot_sup_eq]
state_before: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d (n + 1) = disjointed f (n + 1)
state_after: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d n.succ = (partialSups d) n.succ \ (partialSups d) n

tactic: rw [partialSups_succ, sup_sdiff, sdiff_self, bot_sup_eq, eq_comm, sdiff_eq_self_iff_disjoint]
state_before: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d n.succ = (partialSups d) n.succ \ (partialSups d) n
state_after: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ Disjoint ((partialSups d) n) (d (n + 1))

tactic: suffices h : ∀ m ≤ n, Disjoint (partialSups d m) (d n.succ) from h n le_rfl
state_before: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ Disjoint ((partialSups d) n) (d (n + 1))
state_after: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ ∀ m ≤ n, Disjoint ((partialSups d) m) (d n.succ)

tactic: rintro m hm
state_before: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ ∀ m ≤ n, Disjoint ((partialSups d) m) (d n.succ)
state_after: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
hm : m ≤ n
⊢ Disjoint ((partialSups d) m) (d n.succ)

tactic: induction' m with m ih
state_before: case h.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
hm : m ≤ n
⊢ Disjoint ((partialSups d) m) (d n.succ)
state_after: case h.succ.zero
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
hm : 0 ≤ n
⊢ Disjoint ((partialSups d) 0) (d n.succ)

case h.succ.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
ih : m ≤ n → Disjoint ((partialSups d) m) (d n.succ)
hm : m + 1 ≤ n
⊢ Disjoint ((partialSups d) (m + 1)) (d n.succ)

tactic: rw [partialSups_succ, disjoint_iff, inf_sup_right, sup_eq_bot_iff, ← disjoint_iff, ← disjoint_iff]
state_before: case h.succ.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
ih : m ≤ n → Disjoint ((partialSups d) m) (d n.succ)
hm : m + 1 ≤ n
⊢ Disjoint ((partialSups d) (m + 1)) (d n.succ)
state_after: case h.succ.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
ih : m ≤ n → Disjoint ((partialSups d) m) (d n.succ)
hm : m + 1 ≤ n
⊢ Disjoint ((partialSups d) m) (d n.succ) ∧ Disjoint (d (m + 1)) (d n.succ)

tactic: exact ⟨ih (Nat.le_of_succ_le hm), hdisj (Nat.lt_succ_of_le hm).ne⟩
state_before: case h.succ.succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
ih : m ≤ n → Disjoint ((partialSups d) m) (d n.succ)
hm : m + 1 ≤ n
⊢ Disjoint ((partialSups d) m) (d n.succ) ∧ Disjoint (d (m + 1)) (d n.succ)
state_after: no goals

tactic: rw [← partialSups_zero d, hsups, partialSups_zero, disjointed_zero]
state_before: case h.zero
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
⊢ d 0 = disjointed f 0
state_after: no goals

tactic: rw [h, hsups, partialSups_succ, disjointed_succ, sup_sdiff, sdiff_self, bot_sup_eq]
state_before: α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
h : d n.succ = (partialSups d) n.succ \ (partialSups d) n
⊢ d (n + 1) = disjointed f (n + 1)
state_after: no goals

tactic: exact hdisj (Nat.succ_ne_zero _).symm
state_before: case h.succ.zero
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
hm : 0 ≤ n
⊢ Disjoint ((partialSups d) 0) (d n.succ)
state_after: no goals