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.

(* Specifications: *)
Lemma seq_peel_begin: forall (n l: nat) (LPOS: l > 0),
n :: seq (S n) (l - 1) = seq n l.
Lemma cons_append: forall {A: Type} (a: A) (l l': list A),
(cons a l) ++ l' = cons a (l ++ l').
Lemma seq_peel_end: forall (n l: nat) (L_GT_0: l > 0),
seq n l = (seq n (l - 1)) ++ [ n + l - 1].