Instance expnat_nz : forall k n (p : nz n),
  nz (expnat n k).

(* Specifications: *)
Lemma expnat_2_ge_1 : forall n, (1 <= expnat 2 n)%nat.
Lemma le_expnat_2 : forall n, (n <= expnat 2 n)%nat.
Lemma expnat_1 : forall k, expnat 1%nat k = 1%nat.
Theorem expnat_base_le : forall k n1 n2, n1 <= n2 -> expnat n1 k <= expnat n2 k.
Theorem expnat_double_le : forall k n, n >= 2 -> expnat n (S k) >= 2 * expnat n k.
Theorem nat_half_plus : forall x, x > 1 -> exists a b, a > 0 /\ b <= 1 /\ x = 2 * a + b.
Theorem log2_div2 : forall x y, S y = Nat.log2 x -> Nat.log2 (div2 x) = y.
Lemma log2_0 : Nat.log2 0 = 0.
Theorem expnat_0 : forall k, k > 0 -> expnat 0 k = 0.
Theorem expnat_plus : forall k1 k2 n, expnat n (k1 + k2) = expnat n k1 * expnat n k2.
Theorem expnat_ge_1 : forall k n, n > 0 -> 1 <= expnat n k.
Theorem expnat_exp_le : forall n2 n4 n, (n2 > 0 \/ n > 0) -> n2 <= n4 -> expnat n n2 <= expnat n n4.
Lemma mult_lt_compat : forall a b c d, a < b -> c < d -> a * c < b * d.
Theorem orb_same_eq_if : forall a b c, (a = false -> b = c) -> orb a b = orb a c.