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).