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