Theorem: SimpleGraph.CliqueFree.sup_edge
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: contrapose h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : G.CliqueFree n
v w : α
⊢ (G ⊔ edge v w).CliqueFree (n + 1)
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
⊢ ¬G.CliqueFree n

tactic: obtain ⟨f, ha⟩ := topEmbeddingOfNotCliqueFree h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
⊢ ¬G.CliqueFree n
state_after: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ⊤.Adj a b
⊢ ¬G.CliqueFree n

tactic: simp only [ne_eq, top_adj] at ha
state_before: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ⊤.Adj a b
⊢ ¬G.CliqueFree n
state_after: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ ¬G.CliqueFree n

tactic: rw [not_cliqueFree_iff]
state_before: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ ¬G.CliqueFree n
state_after: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ Nonempty (⊤ ↪g G)

tactic: by_cases mw : w ∈ Set.range f
state_before: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ Nonempty (⊤ ↪g G)
state_after: case pos
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∈ Set.range ⇑f
⊢ Nonempty (⊤ ↪g G)

case neg
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
⊢ Nonempty (⊤ ↪g G)

tactic: obtain ⟨x, hx⟩ := mw
state_before: case pos
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∈ Set.range ⇑f
⊢ Nonempty (⊤ ↪g G)
state_after: case pos.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
⊢ Nonempty (⊤ ↪g G)

tactic: use ⟨f ∘ x.succAboveEmb, f.2.comp Fin.succAbove_right_injective⟩
state_before: case pos.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
⊢ Nonempty (⊤ ↪g G)
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
⊢ ∀ {a b : Fin n},
    G.Adj ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } b) ↔ ⊤.Adj a b

tactic: intro a b
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
⊢ ∀ {a b : Fin n},
    G.Adj ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } b) ↔ ⊤.Adj a b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
⊢ G.Adj ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } b) ↔ ⊤.Adj a b

tactic: simp_rw [Embedding.coeFn_mk, comp_apply, Fin.succAboveEmb_apply, top_adj]
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
⊢ G.Adj ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑x.succAboveEmb, inj' := ⋯ } b) ↔ ⊤.Adj a b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b

tactic: have hs := @ha (x.succAbove a) (x.succAbove b)
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs : (G ⊔ edge v w).Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b

tactic: have ia : w ≠ f (x.succAbove a) :=
  (hx ▸ f.apply_eq_iff_eq x (x.succAbove a)).ne.mpr (x.succAbove_ne a).symm
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs : (G ⊔ edge v w).Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs : (G ⊔ edge v w).Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
ia : w ≠ f (x.succAbove a)
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b

tactic: have ib : w ≠ f (x.succAbove b) :=
  (hx ▸ f.apply_eq_iff_eq x (x.succAbove b)).ne.mpr (x.succAbove_ne b).symm
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs : (G ⊔ edge v w).Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
ia : w ≠ f (x.succAbove a)
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs : (G ⊔ edge v w).Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
ia : w ≠ f (x.succAbove a)
ib : w ≠ f (x.succAbove b)
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b

tactic: rw [sup_adj, edge_adj] at hs
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs : (G ⊔ edge v w).Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
ia : w ≠ f (x.succAbove a)
ib : w ≠ f (x.succAbove b)
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs :
  G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ∨
      (f (x.succAbove a) = v ∧ f (x.succAbove b) = w ∨ f (x.succAbove a) = w ∧ f (x.succAbove b) = v) ∧
        f (x.succAbove a) ≠ f (x.succAbove b) ↔
    ¬x.succAbove a = x.succAbove b
ia : w ≠ f (x.succAbove a)
ib : w ≠ f (x.succAbove b)
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b

tactic: simp only [ia.symm, ib.symm, and_false, false_and, or_false] at hs
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
hs :
  G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ∨
      (f (x.succAbove a) = v ∧ f (x.succAbove b) = w ∨ f (x.succAbove a) = w ∧ f (x.succAbove b) = v) ∧
        f (x.succAbove a) ≠ f (x.succAbove b) ↔
    ¬x.succAbove a = x.succAbove b
ia : w ≠ f (x.succAbove a)
ib : w ≠ f (x.succAbove b)
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
ia : w ≠ f (x.succAbove a)
ib : w ≠ f (x.succAbove b)
hs : G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b

tactic: rw [hs, Fin.succAbove_right_inj]
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
x : Fin (n + 1)
hx : f x = w
a b : Fin n
ia : w ≠ f (x.succAbove a)
ib : w ≠ f (x.succAbove b)
hs : G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ ¬x.succAbove a = x.succAbove b
⊢ G.Adj (f (x.succAbove a)) (f (x.succAbove b)) ↔ a ≠ b
state_after: no goals

tactic: use ⟨f ∘ Fin.succEmb n, (f.2.of_comp_iff _).mpr (Fin.succ_injective _)⟩
state_before: case neg
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
⊢ Nonempty (⊤ ↪g G)
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
⊢ ∀ {a b : Fin n},
    G.Adj ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } b) ↔
      ⊤.Adj a b

tactic: intro a b
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
⊢ ∀ {a b : Fin n},
    G.Adj ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } b) ↔
      ⊤.Adj a b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
⊢ G.Adj ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } b) ↔ ⊤.Adj a b

tactic: simp only [Fin.val_succEmb, Embedding.coeFn_mk, comp_apply, top_adj]
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
⊢ G.Adj ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } a) ({ toFun := ⇑f ∘ ⇑(Fin.succEmb n), inj' := ⋯ } b) ↔ ⊤.Adj a b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b

tactic: have hs := @ha a.succ b.succ
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b

tactic: have ia : f a.succ ≠ w := by simp_all
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
ia : f a.succ ≠ w
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b

tactic: have ib : f b.succ ≠ w := by simp_all
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
ia : f a.succ ≠ w
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
ia : f a.succ ≠ w
ib : f b.succ ≠ w
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b

tactic: rw [sup_adj, edge_adj] at hs
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
ia : f a.succ ≠ w
ib : f b.succ ≠ w
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs :
  G.Adj (f a.succ) (f b.succ) ∨ (f a.succ = v ∧ f b.succ = w ∨ f a.succ = w ∧ f b.succ = v) ∧ f a.succ ≠ f b.succ ↔
    ¬a.succ = b.succ
ia : f a.succ ≠ w
ib : f b.succ ≠ w
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b

tactic: simp only [ia, ib, and_false, false_and, or_false] at hs
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs :
  G.Adj (f a.succ) (f b.succ) ∨ (f a.succ = v ∧ f b.succ = w ∨ f a.succ = w ∧ f b.succ = v) ∧ f a.succ ≠ f b.succ ↔
    ¬a.succ = b.succ
ia : f a.succ ≠ w
ib : f b.succ ≠ w
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b
state_after: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
ia : f a.succ ≠ w
ib : f b.succ ≠ w
hs : G.Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b

tactic: rw [hs, Fin.succ_inj]
state_before: case map_rel_iff'
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
ia : f a.succ ≠ w
ib : f b.succ ≠ w
hs : G.Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
⊢ G.Adj (f a.succ) (f b.succ) ↔ a ≠ b
state_after: no goals

tactic: simp_all
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
⊢ f a.succ ≠ w
state_after: no goals

tactic: simp_all
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
a b : Fin n
hs : (G ⊔ edge v w).Adj (f a.succ) (f b.succ) ↔ ¬a.succ = b.succ
ia : f a.succ ≠ w
⊢ f b.succ ≠ w
state_after: no goals