Definition cnf_normalise {T: Type} (t: Formula C) (tg: T) : cnf NFormula T :=
let f := normalise t in
if check_inconsistent f then cnf_ff _ _
else cnf_of_list (xnormalise f) tg.
Definition cnf_negate {T: Type} (t: Formula C) (tg: T) : cnf NFormula T :=
let f := normalise t in
if check_inconsistent f then cnf_tt _ _
else cnf_of_list (xnegate f) tg.

Lemma cnf_normalise_correct : forall (T : Type) env t tg, eval_cnf (Annot:=T) eval_nformula env (cnf_normalise t tg) <-> eval_formula env t.