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

tactic: constructor
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (SimpleGraph.map f G).IsClique ↑t ↔ ∃ s, G.IsClique ↑s ∧ map f s = t
state_after: case mp
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (SimpleGraph.map f G).IsClique ↑t → ∃ s, G.IsClique ↑s ∧ map f s = t

case mpr
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (∃ s, G.IsClique ↑s ∧ map f s = t) → (SimpleGraph.map f G).IsClique ↑t

tactic: rintro ⟨s, hs, rfl⟩
state_before: case mpr
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (∃ s, G.IsClique ↑s ∧ map f s = t) → (SimpleGraph.map f G).IsClique ↑t
state_after: case mpr.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
s : Finset α
hs : G.IsClique ↑s
ht : (map f s).Nontrivial
⊢ (SimpleGraph.map f G).IsClique ↑(map f s)

tactic: simpa using hs.map (f := f)
state_before: case mpr.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
s : Finset α
hs : G.IsClique ↑s
ht : (map f s).Nontrivial
⊢ (SimpleGraph.map f G).IsClique ↑(map f s)
state_after: no goals

tactic: rw [isClique_map_iff_of_nontrivial (by simpa)]
state_before: case mp
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (SimpleGraph.map f G).IsClique ↑t → ∃ s, G.IsClique ↑s ∧ map f s = t
state_after: case mp
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (∃ s, G.IsClique s ∧ ⇑f '' s = ↑t) → ∃ s, G.IsClique ↑s ∧ map f s = t

tactic: rintro ⟨s, hs, hst⟩
state_before: case mp
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (∃ s, G.IsClique s ∧ ⇑f '' s = ↑t) → ∃ s, G.IsClique ↑s ∧ map f s = t
state_after: case mp.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
s : Set α
hs : G.IsClique s
hst : ⇑f '' s = ↑t
⊢ ∃ s, G.IsClique ↑s ∧ map f s = t

tactic: obtain ⟨s, rfl⟩ := Set.Finite.exists_finset_coe <|
  (show s.Finite from Set.Finite.of_finite_image (by simp [hst]) f.injective.injOn)
state_before: case mp.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
s : Set α
hs : G.IsClique s
hst : ⇑f '' s = ↑t
⊢ ∃ s, G.IsClique ↑s ∧ map f s = t
state_after: case mp.intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
s : Finset α
hs : G.IsClique ↑s
hst : ⇑f '' ↑s = ↑t
⊢ ∃ s, G.IsClique ↑s ∧ map f s = t

tactic: exact ⟨s,hs, Finset.coe_inj.1 (by simpa)⟩
state_before: case mp.intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
s : Finset α
hs : G.IsClique ↑s
hst : ⇑f '' ↑s = ↑t
⊢ ∃ s, G.IsClique ↑s ∧ map f s = t
state_after: no goals

tactic: simpa
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
⊢ (↑t).Nontrivial
state_after: no goals

tactic: simp [hst]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
s : Set α
hs : G.IsClique s
hst : ⇑f '' s = ↑t
⊢ (⇑f '' s).Finite
state_after: no goals

tactic: simpa
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s✝ t✝ : Set α
a b : α
inst✝ : DecidableEq β
f : α ↪ β
t : Finset β
ht : t.Nontrivial
s : Finset α
hs : G.IsClique ↑s
hst : ⇑f '' ↑s = ↑t
⊢ ↑(map f s) = ↑t
state_after: no goals