Definition PdivBound bound p base := Pdivless bound p base p.

(* Specifications: *)
Theorem PdivBound_correct : forall bound p base, 1 < nat_of_P base -> nat_of_P p = oZ (fst (fst (PdivBound bound p base))) * exp (nat_of_P base) (snd (PdivBound bound p base)) + oZ (snd (fst (PdivBound bound p base))) /\ (oZ (fst (fst (PdivBound bound p base))) < nat_of_P bound /\ oZ (snd (fst (PdivBound bound p base))) < exp (nat_of_P base) (snd (PdivBound bound p base))) /\ (forall bound', nat_of_P bound = nat_of_P base * bound' -> nat_of_P bound <= nat_of_P p -> nat_of_P bound <= nat_of_P base * oZ (fst (fst (PdivBound bound p base)))).
Theorem PdivBound_correct1 : forall bound p base, 1 < nat_of_P base -> nat_of_P p = oZ (fst (fst (PdivBound bound p base))) * exp (nat_of_P base) (snd (PdivBound bound p base)) + oZ (snd (fst (PdivBound bound p base))).
Theorem PdivBound_correct2 : forall bound p base, 1 < nat_of_P base -> oZ (fst (fst (PdivBound bound p base))) < nat_of_P bound.
Theorem PdivBound_correct3 : forall bound p base, nat_of_P p < nat_of_P bound -> PdivBound bound p base = (Some _ p, None _, 0).
Theorem PdivBound_correct4 : forall bound p base bound', 1 < nat_of_P base -> nat_of_P bound = nat_of_P base * bound' -> nat_of_P bound <= nat_of_P p -> nat_of_P bound <= nat_of_P base * oZ (fst (fst (PdivBound bound p base))).