Lemma rev_rev {A} (l: list A) : List.rev (List.rev l) = l. Proof.A:Typenil = nilA:Typea:Al:list AIHl:rev (rev l) = lrev (rev l ++ a :: nil) = a :: lreflexivity.A:Typenil = nilA:Typea:Al:list AIHl:rev (rev l) = lrev (rev l ++ a :: nil) = a :: lrev (a :: nil) ++ rev (rev l) = a :: lrev (a :: nil) ++ l = a :: lreflexivity. Qed.a :: l = a :: l