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).