if endP : L₂ = [] 
then
  simp [endP] at eq1
  rw [←List.concat_eq_append] at eq1
  have : L₁ ++ [(x, b), (x, !b)] = 
    (L₁ ++ [(x, b)]).concat (x, !b) := by simp
  rw [this] at eq1
  let eq1' := List.of_concat_eq_concat eq1
  let eq1'' := eq1'.1
  let sp := split_drop start nilP
  rw [← sp, ←List.concat_eq_append, ←List.concat_eq_append] at eq1''
  let eq1''' := eq1'.2
  let eq2' := List.of_concat_eq_concat eq1''
  let _eq2'' := eq2'.2
  rw [eq1''', _eq2''] at cancP
  simp [inv_def] at cancP
else
  rw [← split_drop L₂ endP] at eq1
  rw [← List.cons_append, ← List.cons_append, 
    ← List.append_assoc, ← List.concat_eq_append,
    ← List.concat_eq_append] at eq1
  let eq1' := List.of_concat_eq_concat eq1
  let eq1'' := eq1'.1
  apply reduced_start (L₁ ++ L₂.dropLast)
  rw [eq1'']
  apply Step.not
α : Type
inst✝ : DecidableEq α
start : List (α × Bool)
letter : α × Bool
reduced_start : Reduced start
nilP : ¬start = []
L' : List (α × Bool)
step : Step (start :+ letter) L'
x : α
b : Bool
L₁ L₂ : List (α × Bool)
eqs : start :+ letter = L₁ ++ (x, b) :: (x, !b) :: L₂ ∧ L' = L₁ ++ L₂
cancP : ¬List.getLast start nilP = letter⁻¹
eq1 : start ++ [letter] = L₁ ++ (x, b) :: (x, !b) :: L₂
⊢ False
no goals