Section Be_iter1.
Variable bef : bool_expr -> bool_expr.
Hypothesis bef_inc : be_to_be_inc bef.
Hypothesis
bef_ok :
forall be : bool_expr,
be_ok (var_lu 0 N) be -> be_ok (var_lu 0 N) (bef be).
Fixpoint be_iter1 (be : bool_expr) (n : nat) {struct n} : bool_expr :=
match n with
| O => be
| S m => be_iter1 (bef be) m
end.
Fixpoint be_iter2 (be : bool_expr) (n : nat) {struct n} : bool_expr :=
match n with
| O => be
| S m => bef (be_iter2 be m)
end.

Lemma be_iter1_ok :
forall (k : nat) (be : bool_expr),
be_ok (var_lu 0 N) be -> be_ok (var_lu 0 N) (be_iter1 be k).