Proof with simpl; auto.
unfold check_clauseset; intros H.
intros s H1. unfold setd in H1.
assert (listd clause_denote inter TT
(print_pures_list (rsort (rev_cmp compare_clause2)
(M.elements (M.filter not_taut init)))) s).
autounfold with DEBUG_UNFOLD. rewrite (@listd_sort_inter _ state).
apply listd_In_pred...
intros cl H2; rewrite Melements_spec1 in H2.
rewrite M.filter_spec in H2. destruct H2 as [H2 _].
apply listd_In_inv_pred with (a:=cl) in H1... rewrite Melements_spec1...
unfold Morphisms.Proper, Morphisms.respectful; intros ? ? H3; rewrite H3...
clear H1. exfalso. eapply main_Valid_empty_clause with (s:=s); eauto.
Qed.

Lemma check_clauseset_Cexample_sound init units final empty R selected :
check_clauseset init = (C_example R selected, units, final, empty) ->
setd clause_denote inter TT init |--
setd clause_denote inter TT selected &&
setd clause_denote inter TT final &&
listd clause_denote inter TT units.