Definition bool_fun_and (bf1 bf2 : bool_fun) : bool_fun :=
  fun vb : var_binding => bf1 vb && bf2 vb.

(* Specifications: *)
Lemma bool_fun_and_is_neg_or_neg_neg : forall bf1 bf2 : bool_fun, bool_fun_eq (bool_fun_and bf1 bf2) (bool_fun_neg (bool_fun_or (bool_fun_neg bf1) (bool_fun_neg bf2))).
Lemma BDDand_is_and : forall (cfg : BDDconfig) (negm : BDDneg_memo) (orm : BDDor_memo) (node1 node2 : ad), BDDconfig_OK cfg -> BDDneg_memo_OK_2 cfg negm -> BDDor_memo_OK cfg orm -> config_node_OK cfg node1 -> config_node_OK cfg node2 -> bool_fun_eq (bool_fun_of_BDD (fst (BDDand cfg negm orm node1 node2)) (fst (snd (BDDand cfg negm orm node1 node2)))) (bool_fun_and (bool_fun_of_BDD cfg node1) (bool_fun_of_BDD cfg node2)).