intros P f s t HP Ff H1 H2.
cut (ProjectorP b radix P);
[ unfold ProjectorP in |- *; intros HP2 | apply RoundedProjector; auto ].
cut (FtoR radix (Float (Fnum f) (Zsucc (Fexp f))) = (radix * FtoR radix f)%R);
[ intros V | idtac].
2: unfold FtoR, Zsucc in |- *; simpl in |- *; ring_simplify.
2: rewrite powerRZ_add; [ simpl in |- *; ring | auto with zarith real ].
unfold FtoRradix in |- *; apply HP2; auto.
replace (FtoR radix f) with (FtoR radix s / radix)%R; auto.
replace (FtoR radix s) with (radix * FtoR radix f)%R;
[ unfold Rdiv in |- * | rewrite <- V ].
rewrite Rmult_comm; rewrite <- Rmult_assoc; rewrite Rinv_l;
auto with real zarith.
apply HP2; auto with float.
repeat (split; simpl in |- *; auto with zarith float).
rewrite V; auto.
Qed.

Theorem RoundLessThanIsMax :
forall P,
RoundedModeP P ->
forall (p m : float) (x : R), P x p -> isMax b radix x m -> (p <= m)%R.