Arguments Nat.div x y : simpl never.
Arguments skipn A n l : simpl nomatch.
Arguments firstn A n l : simpl nomatch.

(* Specifications: *)
Lemma replace_length : forall {A} i (x : A) l, (i < length l)%nat ->
length (replace i x l) = length l.
Lemma nth_error_lt : forall {A} n l (x : A), nth_error l n = Some x ->
(n < length l)%nat.
Lemma replace_In : forall {A} l i (x y : A), In y (replace i x l) -> In y l \/ y = x.
Lemma Forall_replace : forall {A} (P : A -> Prop) l i x, Forall P l -> P x ->
Forall P (replace i x l).
Lemma replace_In' : forall {A} l i (x y : A), In y (replace i x l) ->
In y (remove_at i l) \/ y = x.
Lemma Forall_replace' : forall {A} (P : A -> Prop) l i x, Forall P (remove_at i l) ->
P x -> Forall P (replace i x l).
Lemma nth_error_replace : forall {A} l i (x : A), (i <= length l)%nat ->
nth_error (replace i x l) i = Some x.
Lemma insert_In : forall {A} i l (x y : A), In y (insert i x l) -> In y l \/ y = x.
Lemma Forall_insert : forall {A} (P : A -> Prop) l i x, Forall P l -> P x ->
Forall P (insert i x l).