Definition var_env''le (ve1 ve2 : var_env'') :=
forall x : ad, in_dom _ x ve1 = true -> in_dom _ x ve2 = true.

(* Specifications: *)
Lemma var_env''le_refl : forall ve : var_env'', var_env''le ve ve.
Lemma var_env''le_trans :
forall ve1 ve2 ve3 : var_env'',
var_env''le ve1 ve2 -> var_env''le ve2 ve3 -> var_env''le ve1 ve3.
Lemma be_le_ens_inc :
forall (be1 be2 : bool_expr) (L U : nat),
be_le be1 be2 ->
Included _ (bool_expr_to_var_env'' L U be1) (bool_expr_to_var_env'' L U be2).
Lemma incl_eq :
forall (U : Type) (A B : Ensemble U) (n : nat),
Included _ A B -> cardinal _ A n -> cardinal _ B n -> Included _ B A.
Lemma decreasing_seq :
forall (n : nat) (f : nat -> nat),
f 0 = n ->
(forall n : nat, f (S n) <= f n) -> exists m : nat, m <= n /\ f m = f (S m).
Lemma decreasing_ens_seq :
forall (U : Type) (n : nat) (f : nat -> Ensemble U),
cardinal _ (f 0) n ->
(forall k : nat, Finite _ (f k)) ->
(forall k : nat, Included _ (f (S k)) (f k)) ->
exists m : nat,
(exists c : nat, m <= n /\ cardinal _ (f m) c /\ cardinal _ (f (S m)) c).
Lemma bool_expr_to_var_env''_finite :
forall (L U : nat) (be : bool_expr),
be_ok (var_lu L U) be -> Finite _ (bool_expr_to_var_env'' L U be).
Lemma bool_expr_to_var_env''_card :
forall (L U n : nat) (be : bool_expr),
be_ok (var_lu L U) be ->
cardinal _ (bool_expr_to_var_env'' L U be) n -> n <= two_power (U - L).
Lemma decreasing_be_seq :
forall (n L U : nat) (f : nat -> bool_expr),
cardinal _ (bool_expr_to_var_env'' L U (f 0)) n ->
(forall k : nat, be_le (f (S k)) (f k)) ->
(forall k : nat, be_ok (var_lu L U) (f k)) ->
exists m : nat, m <= n /\ be_le (f m) (f (S m)).
Lemma decreasing_be_seq_1 :
forall (L U : nat) (f : nat -> bool_expr),
(forall k : nat, be_ok (var_lu L U) (f k)) ->
(forall k : nat, be_le (f (S k)) (f k)) ->
exists m : nat, m <= two_power (U - L) /\ be_eq (f m) (f (S m)).
Lemma increasing_be_seq_1 :
forall (L U : nat) (f : nat -> bool_expr),
(forall k : nat, be_ok (var_lu L U) (f k)) ->
(forall k : nat, be_le (f k) (f (S k))) ->
exists m : nat, m <= two_power (U - L) /\ be_eq (f m) (f (S m)).
Lemma increasing_seq :
forall (n : nat) (f : nat -> nat),
(forall k : nat, f k <= n) ->
(forall k : nat, f k <= f (S k)) ->
exists m : nat, m <= n - f 0 /\ f m = f (S m).