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

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ ¬G.CliqueFree n
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ ∃ x, induce (↑x) G = ⊤ ∧ x.card = n
tactic: simp only [CliqueFree, isNClique_iff, isClique_iff_induce_eq, not_forall, Classical.not_not]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ ∃ x, induce (↑x) G = ⊤ ∧ x.card = n
state_after: case h
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ induce (↑(map f.toEmbedding univ)) G = ⊤ ∧ (map f.toEmbedding univ).card = n
tactic: use Finset.univ.map f.toEmbedding
state_before: case h
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ induce (↑(map f.toEmbedding univ)) G = ⊤ ∧ (map f.toEmbedding univ).card = n
state_after: case h
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ induce (↑(map f.toEmbedding univ)) G = ⊤
tactic: simp only [card_map, Finset.card_fin, eq_self_iff_true, and_true_iff]
state_before: case h
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
⊢ induce (↑(map f.toEmbedding univ)) G = ⊤
state_after: case h.Adj.h.mk.h.mk.a
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v : α
hv : v ∈ ↑(map f.toEmbedding univ)
w : α
hw : w ∈ ↑(map f.toEmbedding univ)
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨v, hv⟩ ⟨w, hw⟩ ↔ ⊤.Adj ⟨v, hv⟩ ⟨w, hw⟩
tactic: ext ⟨v, hv⟩ ⟨w, hw⟩
state_before: case h.Adj.h.mk.h.mk.a
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v : α
hv : v ∈ ↑(map f.toEmbedding univ)
w : α
hw : w ∈ ↑(map f.toEmbedding univ)
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨v, hv⟩ ⟨w, hw⟩ ↔ ⊤.Adj ⟨v, hv⟩ ⟨w, hw⟩
state_after: case h.Adj.h.mk.h.mk.a
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v : α
hv✝ : v ∈ ↑(map f.toEmbedding univ)
w : α
hw✝ : w ∈ ↑(map f.toEmbedding univ)
hv : ∃ x, f.toEmbedding x = v
hw : ∃ x, f.toEmbedding x = w
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨v, hv✝⟩ ⟨w, hw✝⟩ ↔ ⊤.Adj ⟨v, hv✝⟩ ⟨w, hw✝⟩
tactic: simp only [coe_map, Set.mem_image, coe_univ, Set.mem_univ, true_and_iff] at hv hw
state_before: case h.Adj.h.mk.h.mk.a
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v : α
hv✝ : v ∈ ↑(map f.toEmbedding univ)
w : α
hw✝ : w ∈ ↑(map f.toEmbedding univ)
hv : ∃ x, f.toEmbedding x = v
hw : ∃ x, f.toEmbedding x = w
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨v, hv✝⟩ ⟨w, hw✝⟩ ↔ ⊤.Adj ⟨v, hv✝⟩ ⟨w, hw✝⟩
state_after: case h.Adj.h.mk.h.mk.a.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
w : α
hw✝ : w ∈ ↑(map f.toEmbedding univ)
hw : ∃ x, f.toEmbedding x = w
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨f.toEmbedding v', hv⟩ ⟨w, hw✝⟩ ↔ ⊤.Adj ⟨f.toEmbedding v', hv⟩ ⟨w, hw✝⟩
tactic: obtain ⟨v', rfl⟩ := hv
state_before: case h.Adj.h.mk.h.mk.a.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
w : α
hw✝ : w ∈ ↑(map f.toEmbedding univ)
hw : ∃ x, f.toEmbedding x = w
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨f.toEmbedding v', hv⟩ ⟨w, hw✝⟩ ↔ ⊤.Adj ⟨f.toEmbedding v', hv⟩ ⟨w, hw✝⟩
state_after: case h.Adj.h.mk.h.mk.a.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
w' : Fin n
hw : f.toEmbedding w' ∈ ↑(map f.toEmbedding univ)
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨f.toEmbedding v', hv⟩ ⟨f.toEmbedding w', hw⟩ ↔
    ⊤.Adj ⟨f.toEmbedding v', hv⟩ ⟨f.toEmbedding w', hw⟩
tactic: obtain ⟨w', rfl⟩ := hw
state_before: case h.Adj.h.mk.h.mk.a.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
w' : Fin n
hw : f.toEmbedding w' ∈ ↑(map f.toEmbedding univ)
⊢ (induce (↑(map f.toEmbedding univ)) G).Adj ⟨f.toEmbedding v', hv⟩ ⟨f.toEmbedding w', hw⟩ ↔
    ⊤.Adj ⟨f.toEmbedding v', hv⟩ ⟨f.toEmbedding w', hw⟩
state_after: case h.Adj.h.mk.h.mk.a.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
w' : Fin n
hw : f.toEmbedding w' ∈ ↑(map f.toEmbedding univ)
⊢ G.Adj ((Embedding.subtype fun x => x ∈ ↑(map f.toEmbedding univ)) ⟨f v', ⋯⟩)
      ((Embedding.subtype fun x => x ∈ ↑(map f.toEmbedding univ)) ⟨f w', ⋯⟩) ↔
    ¬v' = w'
tactic: simp only [coe_sort_coe, RelEmbedding.coe_toEmbedding, comap_adj, Function.Embedding.coe_subtype,
    f.map_adj_iff, top_adj, ne_eq, Subtype.mk.injEq, RelEmbedding.inj]
state_before: case h.Adj.h.mk.h.mk.a.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
w' : Fin n
hw : f.toEmbedding w' ∈ ↑(map f.toEmbedding univ)
⊢ G.Adj ((Embedding.subtype fun x => x ∈ ↑(map f.toEmbedding univ)) ⟨f v', ⋯⟩)
      ((Embedding.subtype fun x => x ∈ ↑(map f.toEmbedding univ)) ⟨f w', ⋯⟩) ↔
    ¬v' = w'
state_after: case h.Adj.h.mk.h.mk.a.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
w' : Fin n
hw : f.toEmbedding w' ∈ ↑(map f.toEmbedding univ)
⊢ ⊤.Adj v' w' ↔ ¬v' = w'
tactic: erw [Function.Embedding.coe_subtype, f.map_adj_iff]
state_before: case h.Adj.h.mk.h.mk.a.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n✝ : ℕ
s : Finset α
n : ℕ
f : ⊤ ↪g G
v' : Fin n
hv : f.toEmbedding v' ∈ ↑(map f.toEmbedding univ)
w' : Fin n
hw : f.toEmbedding w' ∈ ↑(map f.toEmbedding univ)
⊢ ⊤.Adj v' w' ↔ ¬v' = w'
state_after: no goals
tactic: simp