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 in_mk_edge_seq_inv {V : Type} (v0 : V) (v1 : V) (vs : list V)
(IN : In (v0, v1) (mk_edge_seq v1 vs))
: In v1 vs.