Definition ad_to_be_eq1 (f : mu_form) (f1 f2 : ad -> bool_expr) :=
  forall x : ad, mu_rel_free x f = true -> be_eq (f1 x) (f2 x).

(* Specifications: *)
Lemma mu_eval_lemma2 : forall f : mu_form, f_ok f -> mu_form_ap_ok (var_lu 0 N) f -> (forall re : rel_env, ad_to_be_ok (var_lu 0 N) re -> be_ok (var_lu 0 N) (mu_eval f re)) /\ (forall P : ad, f_P_even P f true -> re_to_be_inc (mu_eval f) P) /\ (forall P : ad, f_P_even P f false -> re_to_be_dec (mu_eval f) P) /\ (forall re1 re2 : rel_env, ad_to_be_eq1 f re1 re2 -> be_eq (mu_eval f re1) (mu_eval f re2)).
Lemma mu_eval_lemma1 : forall f : mu_form, f_ok f -> mu_form_ap_ok (var_lu 0 N) f -> (forall re : rel_env, ad_to_be_ok (var_lu 0 N) re -> be_ok (var_lu 0 N) (mu_eval f re)) /\ (forall P : ad, f_P_even P f true -> re_to_be_inc (mu_eval f) P) /\ (forall P : ad, f_P_even P f false -> re_to_be_dec (mu_eval f) P) /\ (forall re1 re2 : rel_env, ad_to_be_eq re1 re2 -> be_eq (mu_eval f re1) (mu_eval f re2)).
Lemma lfp_be_lfp : forall (bef : bool_expr -> bool_expr) (be : bool_expr), lfp bef be <-> lfp_be bef Zero be.
Lemma be_iter_is_lfp_be : forall (bef : bool_expr -> bool_expr) (n : nat) (be : bool_expr), be_le be (bef be) -> (forall be1 be2 : bool_expr, be_eq be1 be2 -> be_eq (bef be1) (bef be2)) -> (forall be1 be2 : bool_expr, be_le be1 be2 -> be_le (bef be1) (bef be2)) -> (exists m : nat, m <= n /\ be_eq (be_iter1 bef be m) (be_iter1 bef be (S m))) -> lfp_be bef be (be_iter bef be n).
Lemma be_iter1_n_le : forall (n : nat) (be : bool_expr) (bef : bool_expr -> bool_expr), n <> 0 -> (forall be1 be2 : bool_expr, be_le be1 be2 -> be_le (bef be1) (bef be2)) -> be_le be (bef be) -> be_le be (be_iter1 bef be n).
Lemma be_iter2n_is_lfp_be : forall (bef : bool_expr -> bool_expr) (n : nat) (be : bool_expr), be_le be (bef be) -> (forall be1 be2 : bool_expr, be_eq be1 be2 -> be_eq (bef be1) (bef be2)) -> (forall be1 be2 : bool_expr, be_le be1 be2 -> be_le (bef be1) (bef be2)) -> (exists m : nat, m <= two_power n /\ be_eq (be_iter1 bef be m) (be_iter1 bef be (S m))) -> lfp_be bef be (fst (be_iter2n bef be n)).
Lemma be_le_zero : forall be : bool_expr, be_le Zero be.