Theorem: Finset.supIndep_pair
File: Mathlib/Order/SupIndep.lean

tactic: simp
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
h : SupIndep {i, j} f
⊢ i ∈ ↑{i, j}

tactic: simp
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
h : SupIndep {i, j} f
⊢ j ∈ ↑{i, j}

tactic: rw [supIndep_iff_disjoint_erase]
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
h : Disjoint (f i) (f j)
⊢ SupIndep {i, j} f

tactic: intro k hk
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
h : Disjoint (f i) (f j)
⊢ ∀ (i_1 : ι), i_1 ∈ {i, j} → Disjoint (f i_1) (sup (erase {i, j} i_1) f)

tactic: rw [Finset.mem_insert, Finset.mem_singleton] at hk
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
h : Disjoint (f i) (f j)
k : ι
hk : k ∈ {i, j}
⊢ Disjoint (f k) (sup (erase {i, j} k) f)

tactic: obtain rfl | rfl := hk
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
h : Disjoint (f i) (f j)
k : ι
hk : k = i ∨ k = j
⊢ Disjoint (f k) (sup (erase {i, j} k) f)

tactic: convert h using 1
state_before: case inl
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i : ι
inst✝ : DecidableEq ι
j k : ι
hij : k ≠ j
h : Disjoint (f k) (f j)
⊢ Disjoint (f k) (sup (erase {k, j} k) f)

tactic: rw [Finset.erase_insert, Finset.sup_singleton]
state_before: case h.e'_5
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i : ι
inst✝ : DecidableEq ι
j k : ι
hij : k ≠ j
h : Disjoint (f k) (f j)
⊢ sup (erase {k, j} k) f = f j

tactic: simpa using hij
state_before: case h.e'_5
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i : ι
inst✝ : DecidableEq ι
j k : ι
hij : k ≠ j
h : Disjoint (f k) (f j)
⊢ ¬k ∈ {j}

tactic: convert h.symm using 1
state_before: case inr
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i k : ι
hij : i ≠ k
h : Disjoint (f i) (f k)
⊢ Disjoint (f k) (sup (erase {i, k} k) f)

tactic: have : ({i, k} : Finset ι).erase k = {i} := by
  ext
  rw [mem_erase, mem_insert, mem_singleton, mem_singleton, and_or_left, Ne.def,
    not_and_self_iff, or_false_iff, and_iff_right_of_imp]
  rintro rfl
  exact hij
state_before: case h.e'_5
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i k : ι
hij : i ≠ k
h : Disjoint (f i) (f k)
⊢ sup (erase {i, k} k) f = f i

tactic: rw [this, Finset.sup_singleton]
state_before: case h.e'_5
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i k : ι
hij : i ≠ k
h : Disjoint (f i) (f k)
this : erase {i, k} k = {i}
⊢ sup (erase {i, k} k) f = f i

tactic: ext
state_before: α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i k : ι
hij : i ≠ k
h : Disjoint (f i) (f k)
⊢ erase {i, k} k = {i}

tactic: rw [mem_erase, mem_insert, mem_singleton, mem_singleton, and_or_left, Ne.def,
  not_and_self_iff, or_false_iff, and_iff_right_of_imp]
state_before: case a
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i k : ι
hij : i ≠ k
h : Disjoint (f i) (f k)
a✝ : ι
⊢ a✝ ∈ erase {i, k} k ↔ a✝ ∈ {i}

tactic: rintro rfl
state_before: case a
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
i k : ι
hij : i ≠ k
h : Disjoint (f i) (f k)
a✝ : ι
⊢ a✝ = i → ¬a✝ = k

tactic: exact hij
state_before: case a
α : Type u_2
β : Type ?u.8833
ι : Type u_1
ι' : Type ?u.8839
inst✝² : Lattice α
inst✝¹ : OrderBot α
s t : Finset ι
f : ι → α
i : ι
inst✝ : DecidableEq ι
k a✝ : ι
hij : a✝ ≠ k
h : Disjoint (f a✝) (f k)
⊢ ¬a✝ = k