Theorem: SimpleGraph.IsHamiltonian.connected
File: Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
⊢ G.Reachable a b
state_after: case inl
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b : α
p : G.Walk a✝ b
hG : G.IsHamiltonian
a : α
⊢ G.Reachable a a

case inr
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
⊢ G.Reachable a b
tactic: obtain rfl | hab := eq_or_ne a b
state_before: case inr
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
⊢ G.Reachable a b
state_after: case inr
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
⊢ G.Reachable a b
tactic: have : Nontrivial α := ⟨a, b, hab⟩
state_before: case inr
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
⊢ G.Reachable a b
state_after: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p✝ : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
w✝ : α
p : G.Walk w✝ w✝
hp : p.IsHamiltonianCycle
⊢ G.Reachable a b
tactic: obtain ⟨_, p, hp⟩ := hG Fintype.one_lt_card.ne'
state_before: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p✝ : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
w✝ : α
p : G.Walk w✝ w✝
hp : p.IsHamiltonianCycle
⊢ G.Reachable a b
state_after: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p✝ : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
w✝ : α
p : G.Walk w✝ w✝
hp : p.IsHamiltonianCycle
a_mem : a ∈ p.support
⊢ G.Reachable a b
tactic: have a_mem := hp.mem_support a
state_before: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p✝ : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
w✝ : α
p : G.Walk w✝ w✝
hp : p.IsHamiltonianCycle
a_mem : a ∈ p.support
⊢ G.Reachable a b
state_after: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p✝ : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
w✝ : α
p : G.Walk w✝ w✝
hp : p.IsHamiltonianCycle
a_mem : a ∈ p.support
b_mem : b ∈ p.support
⊢ G.Reachable a b
tactic: have b_mem := hp.mem_support b
state_before: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a✝ b✝ : α
p✝ : G.Walk a✝ b✝
hG : G.IsHamiltonian
a b : α
hab : a ≠ b
this : Nontrivial α
w✝ : α
p : G.Walk w✝ w✝
hp : p.IsHamiltonianCycle
a_mem : a ∈ p.support
b_mem : b ∈ p.support
⊢ G.Reachable a b
state_after: no goals
tactic: exact ((p.takeUntil a a_mem).reverse.append $ p.takeUntil b b_mem).reachable
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a b : α
p : G.Walk a b
hG : G.IsHamiltonian
x✝ : IsEmpty α
⊢ False
state_after: no goals
tactic: simpa using hG $ by simp [@Fintype.card_eq_zero]