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

tactic: ext n
state_before: α : Type u_1
β : Type ?u.7993
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
⊢ d = disjointed f

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

tactic: suffices h : d n.succ = partialSups d n.succ \ partialSups d n
state_before: case h.succ
α : Type u_1
β : Type ?u.7993
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
⊢ d (Nat.succ n) = disjointed f (Nat.succ n)

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

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

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

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

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

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

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

tactic: rw [h, hsups, partialSups_succ, disjointed_succ, sup_sdiff, sdiff_self, bot_sup_eq]
state_before: case h.succ
α : Type u_1
β : Type ?u.7993
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
h : d (Nat.succ n) = ↑(partialSups d) (Nat.succ n) \ ↑(partialSups d) n
⊢ d (Nat.succ n) = disjointed f (Nat.succ n)

tactic: exact h n le_rfl
state_before: case h
α : Type u_1
β : Type ?u.7993
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n : ℕ
h : ∀ (m : ℕ), m ≤ n → Disjoint (↑(partialSups d) m) (d (Nat.succ n))
⊢ Disjoint (↑(partialSups d) n) (d (n + 1))

tactic: exact hdisj (Nat.succ_ne_zero _).symm
state_before: case h.zero
α : Type u_1
β : Type ?u.7993
inst✝ : GeneralizedBooleanAlgebra α
f d : ℕ → α
hdisj : Pairwise (Disjoint on d)
hsups : partialSups d = partialSups f
n m : ℕ
hm✝ : m ≤ n
hm : Nat.zero ≤ n
⊢ Disjoint (↑(partialSups d) Nat.zero) (d (Nat.succ n))