(** Properties of powers of two. *)

(* Specifications: *)
Lemma two_power_nat_O : two_power_nat O = 1.
Lemma two_power_nat_two_p:
forall x, two_power_nat x = two_p (Z.of_nat x).
Lemma two_p_monotone:
forall x y, 0 <= x <= y -> two_p x <= two_p y.
Lemma two_p_monotone_strict:
forall x y, 0 <= x < y -> two_p x < two_p y.
Lemma two_p_strict:
forall x, x >= 0 -> x < two_p x.
Lemma two_p_strict_2:
forall x, x >= 0 -> 2 * x - 1 < two_p x.
Lemma two_power_nat_O : two_power_nat O = 1.
Lemma two_power_nat_two_p:
forall x, two_power_nat x = two_p (Z.of_nat x).
Lemma two_p_monotone:
forall x y, 0 <= x <= y -> two_p x <= two_p y.
Lemma two_p_monotone_strict:
forall x y, 0 <= x < y -> two_p x < two_p y.
Lemma two_p_strict:
forall x, x >= 0 -> x < two_p x.
Lemma two_p_strict_2:
forall x, x >= 0 -> 2 * x - 1 < two_p x.