Section BDDsubst_results.
Variable cfg : BDDconfig.
Variable ul : list ad.
Variable node1 node2 : ad.
Variable x : 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.
Hypothesis node2_ind : bool_fun_independent (bool_fun_of_BDD cfg node2) x.

(* Specifications: *)
Lemma BDDsubst_config_OK : BDDconfig_OK (fst (BDDsubst cfg ul node1 x node2)).
Lemma BDDsubst_node_OK :
config_node_OK (fst (BDDsubst cfg ul node1 x node2))
(snd (BDDsubst cfg ul node1 x node2)).
Lemma BDDsubst_used_nodes_preserved :
used_nodes_preserved cfg (fst (BDDsubst cfg ul node1 x node2)) ul.
Lemma BDDsubst_list_OK :
used_list_OK (fst (BDDsubst cfg ul node1 x node2)) ul.
Lemma BDDsubst_list_OK_cons :
used_list_OK (fst (BDDsubst cfg ul node1 x node2))
(snd (BDDsubst cfg ul node1 x node2) :: ul).
Lemma BDDsubst_is_subst1 :
bool_fun_eq
(bool_fun_of_BDD (fst (BDDsubst cfg ul node1 x node2))
(snd (BDDsubst cfg ul node1 x node2)))
(bool_fun_subst1 x (bool_fun_of_BDD cfg node2) (bool_fun_of_BDD cfg node1)).
Lemma BDDsubst_is_subst :
bool_fun_eq
(bool_fun_of_BDD (fst (BDDsubst cfg ul node1 x node2))
(snd (BDDsubst cfg ul node1 x node2)))
(bool_fun_subst x (bool_fun_of_BDD cfg node2) (bool_fun_of_BDD cfg node1)).