Variable P : ad.
Variable f : mu_form.
Variable re : rel_env.
Hypothesis f_is_ok : f_ok f.
Hypothesis f_ap_ok : mu_form_ap_ok (var_lu 0 N) f.
Hypothesis f_even : f_P_even P f true.
Hypothesis re_ok : ad_to_be_ok (var_lu 0 N) re.
Definition mf (be : bool_expr) := mu_eval f (re_put re P be).
Definition mfs (n : nat) := fst (be_iter2n mf Zero n).

(* Specifications: *)
Lemma mf_inc : be_to_be_inc mf.
Lemma mf_be_ok :
forall be : bool_expr, be_ok (var_lu 0 N) be -> be_ok (var_lu 0 N) (mf be).
Lemma mf_preserves_eq :
forall be1 be2 : bool_expr, be_eq be1 be2 -> be_eq (mf be1) (mf be2).
Lemma mf_fix_ex :
exists m : nat,
m <= two_power N /\ be_eq (be_iter1 mf Zero m) (be_iter1 mf Zero (S m)).
Lemma mf_lfp : lfp mf (fst (be_iter2n mf Zero N)).
End Mu_eval_as_fix.
Lemma mu_eval_mu_is_lfp :
forall (P : ad) (f : mu_form) (re : rel_env),
f_ok (mu_mu P f) ->
mu_form_ap_ok (var_lu 0 N) (mu_mu P f) ->
ad_to_be_ok (var_lu 0 N) re ->
lfp (fun be : bool_expr => mu_eval f (re_put re P be))
(mu_eval (mu_mu P f) re).