intros a H.
replace (FtoRradix (Float 1%nat (precision + Fexp a))) with
(FtoRradix (Fshift radix precision (Float 1%nat (precision + Fexp a))));
[ idtac | apply (FshiftCorrect radix); auto ].
unfold Fshift, FtoRradix, FtoR in |- *; simpl in |- *.
rewrite <- pGivesBound.
replace (precision + Fexp a - precision)%Z with (Fexp a); [ idtac | ring ].
rewrite Rabs_mult; rewrite (fun x y => Rabs_pos_eq (powerRZ x y));
auto with real zarith.
apply Rlt_monotony_exp; auto with float real zarith.
rewrite Faux.Rabsolu_Zabs; auto with float real zarith.
Qed.

(* Specifications: *)
Theorem boundNormalMult :
forall x y : float,
Fnormal radix b x ->
Fbounded b y ->
(Rabs y * Float 1%nat (Fexp x) < radix * (Rabs x * Float 1%nat (Fexp y)))%R.