Definition bool_fun_neg (bf : bool_fun) : bool_fun :=
fun vb : var_binding => negb (bf vb).
Definition bool_fun_or (bf1 bf2 : bool_fun) : bool_fun :=
fun vb : var_binding => bf1 vb || bf2 vb.

Lemma bool_fun_neg_semantics :
forall (bf : bool_fun) (vb : var_binding),
(bool_fun_eval bf vb = true -> bool_fun_eval (bool_fun_neg bf) vb = false) /\
(bool_fun_eval bf vb = false -> bool_fun_eval (bool_fun_neg bf) vb = true).