Fixpoint univl (be : bool_expr) (la : list ad) {struct la} : bool_expr :=
match la with
| nil => be
| a :: la' => forall_ a (univl be la')
end.
Fixpoint exl (be : bool_expr) (la : list ad) {struct la} : bool_expr :=
match la with
| nil => be
| a :: la' => be_ex a (exl be la')
end.

(* Specifications: *)
Lemma univl_OK :
forall (la : list ad) (be : bool_expr),
bool_fun_eq (bool_fun_of_bool_expr (univl be la))
(bool_fun_univl (bool_fun_of_bool_expr be) la).
Lemma exl_OK :
forall (la : list ad) (be : bool_expr),
bool_fun_eq (bool_fun_of_bool_expr (exl be la))
(bool_fun_exl (bool_fun_of_bool_expr be) la).