End BDDor_results.
Section BDDimpl_results.
Variable cfg : BDDconfig.
Variable ul : list ad.
Variable node1 node2 : ad.
Hypothesis cfg_OK : BDDconfig_OK cfg.
Hypothesis ul_OK : used_list_OK cfg ul.
Hypothesis used1 : used_node' cfg ul node1.
Hypothesis used2 : used_node' cfg ul node2.
Definition BDDimpl :=
match BDDneg cfg ul node1 with
| (cfg1, node1') => BDDor cfg1 (node1' :: ul) node1' node2
end.

(* Specifications: *)
Lemma BDDimpl_config_OK : BDDconfig_OK (fst BDDimpl).
Lemma BDDimpl_node_OK : config_node_OK (fst BDDimpl) (snd BDDimpl).
Lemma BDDimpl_used_nodes_preserved :
used_nodes_preserved cfg (fst BDDimpl) ul.
Lemma BDDimpl_is_impl :
bool_fun_eq (bool_fun_of_BDD (fst BDDimpl) (snd BDDimpl))
(bool_fun_impl (bool_fun_of_BDD cfg node1) (bool_fun_of_BDD cfg node2)).
Lemma BDDimpl_list_OK : used_list_OK (fst BDDimpl) ul.
Lemma BDDimpl_list_OK_cons : used_list_OK (fst BDDimpl) (snd BDDimpl :: ul).
End BDDimpl_results.