(** Opposite *)
Definition Bopp opp_nan x :=
match x with
| B754_nan sx plx =>
let '(sres, plres) := opp_nan sx plx in B754_nan sres plres
| B754_infinity sx => B754_infinity (negb sx)
| B754_finite sx mx ex Hx => B754_finite (negb sx) mx ex Hx
| B754_zero sx => B754_zero (negb sx)
end.

(* Specifications: *)
Theorem Bopp_involutive :
forall opp_nan x,
is_nan x = false ->
Bopp opp_nan (Bopp opp_nan x) = x.
Theorem B2R_Bopp :
forall opp_nan x,
B2R (Bopp opp_nan x) = (- B2R x)%R.
Theorem is_finite_Bopp :
forall opp_nan x,
is_finite (Bopp opp_nan x) = is_finite x.
Theorem Bopp_involutive :
forall opp_nan x,
is_nan x = false ->
Bopp opp_nan (Bopp opp_nan x) = x.
Theorem B2R_Bopp :
forall opp_nan x,
B2R (Bopp opp_nan x) = (- B2R x)%R.
Theorem is_finite_Bopp :
forall opp_nan x,
is_finite (Bopp opp_nan x) = is_finite x.