(* predicate a is closed under "edge" relation e *)

(* Specifications: *)
Lemma closed_connect (T: finType) (e: rel T) (a: pred T) : closed e a ->
forall x y, connect e x y -> a x -> a y.
Lemma remU (c: clause) (s1 s2: clauseset) :
c \in rem s1 -> c \in rem (s1 :|: s2).
(* removability is closed under the derivation relation *)
Lemma rem_deriv_closed (c: clause) : closed deriv (fun s => c \in rem s).
Definition removed (c: clause) {s s'': clauseset} (step: trans s s'') :=
(c \in s) && (c \notin s'').
(* if a clause was removed at some step, then it was removable *)
Lemma removed_rem (c: clause) (s s'': clauseset) (step: trans s s'') :
removed c step -> c \in rem s.