Theorem: SimpleGraph.Walk.IsCircuit.rotate
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: refine ⟨hc.isTrail.rotate _, ?_⟩
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
hc : c.IsCircuit
h : u ∈ c.support
⊢ (c.rotate h).IsCircuit
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
hc : c.IsCircuit
h : u ∈ c.support
⊢ c.rotate h ≠ nil

tactic: cases c
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
hc : c.IsCircuit
h : u ∈ c.support
⊢ c.rotate h ≠ nil
state_after: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
hc : nil.IsCircuit
h : u ∈ nil.support
⊢ nil.rotate h ≠ nil

case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
⊢ (cons h✝ p✝).rotate h ≠ nil

tactic: exact (hc.ne_nil rfl).elim
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
hc : nil.IsCircuit
h : u ∈ nil.support
⊢ nil.rotate h ≠ nil
state_after: no goals

tactic: intro hn
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
⊢ (cons h✝ p✝).rotate h ≠ nil
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
hn : (cons h✝ p✝).rotate h = nil
⊢ False

tactic: have hn' := congr_arg length hn
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
hn : (cons h✝ p✝).rotate h = nil
⊢ False
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
hn : (cons h✝ p✝).rotate h = nil
hn' : ((cons h✝ p✝).rotate h).length = nil.length
⊢ False

tactic: rw [rotate, length_append, add_comm, ← length_append, take_spec] at hn'
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
hn : (cons h✝ p✝).rotate h = nil
hn' : ((cons h✝ p✝).rotate h).length = nil.length
⊢ False
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
hn : (cons h✝ p✝).rotate h = nil
hn' : (cons h✝ p✝).length = nil.length
⊢ False

tactic: simp at hn'
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝¹ w x y : V
inst✝ : DecidableEq V
u v v✝ : V
h✝ : G.Adj v v✝
p✝ : G.Walk v✝ v
hc : (cons h✝ p✝).IsCircuit
h : u ∈ (cons h✝ p✝).support
hn : (cons h✝ p✝).rotate h = nil
hn' : (cons h✝ p✝).length = nil.length
⊢ False
state_after: no goals