Module L.
Include Coq.Lists.List.
Definition null {A : Type} (l : list A) : bool :=
match l with
| L.nil => true
| L.cons _ _ => false
end.
#[global] Hint Rewrite null_spec in_map_iff in_app_iff : simplication_hints.
#[global] Hint Rewrite in_remove_iff : simplication_hints.

Lemma list_rev_rect {A : Type} (P : list A -> Type)
(NIL : P [])
(TAIL : forall x, forall xs, P xs -> P (xs ++ [x]))
: forall xs, P xs.