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.
Fixpoint mk_edge_seq {V : Type} (v : V) (vs : list V) : list (V * V) :=
match vs with
| [] => []
| v' :: vs' => (v, v') :: mk_edge_seq v' vs'
end.

Lemma mk_edge_seq_last {V : Type} (v0 : V) (v' : V) (vs : list V)
: mk_edge_seq v0 (vs ++ [v']) = mk_edge_seq v0 vs ++ [(last vs v0, v')].