Definition be_le2 (be1 be2 : bool_expr) :=
forall ve : var_env,
bool_fun_of_bool_expr be1 ve = true -> bool_fun_of_bool_expr be2 ve = true.

(* Specifications: *)
Lemma subst_le2 :
forall (x : BDDvar) (bex be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (subst x bex be1) (subst x bex be2).
Lemma replace_le2 :
forall (x y : BDDvar) (be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (replace x y be1) (replace x y be2).
Lemma replacel_le2 :
forall (lz ly : list ad) (be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (replacel be1 lz ly) (replacel be2 lz ly).
Lemma impl_le2 :
forall be be1 be2 : bool_expr,
be_le2 be1 be2 -> be_le2 (Impl be be1) (Impl be be2).
Lemma and_le2 :
forall be1 be2 be1' be2' : bool_expr,
be_le2 be1 be2 -> be_le2 be1' be2' -> be_le2 (ANd be1 be1') (ANd be2 be2').
Lemma or_le2 :
forall be1 be2 be1' be2' : bool_expr,
be_le2 be1 be2 -> be_le2 be1' be2' -> be_le2 (Or be1 be1') (Or be2 be2').
Lemma univ_le2 :
forall (x : BDDvar) (be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (forall_ x be1) (forall_ x be2).
Lemma ex_le2 :
forall (x : BDDvar) (be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (be_ex x be1) (be_ex x be2).
Lemma univl_le2 :
forall (lz : list ad) (be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (univl be1 lz) (univl be2 lz).
Lemma exl_le2 :
forall (lz : list ad) (be1 be2 : bool_expr),
be_le2 be1 be2 -> be_le2 (exl be1 lz) (exl be2 lz).
Lemma mu_all_le2 :
forall t be1 be2 : bool_expr,
be_le2 be1 be2 -> be_le2 (mu_all_eval t be1) (mu_all_eval t be2).
Lemma mu_ex_le2 :
forall t be1 be2 : bool_expr,
be_le2 be1 be2 -> be_le2 (mu_ex_eval t be1) (mu_ex_eval t be2).
Lemma be_le_le2 : forall be1 be2 : bool_expr, be_le be1 be2 -> be_le2 be1 be2.
Lemma be_le2_le : forall be1 be2 : bool_expr, be_le2 be1 be2 -> be_le be1 be2.
Lemma mu_all_le :
forall t be1 be2 : bool_expr,
be_le be1 be2 -> be_le (mu_all_eval t be1) (mu_all_eval t be2).
Lemma mu_ex_le :
forall t be1 be2 : bool_expr,
be_le be1 be2 -> be_le (mu_ex_eval t be1) (mu_ex_eval t be2).
Lemma BDDmu_all_lemma :
forall gc : BDDconfig -> list ad -> BDDconfig,
gc_OK gc ->
forall (cfg : BDDconfig) (ul : list ad) (nodet nodeg : ad),
BDDconfig_OK cfg ->
used_list_OK cfg ul ->
used_node' cfg ul nodet ->
used_node' cfg ul nodeg ->
BDDconfig_OK (fst (BDDmu_all gc cfg ul nodet nodeg)) /\
config_node_OK (fst (BDDmu_all gc cfg ul nodet nodeg))
(snd (BDDmu_all gc cfg ul nodet nodeg)) /\
used_nodes_preserved cfg (fst (BDDmu_all gc cfg ul nodet nodeg)) ul /\
bool_fun_eq
(bool_fun_of_BDD (fst (BDDmu_all gc cfg ul nodet nodeg))
(snd (BDDmu_all gc cfg ul nodet nodeg)))
(bool_fun_mu_all (bool_fun_of_BDD cfg nodet) (bool_fun_of_BDD cfg nodeg)).