Definition N_larger_bound n b := match n with
| 0 => larger_bound xH b
| Npos p0 => larger_bound p0 b
end.
Fixpoint lower_bound p0 := match p0 with
| xH => xH
| xO p0 => xO (lower_bound p0)
| xI p0 => xO (lower_bound p0)
end.

(* Specifications: *)
Lemma lower_bound_bound p0 : larger_bound p0 (lower_bound p0).
Lemma lower_bound_pow2 k : (lower_bound (2^ k) = 2^k)%positive.
Lemma lower_bound_div_bound (p0 b : positive) :
larger_bound p0 b -> {k | (b = k * lower_bound p0)%positive}.
Lemma lower_bound_le p0 p1 :
(p0 <= p1 -> {k | lower_bound p1 = k * lower_bound p0})%positive.
Lemma larger_bound_spec p0 k:
larger_bound p0 (k * lower_bound p0).
Lemma N_larger_bound_le n n' b :
n' <= n ->
N_larger_bound n b ->
N_larger_bound n' b.
Lemma N_larger_bound_mod n m b :
m <> 0 ->
N_larger_bound m b ->
N_larger_bound (n mod m) b.