Theorem: SimpleGraph.cliqueFreeOn_two
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: refine ⟨fun h a ha b hb _ hab => h ?_ ⟨by simpa [hab.ne], card_pair hab.ne⟩, ?_⟩
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ G.CliqueFreeOn s 2 ↔ s.Pairwise G.Adjᶜ
state_after: case refine_1
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : G.CliqueFreeOn s 2
a : α
ha : a ∈ s
b : α
hb : b ∈ s
x✝ : a ≠ b
hab : G.Adj a b
⊢ ↑{a, b} ⊆ s

case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ s.Pairwise G.Adjᶜ → G.CliqueFreeOn s 2

tactic: simp only [CliqueFreeOn, isNClique_iff, card_eq_two, coe_subset, not_and, not_exists]
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ s.Pairwise G.Adjᶜ → G.CliqueFreeOn s 2
state_after: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ s.Pairwise G.Adjᶜ → ∀ ⦃t : Finset α⦄, ↑t ⊆ s → G.IsClique ↑t → ∀ (x x_1 : α), x ≠ x_1 → ¬t = {x, x_1}

tactic: rintro h t hst ht a b hab rfl
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ s.Pairwise G.Adjᶜ → ∀ ⦃t : Finset α⦄, ↑t ⊆ s → G.IsClique ↑t → ∀ (x x_1 : α), x ≠ x_1 → ¬t = {x, x_1}
state_after: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : s.Pairwise G.Adjᶜ
a b : α
hab : a ≠ b
hst : ↑{a, b} ⊆ s
ht : G.IsClique ↑{a, b}
⊢ False

tactic: simp only [coe_insert, coe_singleton, Set.insert_subset_iff, Set.singleton_subset_iff] at hst
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : s.Pairwise G.Adjᶜ
a b : α
hab : a ≠ b
hst : ↑{a, b} ⊆ s
ht : G.IsClique ↑{a, b}
⊢ False
state_after: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : s.Pairwise G.Adjᶜ
a b : α
hab : a ≠ b
ht : G.IsClique ↑{a, b}
hst : a ∈ s ∧ b ∈ s
⊢ False

tactic: refine h hst.1 hst.2 hab (ht ?_ ?_ hab) <;> simp
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : s.Pairwise G.Adjᶜ
a b : α
hab : a ≠ b
ht : G.IsClique ↑{a, b}
hst : a ∈ s ∧ b ∈ s
⊢ False
state_after: no goals

tactic: simpa [hab.ne]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : G.CliqueFreeOn s 2
a : α
ha : a ∈ s
b : α
hb : b ∈ s
x✝ : a ≠ b
hab : G.Adj a b
⊢ G.IsClique ↑{a, b}
state_after: no goals

tactic: push_cast
state_before: case refine_1
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : G.CliqueFreeOn s 2
a : α
ha : a ∈ s
b : α
hb : b ∈ s
x✝ : a ≠ b
hab : G.Adj a b
⊢ ↑{a, b} ⊆ s
state_after: case refine_1
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : G.CliqueFreeOn s 2
a : α
ha : a ∈ s
b : α
hb : b ∈ s
x✝ : a ≠ b
hab : G.Adj a b
⊢ {a, b} ⊆ s

tactic: exact Set.insert_subset_iff.2 ⟨ha, Set.singleton_subset_iff.2 hb⟩
state_before: case refine_1
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a✝ b✝ : α
m n : ℕ
h : G.CliqueFreeOn s 2
a : α
ha : a ∈ s
b : α
hb : b ∈ s
x✝ : a ≠ b
hab : G.Adj a b
⊢ {a, b} ⊆ s
state_after: no goals