(** Remarks on [is_finite] *)

Remark is_finite_not_is_nan:
  forall (f: binary_float), is_finite _ _ f = true -> is_nan _ _ f = false.Remark is_finite_strict_finite:
  forall (f: binary_float), is_finite_strict _ _ f = true -> is_finite _ _ f = true.(** Digression on FP numbers that cannot be [-0.0]. *)

Definition is_finite_pos0 (f: binary_float) : bool :=
  match f with
  | B754_zero _ _ s => negb s
  | B754_infinity _ _ _ => false
  | B754_nan _ _ _ _ => false
  | B754_finite _ _ _ _ _ _ => true
  end.

(* Specifications: *)
Lemma Bsign_pos0: forall x, is_finite_pos0 x = true -> Bsign _ _ x = Rlt_bool (B2R _ _ x) 0%R.
Theorem B2R_inj_pos0: forall x y, is_finite_pos0 x = true -> is_finite_pos0 y = true -> B2R _ _ x = B2R _ _ y -> x = y.
Lemma Bsign_pos0: forall x, is_finite_pos0 x = true -> Bsign _ _ x = Rlt_bool (B2R _ _ x) 0%R.
Theorem B2R_inj_pos0: forall x y, is_finite_pos0 x = true -> is_finite_pos0 y = true -> B2R _ _ x = B2R _ _ y -> x = y.