intros P p q H' H'0 H'2.
elim (LSB_rep_min radix) with (p := p); auto; intros z E.
case
(RoundedModeRep b radix precision)
with (P := P) (p := Float z (LSB radix p)) (q := q);
auto.
cut (CompatibleP b radix P);
[ intros Cp | apply RoundedModeP_inv2 with (1 := H'); auto ].
apply (Cp p (Float z (LSB radix p)) q); auto.
apply RoundedModeBounded with (P := P) (r := FtoRradix p); auto.
intros x H'3.
replace (LSB radix p) with (Fexp (Float x (LSB radix p)));
[ idtac | simpl in |- *; auto ].
replace (LSB radix q) with (LSB radix (Float x (LSB radix p))).
apply Fexp_le_LSB.
apply LSB_comp; auto.
apply NisFzeroComp with (radix := radix) (x := q); auto.
Qed.
(* General theorem about the binade *)

(* Specifications: *)
Theorem InBinade :
forall (P : R -> float -> Prop) (p q r : float) (e : Z),
RoundedModeP b radix P ->
Fbounded b p ->
Fbounded b q ->
P (p + q)%R r ->
(- dExp b <= e)%Z ->
(Float (Zpower_nat radix (pred precision)) e <= p)%R ->
(p <= Float (pPred (vNum b)) e)%R ->
(0%nat < q)%R ->
(q < powerRZ radix e)%R -> r = p :>R \/ r = (p + powerRZ radix e)%R :>R.