From mathcomp Require ssreflect ssrbool ssrfun bigop.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
(** We will follow the development from this paper: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.8188&rep=rep1&type=pdf*)
Open Scope list_scope.
Module LISTTHEOREMS.
Open Scope nat_scope.

Lemma cons_append: forall {A: Type} (a: A) (l l': list A),
(cons a l) ++ l' = cons a (l ++ l').