End BDDuniv_results.
Section BDDex_results.
Variable cfg : BDDconfig.
Variable ul : list ad.
Variable y : BDDvar.
Variable node : ad.
Hypothesis cfg_OK : BDDconfig_OK cfg.
Hypothesis ul_OK : used_list_OK cfg ul.
Hypothesis used : used_node' cfg ul node.
Definition BDDex :=
match BDDneg gc cfg ul node with
| (cfg1, node1) =>
match BDDuniv cfg1 (node1 :: ul) y node1 with
| (cfg2, node2) => BDDneg gc cfg2 (node2 :: ul) node2
end
end.

(* Specifications: *)
Lemma BDDex_config_OK : BDDconfig_OK (fst BDDex).
Lemma BDDex_node_OK : config_node_OK (fst BDDex) (snd BDDex).
Lemma BDDex_used_nodes_preserved : used_nodes_preserved cfg (fst BDDex) ul.
Lemma BDDex_is_ex :
bool_fun_eq (bool_fun_of_BDD (fst BDDex) (snd BDDex))
(bool_fun_ex y (bool_fun_of_BDD cfg node)).
Lemma BDDex_list_OK : used_list_OK (fst BDDex) ul.
Lemma BDDex_list_OK_cons : used_list_OK (fst BDDex) (snd BDDex :: ul).
End BDDex_results.