intros r p q H' H'0.
inversion H'; inversion H'0; elim H0; elim H; clear H0 H;
intros H'1 H'2 H'3 H'4.
apply (MinUniqueP r); auto.
cut (r = Fzero (- dExp b) :>R);
[ intros Eq0
| apply Rle_antisym; unfold FtoRradix, Fzero, FtoR in |- *; simpl in |- * ];
try rewrite Rmult_0_l; auto with real.
apply trans_eq with (FtoRradix (Fzero (- dExp b))).
apply sym_eq; unfold FtoRradix in |- *;
apply (RoundedProjector _ ToInfinityRoundedModeP);
auto.
apply FboundedFzero; auto.
unfold FtoRradix in Eq0; rewrite <- Eq0; auto.
unfold FtoRradix in |- *; apply (RoundedProjector _ ToInfinityRoundedModeP);
auto.
apply FboundedFzero; auto.
unfold FtoRradix in Eq0; rewrite <- Eq0; auto.
cut (r = Fzero (- dExp b) :>R);
[ intros Eq0
| apply Rle_antisym; unfold FtoRradix, Fzero, FtoR in |- *; simpl in |- * ];
try rewrite Rmult_0_l; auto with float.
apply trans_eq with (FtoRradix (Fzero (- dExp b))).
apply sym_eq; unfold FtoRradix in |- *;
apply (RoundedProjector _ ToInfinityRoundedModeP);
auto.
apply FboundedFzero; auto.
unfold FtoRradix in Eq0; rewrite <- Eq0; auto.
unfold FtoRradix in |- *; apply (RoundedProjector _ ToInfinityRoundedModeP);
auto.
apply FboundedFzero; auto.
unfold FtoRradix in Eq0; rewrite <- Eq0; auto.
apply (MaxUniqueP r); auto.
Qed.

(* Specifications: *)
Theorem MinOrMaxRep :
forall P,
MinOrMaxP P ->
forall p q : float, P p q -> exists m : Z, q = Float m (Fexp p) :>R.