import data.list
open list

variable {T : Type}

theorem append.assoc : ∀ (s t u : list T), s ++ t ++ u = s ++ (t ++ u)
| append.assoc nil t u      := by esimp
| append.assoc (a :: l) t u :=
  begin
    change a :: (l ++ t ++ u) = (a :: l) ++ (t ++ a),
    rewrite append.assoc
  end
