Definition cnf_of_list {T: Type} (tg : T) (l : list (NFormula Z)) :=
List.fold_right (fun x acc =>
if Zunsat x then acc else ((x,tg)::nil)::acc)
(cnf_tt _ _)  l.

Lemma cnf_of_list_correct :
forall {T : Type} (tg:T)  (f : list (NFormula Z)) env,
eval_cnf eval_nformula env (cnf_of_list tg f) <->
make_conj (fun x : NFormula Z => eval_nformula env x -> False) f.