fact: Fixpoint cnf (s : form) := match s with | fV p => fV p | fF => fF | fImp s t => fImp (cnf s) (cnf t) | [p]s => [cnp false p](cnf s) end with cnp (c : bool) (a : prog) := match c,a with | false,pV a => pV a | true,pV a => (pV a)^^ | c, a + b => cnp c a + cnp c b | false, a ;; b => cnp false a ;; cnp false b | true, a ;; b => cnp true b ;; cnp true a | c,a^* => (cnp c a)^* | _,t?? => (cnf t)?? | c,p^^ => cnp (negb c) p end.
imports: Relations Lia Setoid Morphisms mathcomp(all_ssreflect) CompDecModal.libs(edone bcase fset base modular_hilbert sltype rewrite_inequality fset_tac)