(* This file was originally generated by why.
   It can be modified; only the generated parts will be overwritten. *)
Require Export Why.
Require Export JessieGappa.


(* maintenant axiom dans JessieGappa, ou plutot floats_common_why.v

Lemma round_down_less: forall f x, (round_float f down x <= x)%R.
intros;case f;unfold round_float.
unfold gappa_rounding.
unfold rounding_float.
Admitted.

*)

(* Why obligation from file "interval_arith_full.why", line 8, characters 3-56: *)
(*Why goal*) Lemma min_po_1 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_2: (is_not_NaN x) /\ (is_not_NaN y) /\ (is_finite x) /\
                (is_finite y) /\ (Rlt (float_value x) (float_value y)) \/
                (is_minus_infinity x) /\ (is_plus_infinity y) \/
                (is_minus_infinity x) /\ (is_finite y) \/ (is_finite x) /\
                (is_plus_infinity y)),
  (float_le_float x x).
Proof.
(* 
cvc3.
Qed. pas de version svn de coq
*) 
Admitted.


(*
destruct result.
ergo.
intuition; try ergo.
unfold float_le_float, is_not_NaN, is_NaN,
   is_plus_infinity, is_minus_infinity.
destruct (float_sign y); ergo.
Save.
*)

(* Why obligation from file "interval_arith_full.why", line 8, characters 3-56: *)
(*Why goal*) Lemma min_po_2 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_2: (is_not_NaN x) /\ (is_not_NaN y) /\ (is_finite x) /\
                (is_finite y) /\ (Rlt (float_value x) (float_value y)) \/
                (is_minus_infinity x) /\ (is_plus_infinity y) \/
                (is_minus_infinity x) /\ (is_finite y) \/ (is_finite x) /\
                (is_plus_infinity y)),
  (float_le_float x y).
Proof.
(*
unfold float_le_float, is_not_NaN, is_NaN,
   is_plus_infinity, is_minus_infinity.
intuition; try ergo.
*)
Admitted.

(* Why obligation from file "interval_arith_full.why", line 8, characters 3-56: *)
(*Why goal*) Lemma min_po_3 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_3: (is_NaN x) \/ (is_NaN y) \/ (is_finite x) /\ (is_finite y) /\
                (Rge (float_value x) (float_value y)) \/
                (is_plus_infinity x) \/ (is_minus_infinity y)),
  (float_le_float y x).
Proof.
intros.
Admitted.


(* Why obligation from file "interval_arith_full.why", line 8, characters 3-56: *)
(*Why goal*) Lemma min_po_4 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_3: (is_NaN x) \/ (is_NaN y) \/ (is_finite x) /\ (is_finite y) /\
                (Rge (float_value x) (float_value y)) \/
                (is_plus_infinity x) \/ (is_minus_infinity y)),
  (float_le_float y y).
Proof.
intros.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 16, characters 3-56: *)
(*Why goal*) Lemma max_po_1 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_2: (is_not_NaN x) /\ (is_not_NaN y) /\ (is_finite x) /\
                (is_finite y) /\ (Rgt (float_value x) (float_value y)) \/
                (is_plus_infinity x) /\ (is_minus_infinity y) \/
                (is_plus_infinity x) /\ (is_finite y) \/ (is_finite x) /\
                (is_minus_infinity y)),
  (float_le_float x x).
Proof.
(*
destruct result.
ergo.
intuition; try ergo.
unfold float_le_float, is_not_NaN, is_NaN,
   is_plus_infinity, is_minus_infinity.
destruct (float_sign y); ergo.
*)
Admitted.

(* Why obligation from file "interval_arith_full.why", line 16, characters 3-56: *)
(*Why goal*) Lemma max_po_2 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_2: (is_not_NaN x) /\ (is_not_NaN y) /\ (is_finite x) /\
                (is_finite y) /\ (Rgt (float_value x) (float_value y)) \/
                (is_plus_infinity x) /\ (is_minus_infinity y) \/
                (is_plus_infinity x) /\ (is_finite y) \/ (is_finite x) /\
                (is_minus_infinity y)),
  (float_le_float y x).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 16, characters 3-56: *)
(*Why goal*) Lemma max_po_3 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_3: (is_NaN x) \/ (is_NaN y) \/ (is_finite x) /\ (is_finite y) /\
                (Rle (float_value x) (float_value y)) \/
                (is_minus_infinity x) \/ (is_plus_infinity y)),
  (float_le_float x y).
Proof.
intros.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 16, characters 3-56: *)
(*Why goal*) Lemma max_po_4 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y)),
  forall (HW_3: (is_NaN x) \/ (is_NaN y) \/ (is_finite x) /\ (is_finite y) /\
                (Rle (float_value x) (float_value y)) \/
                (is_minus_infinity x) \/ (is_plus_infinity y)),
  (float_le_float y y).
Proof.
intros.
Admitted.

(*Why predicate*) Definition float_less_than_real  (x:gen_float) (y:R)
  := (is_finite x) /\ (Rle (float_value x) y) \/ (is_minus_infinity x).

(*Why predicate*) Definition real_less_than_float  (x:R) (y:gen_float)
  := (is_finite y) /\ (Rle x (float_value y)) \/ (is_plus_infinity y).

(*
Dp_hint round_down_le.
Dp_hint round_up_ge.
*)
 
(* Why obligation from file "interval_arith_full.why", line 39, characters 2-128: *)
(*Why goal*) Lemma mul_dn_po_1 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y) /\
                (((is_infinite x) \/ (is_infinite y) -> (diff_sign x y))) /\
                (((is_infinite x) /\ (is_finite y) ->
                  ~(eq (float_value y) (0)%R))) /\
                (((is_infinite y) /\ (is_finite x) ->
                  ~(eq (float_value x) (0)%R)))),
  forall (result: gen_float),
  forall (HW_2: (((is_NaN x) \/ (is_NaN y) -> (is_NaN result))) /\
                (((is_gen_zero x) /\ (is_infinite y) -> (is_NaN result))) /\
                (((is_finite x) /\ (is_infinite y) /\
                  ~(eq (float_value x) (0)%R) -> (is_infinite result))) /\
                (((is_infinite x) /\ (is_gen_zero y) -> (is_NaN result))) /\
                (((is_infinite x) /\ (is_finite y) /\
                  ~(eq (float_value y) (0)%R) -> (is_infinite result))) /\
                (((is_infinite x) /\ (is_infinite y) -> (is_infinite result))) /\
                (((is_finite x) /\ (is_finite y) /\
                  (no_overflow
                   Double down (Rmult (float_value x) (float_value y))) ->
                  (is_finite result) /\
                  (eq (float_value result) (round_float
                                            Double down (Rmult
                                                         (float_value x) (
                                                         float_value y)))))) /\
                (((is_finite x) /\ (is_finite y) /\
                  ~(no_overflow
                    Double down (Rmult (float_value x) (float_value y))) ->
                  (overflow_value Double down result))) /\
                (product_sign result x y) /\
                (eq (exact_value result) (Rmult
                                          (exact_value x) (exact_value y))) /\
                (eq (model_value result) (Rmult
                                          (model_value x) (model_value y)))),
  (float_less_than_real result (Rmult (float_value x) (float_value y))).
Proof.
(*
unfold float_less_than_real,product_sign, is_not_NaN,is_finite,is_minus_infinity.
(*
intuition.
*)
intros.
decompose [and or] HW_2; clear HW_2.
decompose [and] HW_1; clear HW_1.
elim H9.
elim H13.
intros.
case (overflow_dec Double down (float_value x * float_value y)).
(* replaced by cvc3.
intros.
left.
generalize (H5 (conj H16 (conj H14 H17))).
intros (H18,H19).
split; trivial.
rewrite H19.
apply round_down_le (* Admitted above *).
*)
cvc3.
intros.
generalize (proj1 (H6 (conj H16 (conj H14 H17))) (refl_equal _)).
clear H6.
intros H6.
case (same_sign_dec x y).

intros.
rewrite H8 in *;auto.
left.
split.
(* replaced by cvc3.
clear -H6.
intuition.
*)
cvc3.
generalize (proj2 H6 (refl_equal _)); clear H6; intros (H6, h1).
rewrite h1.
unfold no_overflow in H17.
unfold same_sign in H18.
case (Req_dec (genf x) 0%R).
intro.
contradiction H17.
unfold float_value.
rewrite H19.
rewrite Rmult_0_l.
rewrite round_of_zero,Rabs_R0.
unfold max_gen_float.
admit. (*as in JessieGappa*)
intro x_not_zero.
case (Req_dec (genf y) 0%R).
intro.
contradiction H17.
unfold float_value.
rewrite H19.
rewrite Rmult_0_r.
rewrite round_of_zero,Rabs_R0.
admit. (*as in JessieGappa*)
intro y_not_zero.
generalize (sign_invariant x H16 x_not_zero); intro x_sign_inv.
generalize (sign_invariant y H14 y_not_zero); intro y_sign_inv.
destruct (float_sign x).
destruct (float_sign y).
unfold same_sign_real_bool in *.
unfold float_value in *.
clear -x_sign_inv y_sign_inv H17.
apply Rnot_lt_le.
intros H.
apply H17.
rewrite Rabs_right.
apply Rlt_le.
apply Rle_lt_trans with (2 := H).
apply round_down_le (* Admitted above *).
replace R0 with (round_float Double down 0).
unfold round_float.
apply Rle_ge.
apply Gappa_round.round_extension_monotone.
apply Rlt_le.
admit.
apply round_of_zero.
discriminate.
destruct (float_sign y).
discriminate.
unfold same_sign_real_bool in *.
unfold float_value.
admit. (* reasoning of reals and Rabs as above *)


intro; right.
clear -H10 H6 H18;intuition.

intros; right.
clear -H15 H10 H14 H16 H0;intuition.

elim H13.
intros; right.
clear -H12 H10 H14 H16 H3;intuition.

intros; right.
clear -H12 H15 H10 H14 H16 H4; intuition.
*)
Admitted.




(* Why obligation from file "interval_arith_full.why", line 39, characters 2-128: *)
(*Why goal*) Lemma mul_dn_po_2 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y) /\
                (((is_infinite x) \/ (is_infinite y) -> (diff_sign x y))) /\
                (((is_infinite x) /\ (is_finite y) ->
                  ~(eq (float_value y) (0)%R))) /\
                (((is_infinite y) /\ (is_finite x) ->
                  ~(eq (float_value x) (0)%R)))),
  forall (result: gen_float),
  forall (HW_2: (((is_NaN x) \/ (is_NaN y) -> (is_NaN result))) /\
                (((is_gen_zero x) /\ (is_infinite y) -> (is_NaN result))) /\
                (((is_finite x) /\ (is_infinite y) /\
                  ~(eq (float_value x) (0)%R) -> (is_infinite result))) /\
                (((is_infinite x) /\ (is_gen_zero y) -> (is_NaN result))) /\
                (((is_infinite x) /\ (is_finite y) /\
                  ~(eq (float_value y) (0)%R) -> (is_infinite result))) /\
                (((is_infinite x) /\ (is_infinite y) -> (is_infinite result))) /\
                (((is_finite x) /\ (is_finite y) /\
                  (no_overflow
                   Double down (Rmult (float_value x) (float_value y))) ->
                  (is_finite result) /\
                  (eq (float_value result) (round_float
                                            Double down (Rmult
                                                         (float_value x) (
                                                         float_value y)))))) /\
                (((is_finite x) /\ (is_finite y) /\
                  ~(no_overflow
                    Double down (Rmult (float_value x) (float_value y))) ->
                  (overflow_value Double down result))) /\
                (product_sign result x y) /\
                (eq (exact_value result) (Rmult
                                          (exact_value x) (exact_value y))) /\
                (eq (model_value result) (Rmult
                                          (model_value x) (model_value y)))),
  forall (HW_3: (is_infinite x) \/ (is_infinite y)),
  (is_minus_infinity result).
Proof.
intros.
Admitted.


(* Why obligation from file "interval_arith_full.why", line 81, characters 10-74: *)
(*Why goal*) Lemma mul_up_po_1 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y) /\
                (((is_infinite x) \/ (is_infinite y) -> (same_sign x y))) /\
                (((is_infinite x) /\ (is_finite y) ->
                  ~(eq (float_value y) (0)%R))) /\
                (((is_infinite y) /\ (is_finite x) ->
                  ~(eq (float_value x) (0)%R)))),
  forall (HW_2: ~(eq (float_value y) (0)%R)),
  (Rge (Rabs (float_value y))
   (1 / 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784)%R).
Proof.
Admitted.




(* Why obligation from file "interval_arith_full.why", line 84, characters 0-126: *)
(*Why goal*) Lemma mul_up_po_2 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y) /\
                (((is_infinite x) \/ (is_infinite y) -> (same_sign x y))) /\
                (((is_infinite x) /\ (is_finite y) ->
                  ~(eq (float_value y) (0)%R))) /\
                (((is_infinite y) /\ (is_finite x) ->
                  ~(eq (float_value x) (0)%R)))),
  forall (HW_3: (~(eq (float_value y) (0)%R) ->
                 (Rge (Rabs (float_value y))
                  (1 / 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784)%R))),
  forall (result: gen_float),
  forall (HW_4: (((is_NaN y) -> (is_NaN result))) /\
                (((is_infinite y) -> (is_infinite result))) /\
                (((is_finite y) /\
                  (no_overflow Double down (Ropp (float_value y))) ->
                  (is_finite result) /\
                  (eq (float_value result) (round_float
                                            Double down (Ropp (float_value y)))))) /\
                (((is_finite y) /\
                  ~(no_overflow Double down (Ropp (float_value y))) ->
                  (overflow_value Double down result))) /\
                (diff_sign result y) /\
                (eq (exact_value result) (Ropp (exact_value y))) /\
                (eq (model_value result) (Ropp (model_value y)))),
  forall (result0: gen_float),
  forall (HW_5: (((is_NaN x) \/ (is_NaN result) -> (is_NaN result0))) /\
                (((is_gen_zero x) /\ (is_infinite result) -> (is_NaN result0))) /\
                (((is_finite x) /\ (is_infinite result) /\
                  ~(eq (float_value x) (0)%R) -> (is_infinite result0))) /\
                (((is_infinite x) /\ (is_gen_zero result) -> (is_NaN result0))) /\
                (((is_infinite x) /\ (is_finite result) /\
                  ~(eq (float_value result) (0)%R) -> (is_infinite result0))) /\
                (((is_infinite x) /\ (is_infinite result) ->
                  (is_infinite result0))) /\
                (((is_finite x) /\ (is_finite result) /\
                  (no_overflow
                   Double down (Rmult (float_value x) (float_value result))) ->
                  (is_finite result0) /\
                  (eq (float_value result0) (round_float
                                             Double down (Rmult
                                                          (float_value x) (
                                                          float_value result)))))) /\
                (((is_finite x) /\ (is_finite result) /\
                  ~(no_overflow
                    Double down (Rmult (float_value x) (float_value result))) ->
                  (overflow_value Double down result0))) /\
                (product_sign result0 x result) /\
                (eq (exact_value result0) (Rmult
                                           (exact_value x) (exact_value
                                                            result))) /\
                (eq (model_value result0) (Rmult
                                           (model_value x) (model_value
                                                            result)))),
  forall (result1: gen_float),
  forall (HW_6: (((is_NaN result0) -> (is_NaN result1))) /\
                (((is_infinite result0) -> (is_infinite result1))) /\
                (((is_finite result0) /\
                  (no_overflow Double down (Ropp (float_value result0))) ->
                  (is_finite result1) /\
                  (eq (float_value result1) (round_float
                                             Double down (Ropp
                                                          (float_value
                                                           result0)))))) /\
                (((is_finite result0) /\
                  ~(no_overflow Double down (Ropp (float_value result0))) ->
                  (overflow_value Double down result1))) /\
                (diff_sign result1 result0) /\
                (eq (exact_value result1) (Ropp (exact_value result0))) /\
                (eq (model_value result1) (Ropp (model_value result0)))),
  (real_less_than_float (Rmult (float_value x) (float_value y)) result1).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 84, characters 0-126: *)
(*Why goal*) Lemma mul_up_po_3 : 
  forall (x: gen_float),
  forall (y: gen_float),
  forall (HW_1: (is_not_NaN x) /\ (is_not_NaN y) /\
                (((is_infinite x) \/ (is_infinite y) -> (same_sign x y))) /\
                (((is_infinite x) /\ (is_finite y) ->
                  ~(eq (float_value y) (0)%R))) /\
                (((is_infinite y) /\ (is_finite x) ->
                  ~(eq (float_value x) (0)%R)))),
  forall (HW_3: (~(eq (float_value y) (0)%R) ->
                 (Rge (Rabs (float_value y))
                  (1 / 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784)%R))),
  forall (result: gen_float),
  forall (HW_4: (((is_NaN y) -> (is_NaN result))) /\
                (((is_infinite y) -> (is_infinite result))) /\
                (((is_finite y) /\
                  (no_overflow Double down (Ropp (float_value y))) ->
                  (is_finite result) /\
                  (eq (float_value result) (round_float
                                            Double down (Ropp (float_value y)))))) /\
                (((is_finite y) /\
                  ~(no_overflow Double down (Ropp (float_value y))) ->
                  (overflow_value Double down result))) /\
                (diff_sign result y) /\
                (eq (exact_value result) (Ropp (exact_value y))) /\
                (eq (model_value result) (Ropp (model_value y)))),
  forall (result0: gen_float),
  forall (HW_5: (((is_NaN x) \/ (is_NaN result) -> (is_NaN result0))) /\
                (((is_gen_zero x) /\ (is_infinite result) -> (is_NaN result0))) /\
                (((is_finite x) /\ (is_infinite result) /\
                  ~(eq (float_value x) (0)%R) -> (is_infinite result0))) /\
                (((is_infinite x) /\ (is_gen_zero result) -> (is_NaN result0))) /\
                (((is_infinite x) /\ (is_finite result) /\
                  ~(eq (float_value result) (0)%R) -> (is_infinite result0))) /\
                (((is_infinite x) /\ (is_infinite result) ->
                  (is_infinite result0))) /\
                (((is_finite x) /\ (is_finite result) /\
                  (no_overflow
                   Double down (Rmult (float_value x) (float_value result))) ->
                  (is_finite result0) /\
                  (eq (float_value result0) (round_float
                                             Double down (Rmult
                                                          (float_value x) (
                                                          float_value result)))))) /\
                (((is_finite x) /\ (is_finite result) /\
                  ~(no_overflow
                    Double down (Rmult (float_value x) (float_value result))) ->
                  (overflow_value Double down result0))) /\
                (product_sign result0 x result) /\
                (eq (exact_value result0) (Rmult
                                           (exact_value x) (exact_value
                                                            result))) /\
                (eq (model_value result0) (Rmult
                                           (model_value x) (model_value
                                                            result)))),
  forall (result1: gen_float),
  forall (HW_6: (((is_NaN result0) -> (is_NaN result1))) /\
                (((is_infinite result0) -> (is_infinite result1))) /\
                (((is_finite result0) /\
                  (no_overflow Double down (Ropp (float_value result0))) ->
                  (is_finite result1) /\
                  (eq (float_value result1) (round_float
                                             Double down (Ropp
                                                          (float_value
                                                           result0)))))) /\
                (((is_finite result0) /\
                  ~(no_overflow Double down (Ropp (float_value result0))) ->
                  (overflow_value Double down result1))) /\
                (diff_sign result1 result0) /\
                (eq (exact_value result1) (Ropp (exact_value result0))) /\
                (eq (model_value result1) (Ropp (model_value result0)))),
  forall (HW_7: (is_infinite x) \/ (is_infinite y)),
  (is_plus_infinity result1).
Proof.
intros.
Admitted.

(*Why predicate*) Definition is_interval  (l:gen_float) (u:gen_float)
  := ((is_finite l) \/ (is_infinite l) /\ (float_sign l) = Negative) /\
     ((is_finite u) \/ (is_infinite u) /\ (float_sign u) = Positive).

(*Why predicate*) Definition in_interval  (a:R) (l:gen_float) (u:gen_float)
  := (float_less_than_real l a) /\ (real_less_than_float a u).


(* Why obligation from file "interval_arith_full.why", line 117, characters 2-113: *)
(*Why goal*) Lemma add_po_1 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (result: gen_float),
  forall (HW_1: (((is_NaN xl) \/ (is_NaN yl) -> (is_NaN result))) /\
                (((is_finite xl) /\ (is_infinite yl) ->
                  (is_infinite result) /\ (same_sign result yl))) /\
                (((is_infinite xl) /\ (is_finite yl) ->
                  (is_infinite result) /\ (same_sign result xl))) /\
                (((is_infinite xl) /\ (is_infinite yl) /\
                  (same_sign xl yl) -> (is_infinite result) /\
                  (same_sign result xl))) /\
                (((is_infinite xl) /\ (is_infinite yl) /\
                  (diff_sign xl yl) -> (is_NaN result))) /\
                (((is_finite xl) /\ (is_finite yl) /\
                  (no_overflow
                   Double down (Rplus (float_value xl) (float_value yl))) ->
                  (is_finite result) /\
                  (eq (float_value result) (round_float
                                            Double down (Rplus
                                                         (float_value xl) (
                                                         float_value yl)))) /\
                  (sign_zero_result down result))) /\
                (((is_finite xl) /\ (is_finite yl) /\
                  ~(no_overflow
                    Double down (Rplus (float_value xl) (float_value yl))) ->
                  (same_sign_real
                   result (Rplus (float_value xl) (float_value yl))) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (Rplus
                                          (exact_value xl) (exact_value yl))) /\
                (eq (model_value result) (Rplus
                                          (model_value xl) (model_value yl)))),
  forall (zl: gen_float),
  forall (HW_2: zl = result),
  forall (result0: gen_float),
  forall (HW_3: (((is_NaN xu) -> (is_NaN result0))) /\
                (((is_infinite xu) -> (is_infinite result0))) /\
                (((is_finite xu) /\
                  (no_overflow Double down (Ropp (float_value xu))) ->
                  (is_finite result0) /\
                  (eq (float_value result0) (round_float
                                             Double down (Ropp
                                                          (float_value xu)))))) /\
                (((is_finite xu) /\
                  ~(no_overflow Double down (Ropp (float_value xu))) ->
                  (overflow_value Double down result0))) /\
                (diff_sign result0 xu) /\
                (eq (exact_value result0) (Ropp (exact_value xu))) /\
                (eq (model_value result0) (Ropp (model_value xu)))),
  forall (result1: gen_float),
  forall (HW_4: (((is_NaN result0) \/ (is_NaN yu) -> (is_NaN result1))) /\
                (((is_finite result0) /\ (is_infinite yu) ->
                  (is_infinite result1) /\ (diff_sign result1 yu))) /\
                (((is_infinite result0) /\ (is_finite yu) ->
                  (is_infinite result1) /\ (same_sign result1 result0))) /\
                (((is_infinite result0) /\ (is_infinite yu) /\
                  (same_sign result0 yu) -> (is_NaN result1))) /\
                (((is_infinite result0) /\ (is_infinite yu) /\
                  (diff_sign result0 yu) -> (is_infinite result1) /\
                  (same_sign result1 result0))) /\
                (((is_finite result0) /\ (is_finite yu) /\
                  (no_overflow
                   Double down (Rminus (float_value result0) (float_value yu))) ->
                  (is_finite result1) /\
                  (eq (float_value result1) (round_float
                                             Double down (Rminus
                                                          (float_value
                                                           result0) (
                                                          float_value yu)))) /\
                  (sign_zero_result down result1))) /\
                (((is_finite result0) /\ (is_finite yu) /\
                  ~(no_overflow
                    Double down (Rminus
                                 (float_value result0) (float_value yu))) ->
                  (same_sign_real
                   result1 (Rminus (float_value result0) (float_value yu))) /\
                  (overflow_value Double down result1))) /\
                (eq (exact_value result1) (Rminus
                                           (exact_value result0) (exact_value
                                                                  yu))) /\
                (eq (model_value result1) (Rminus
                                           (model_value result0) (model_value
                                                                  yu)))),
  forall (result2: gen_float),
  forall (HW_5: (((is_NaN result1) -> (is_NaN result2))) /\
                (((is_infinite result1) -> (is_infinite result2))) /\
                (((is_finite result1) /\
                  (no_overflow Double down (Ropp (float_value result1))) ->
                  (is_finite result2) /\
                  (eq (float_value result2) (round_float
                                             Double down (Ropp
                                                          (float_value
                                                           result1)))))) /\
                (((is_finite result1) /\
                  ~(no_overflow Double down (Ropp (float_value result1))) ->
                  (overflow_value Double down result2))) /\
                (diff_sign result2 result1) /\
                (eq (exact_value result2) (Ropp (exact_value result1))) /\
                (eq (model_value result2) (Ropp (model_value result1)))),
  forall (zu: gen_float),
  forall (HW_6: zu = result2),
  forall (a: R),
  forall (b: R),
  forall (HW_7: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rplus a b) zl zu).
Proof.
(* old proof in Coq v8.2
unfold in_interval, float_less_than_real, real_less_than_float.
intros.
decompose [and or] HW_1; clear HW_1.
decompose [and or] HW_3; clear HW_3.
decompose [and or] HW_4; clear HW_4.
decompose [and or] HW_5; clear HW_5.
decompose [and or] HW_7; clear HW_7.
subst.
unfold is_finite,is_infinite,is_plus_infinity,is_minus_infinity in *.
split.
case (overflow_dec Double down (float_value xl + float_value yl)).
intro.
left.
generalize (H4 (conj H33 (conj H30 H32))); intros (h1,h2).
split;trivial.
rewrite h2.
apply Rle_trans with (float_value xl + float_value yl)%R.
apply round_down_less (* Admitted above *).
auto with real.
intro.
generalize (H5 (conj H33 (conj H30 H32)));intros (h2, h3).
unfold same_sign_real in h2.
unfold overflow_value in h3.
destruct h3;clear H41.
unfold float_value in *.
unfold no_overflow in H32.
case (Req_dec (genf xl) 0).
intro.
case (Req_dec (genf yl) 0).
intro.
contradiction H32.
rewrite H41, H42.
rewrite Rplus_0_l.
rewrite round_of_zero,Rabs_R0.
admit. (*as in JessieGappa *)
intro.
rewrite H41 in h2.
rewrite Rplus_0_l in h2.
case (sign_dec yl).
intro.
generalize (sign_invariant yl H30 H42);intro yl_sign.
rewrite H43 in yl_sign.
unfold same_sign_real_bool in yl_sign.
right.
generalize ((proj1 (same_sign_real_bool_correct2 (float_sign result) 
(genf yl) h2)) yl_sign);intro.
clear -H40 H44; intuition.
intro.
generalize (sign_invariant yl H30 H42);intro yl_sign.
rewrite H43 in yl_sign.
unfold same_sign_real_bool in yl_sign.
left.
generalize ((proj1 (same_sign_real_bool_correct3 (float_sign result) 
(genf yl) h2)) yl_sign);intro.
clear -H40 H44 H41 H32 H35 H38 yl_sign.
split;intuition.
rewrite H2.
rewrite Rabs_right in H32.
rewrite H41, Rplus_0_l in H32.
apply Rle_trans with (round_float Double down (genf yl)).
apply Rge_le.
apply Rgt_ge; apply Rnot_le_gt;auto.
apply Rle_trans with (genf yl).
apply round_down_less. (* Admitted above *) 
rewrite <- Rplus_0_l with (genf yl); rewrite <- H41; auto with real.
rewrite H41, Rplus_0_l.
admit. (* round_float_of_pos_real_underflow in JessieGappa *)
intro.
case (Req_dec (genf yl) 0).
intro.
admit. (* as above *)

intro.
case (Rtotal_order (genf xl + genf yl) 0).
intro.
right.
generalize ((proj1 (same_sign_real_bool_correct2 (float_sign result) 
(genf xl + genf yl) h2)) H43);intro.
split;auto.
clear -H40 H44;intuition.
intro h3.
destruct h3.
rewrite H43 in h2.
generalize (same_sign_real_bool_zero1 (float_sign result));intro.
contradiction H44.
generalize ((proj1 (same_sign_real_bool_correct3 (float_sign result) 
(genf xl + genf yl) h2)) H43);intro.
left.
rewrite H44 in H40.
clear -H40 H35 H38 H32 H43.
split;intuition.
rewrite H2.
rewrite Rabs_right in H32.
apply Rle_trans with (round_float Double down (genf xl + genf yl)).
apply Rlt_le.
apply Rnot_le_lt;auto.
apply Rle_trans with (genf xl + genf yl)%R.
apply round_down_less (* Admitted above *).
auto with real.
admit. (* round_float_of_pos_real_underflow in JessieGappa *)

case (overflow_dec Double down (- float_value xu)).
intro.
generalize (H9 (conj H34 H32));intros (h1,h2).
case (overflow_dec Double down (float_value result0 - float_value yu)).
intro.
generalize (H20 (conj h1 (conj H37 H40)));intros (h3,h4).
unfold no_overflow in H40.
rewrite <- h4 in H40.
generalize (bounded_real_no_overflow Double down 
(float_value result1) H40);intro.
case (overflow_dec Double down (-float_value result1)).
intro.
generalize (H25 (conj h3 H42));intros (h5,h6).
left.
split;auto.
rewrite h6,h4,h2.
apply Rle_trans with (- ((- (float_value xu)) - float_value yu))%R.
rewrite (Ropp_minus_distr (-float_value xu) (float_value yu)).
admit.
admit. (*apply round_down_less:Admitted above with some modification *)
intro.
generalize (proj1 (H27 (conj h3 H42)));intro.
case (Rtotal_order (float_value result1) 0);intro.
generalize (finite_sign_neg1 result1 (conj h3 H44));intro.
unfold diff_sign in H28.
rewrite H45 in H28.
generalize (sign_not_neg_pos result2 H28);intro.
rewrite H46 in H43.
left.
clear -H43 H36 H39 H32 H40 H41 H42.
split; intuition.
rewrite H2.
unfold no_overflow in *.
apply Rle_trans with (float_value xu + float_value yu)%R.
auto with real.
admit. (* !!!!*)
destruct H44.
contradiction H42.
rewrite H44,Ropp_0.
apply bounded_real_no_overflow.
rewrite Rabs_R0.
admit.
generalize (finite_sign_pos1 result1 (conj h3 H44));intro.
unfold diff_sign in H28.
rewrite H45 in H28.
generalize (sign_not_pos_neg result2 H28);intro.
rewrite H46 in H43.
right.

 







H28 : diff_sign result2 result1


generalize (H21 (conj h1 (conj H37 H40)));intros (h5,h6).
unfold overflow_value in h6.
destruct h6; clear H42.
unfold same_sign_real in h5.
unfold no_overflow in H40.
generalize (same_sign_real_bool_zero3 (float_sign result1) 
(float_value result0 - float_value yu) h5);intro.
case (Req_dec (float_value xu) 0).
intro.
rewrite H43 in h2.
rewrite Ropp_0 in h2.
assert (float_value result0= 0)%R.
rewrite h2.
unfold round_float,down;gappa.
rewrite H44 in h5.
case (sign_dec yu).
intro.

rewrite Rminus_0_l in h2.




case (Req_dec (genf yu) 0).
intro.
rewrite H43 in h5


destruct 
unfold no_overflow in H41.
unfold diff_sign,float_value in *.
case (Req_dec (genf result0 - genf yu) 0).
intro.
rewrite H42 in h4.
(*sign of 0=result1 ????).
 

case (sign_dec xu).
intro.
assert (float_sign result0=Positive).
rewrite H42 in H12;apply (sign_not_neg_pos result0 H12).
case (Rtotal_order (genf result0 - genf yu) 0).


admit.
admit.
admit.

intros.
destruct H32.
destruct H36.
destruct H37.
destruct H38.
split.
admit. (*as above *)
case (overflow_dec Double down (- float_value xu)).
intro.
generalize (H9 (conj H36 H43));intros (h1,h2).
generalize (H17 (conj h1 H32));intros (h3,h4).
generalize (H26 (h3)); intros (h5,h6).
right.
split;auto.
unfold diff_sign in *.
rewrite H39 in h4.
clear -h4 h6;
assert (float_sign result1=Negative) by (apply (sign_not_pos_neg result1 h4));
rewrite H in h6;apply (sign_not_neg_pos result2 h6).
intro.
generalize (proj1 (H11 (conj H36 H43)) (refl_equal _)).
clear H11;intros.
case (sign_dec xu).
intro.
unfold diff_sign in*.
rewrite H44 in H12.
assert (float_sign result0 =Positive).
apply (sign_not_neg_pos result0 H12).
generalize ((proj2 H11) H45);intros (h1,h2).
generalize (H17 (conj h1 H32));intros (h3,h4).
generalize (H26 (h3)); intros (h5,h6).
right.
split;auto.
rewrite H39 in h4.
assert (float_sign result1=Negative) by (apply (sign_not_pos_neg result1 h4)).
rewrite H46 in h6.
apply (sign_not_neg_pos result2 h6).
intro.
unfold diff_sign in*.
rewrite H44 in H12.
assert (float_sign result0 =Negative).
apply (sign_not_pos_neg result0 H12).
generalize ((proj1 H11) H45); intro h.
assert (float_sign result0 <> float_sign yu).
rewrite H45,H39;discriminate.
generalize (H19 (conj h (conj H32 H46)));intros (h1,h2).
unfold same_sign in h2;rewrite H45 in h2.
generalize (H26 (h1)); intros (h4,h5).
right;rewrite h2 in h5.
split;auto.
apply (sign_not_neg_pos result2 h5).


intros.
destruct H32.
destruct H36.
destruct H37.
split.
admit.  (*as above *)
*)
*)
Admitted.




(*Why axiom*) Lemma help :
  (forall (x:R),
   (forall (y:R),
    (forall (z:R),
     (forall (t:R),
      (((Rle (0)%R x) /\ (Rle x y)) /\ (Rle (0)%R z) /\ (Rle z t) ->
       (Rle (Rmult x z) (Rmult y t))))))).
Admitted.

(* Why obligation from file "interval_arith_full.why", line 135, characters 8-29: *)
(*Why goal*) Lemma mul_po_1 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  (eq (float_value zero) (0)%R).
Proof.
(*
intros.
unfold in_interval,is_interval in *.
destruct result0.
destruct result0.
admit.
admit.
destruct result0.
admit.
ergo.
cvc3.
assert (yl_positive: ((float_value yl) >=0)%R).
cvc3.
destruct result0.
*)
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 16-28: *)
(*Why goal*) Lemma mul_po_2 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 16-28: *)
(*Why goal*) Lemma mul_po_3 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 16-28: *)
(*Why goal*) Lemma mul_po_4 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_9: (is_infinite xl) \/ (is_infinite yu)),
  (diff_sign xl yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 16-28: *)
(*Why goal*) Lemma mul_po_5 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_10: (is_infinite xl) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 16-28: *)
(*Why goal*) Lemma mul_po_6 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_11: (is_infinite yu) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 31-43: *)
(*Why goal*) Lemma mul_po_7 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  (is_not_NaN xu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 31-43: *)
(*Why goal*) Lemma mul_po_8 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 31-43: *)
(*Why goal*) Lemma mul_po_9 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_14: (is_infinite xu) \/ (is_infinite yl)),
  (diff_sign xu yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 31-43: *)
(*Why goal*) Lemma mul_po_10 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_15: (is_infinite xu) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 31-43: *)
(*Why goal*) Lemma mul_po_11 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_16: (is_infinite yl) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 11-44: *)
(*Why goal*) Lemma mul_po_12 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  (is_not_NaN result0).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 141, characters 11-44: *)
(*Why goal*) Lemma mul_po_13 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  (is_not_NaN result1).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 23-35: *)
(*Why goal*) Lemma mul_po_14 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 23-35: *)
(*Why goal*) Lemma mul_po_15 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_22: (is_infinite xl) \/ (is_infinite yl)),
  (same_sign xl yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 23-35: *)
(*Why goal*) Lemma mul_po_16 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_23: (is_infinite xl) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 23-35: *)
(*Why goal*) Lemma mul_po_17 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_24: (is_infinite yl) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 38-50: *)
(*Why goal*) Lemma mul_po_18 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  (is_not_NaN yu).
Proof.
Admitted.


(* Why obligation from file "interval_arith_full.why", line 142, characters 38-50: *)
(*Why goal*) Lemma mul_po_19 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_27: (is_infinite xu) \/ (is_infinite yu)),
  (same_sign xu yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 38-50: *)
(*Why goal*) Lemma mul_po_20 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_28: (is_infinite xu) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 38-50: *)
(*Why goal*) Lemma mul_po_21 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_29: (is_infinite yu) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 18-51: *)
(*Why goal*) Lemma mul_po_22 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_30: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result4: gen_float),
  forall (HW_31: (real_less_than_float
                  (Rmult (float_value xu) (float_value yu)) result4) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_plus_infinity result4)))),
  (is_not_NaN result3).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 142, characters 18-51: *)
(*Why goal*) Lemma mul_po_23 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_30: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result4: gen_float),
  forall (HW_31: (real_less_than_float
                  (Rmult (float_value xu) (float_value yu)) result4) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_plus_infinity result4)))),
  (is_not_NaN result4).
Proof.
Admitted.


(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_24 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_30: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result4: gen_float),
  forall (HW_31: (real_less_than_float
                  (Rmult (float_value xu) (float_value yu)) result4) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_plus_infinity result4)))),
  forall (HW_32: (is_not_NaN result3) /\ (is_not_NaN result4)),
  forall (result5: gen_float),
  forall (HW_33: (float_le_float result3 result5) /\
                 (float_le_float result4 result5)),
  forall (tu: gen_float),
  forall (HW_34: tu = result5),
  (is_interval tl tu).
Proof.
intros.

Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_25 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_8: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                (is_finite zero) /\
                (Rgt (float_value yu) (float_value zero)) \/
                (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity yu) /\ (is_finite zero) \/
                (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_12: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_13: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (HW_17: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_18: (float_less_than_real
                  result1 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result1)))),
  forall (HW_19: (is_not_NaN result0) /\ (is_not_NaN result1)),
  forall (result2: gen_float),
  forall (HW_20: (float_le_float result2 result0) /\
                 (float_le_float result2 result1)),
  forall (tl: gen_float),
  forall (HW_21: tl = result2),
  forall (HW_25: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result3: gen_float),
  forall (HW_26: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result3) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result3)))),
  forall (HW_30: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result4: gen_float),
  forall (HW_31: (real_less_than_float
                  (Rmult (float_value xu) (float_value yu)) result4) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_plus_infinity result4)))),
  forall (HW_32: (is_not_NaN result3) /\ (is_not_NaN result4)),
  forall (result5: gen_float),
  forall (HW_33: (float_le_float result3 result5) /\
                 (float_le_float result4 result5)),
  forall (tu: gen_float),
  forall (HW_34: tu = result5),
  forall (a: R),
  forall (b: R),
  forall (HW_35: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
intros.
unfold in_interval,float_less_than_real,real_less_than_float in *.
split.
Admitted.



(* Why obligation from file "interval_arith_full.why", line 146, characters 11-23: *)
(*Why goal*) Lemma mul_po_26 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  (is_not_NaN xu).
Proof.

Admitted.

(* Why obligation from file "interval_arith_full.why", line 146, characters 11-23: *)
(*Why goal*) Lemma mul_po_27 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 146, characters 11-23: *)
(*Why goal*) Lemma mul_po_28 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_37: (is_infinite xu) \/ (is_infinite yl)),
  (diff_sign xu yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 146, characters 11-23: *)
(*Why goal*) Lemma mul_po_29 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_38: (is_infinite xu) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 146, characters 11-23: *)
(*Why goal*) Lemma mul_po_30 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_39: (is_infinite yl) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 147, characters 18-30: *)
(*Why goal*) Lemma mul_po_31 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 147, characters 18-30: *)
(*Why goal*) Lemma mul_po_32 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 147, characters 18-30: *)
(*Why goal*) Lemma mul_po_33 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  forall (HW_43: (is_infinite xl) \/ (is_infinite yl)),
  (same_sign xl yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 147, characters 18-30: *)
(*Why goal*) Lemma mul_po_34 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  forall (HW_44: (is_infinite xl) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 147, characters 18-30: *)
(*Why goal*) Lemma mul_po_35 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  forall (HW_45: (is_infinite yl) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_36 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  forall (HW_46: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_47: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result1) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_48: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_37 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_7: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                (is_finite zero) /\
                (Rlt (float_value yl) (float_value zero)) \/
                (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity yl) /\ (is_finite zero) \/
                (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_36: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_40: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                 (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                 (((is_infinite xu) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_41: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yl))) /\
                 (((is_infinite xu) \/ (is_infinite yl) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_42: tl = result0),
  forall (HW_46: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_47: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result1) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_48: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_49: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
intros.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 153, characters 11-23: *)
(*Why goal*) Lemma mul_po_38 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN xl).
Proof.
intros.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 153, characters 11-23: *)
(*Why goal*) Lemma mul_po_39 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 153, characters 11-23: *)
(*Why goal*) Lemma mul_po_40 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_52: (is_infinite xl) \/ (is_infinite yu)),
  (diff_sign xl yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 153, characters 11-23: *)
(*Why goal*) Lemma mul_po_41 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_53: (is_infinite xl) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 153, characters 11-23: *)
(*Why goal*) Lemma mul_po_42 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_54: (is_infinite yu) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 154, characters 18-30: *)
(*Why goal*) Lemma mul_po_43 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  (is_not_NaN xu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 154, characters 18-30: *)
(*Why goal*) Lemma mul_po_44 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 154, characters 18-30: *)
(*Why goal*) Lemma mul_po_45 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  forall (HW_58: (is_infinite xu) \/ (is_infinite yu)),
  (same_sign xu yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 154, characters 18-30: *)
(*Why goal*) Lemma mul_po_46 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  forall (HW_59: (is_infinite xu) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 154, characters 18-30: *)
(*Why goal*) Lemma mul_po_47 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  forall (HW_60: (is_infinite yu) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_48 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  forall (HW_61: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_62: (real_less_than_float
                  (Rmult (float_value xu) (float_value yu)) result1) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_63: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_49 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_51: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_55: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_56: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_57: tl = result0),
  forall (HW_61: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_62: (real_less_than_float
                  (Rmult (float_value xu) (float_value yu)) result1) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_63: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_64: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_50 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_65: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_66: tl = zero),
  forall (tu: gen_float),
  forall (HW_67: tu = zero),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_51 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_6: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                (is_finite zero) /\
                (Rgt (float_value xu) (float_value zero)) \/
                (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                (is_plus_infinity xu) /\ (is_finite zero) \/
                (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_50: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_65: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_66: tl = zero),
  forall (tu: gen_float),
  forall (HW_67: tu = zero),
  forall (a: R),
  forall (b: R),
  forall (HW_68: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 168, characters 11-23: *)
(*Why goal*) Lemma mul_po_52 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 168, characters 11-23: *)
(*Why goal*) Lemma mul_po_53 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 168, characters 11-23: *)
(*Why goal*) Lemma mul_po_54 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_72: (is_infinite xl) \/ (is_infinite yu)),
  (diff_sign xl yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 168, characters 11-23: *)
(*Why goal*) Lemma mul_po_55 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_73: (is_infinite xl) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 168, characters 11-23: *)
(*Why goal*) Lemma mul_po_56 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_74: (is_infinite yu) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 169, characters 18-30: *)
(*Why goal*) Lemma mul_po_57 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_75: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_76: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_77: tl = result0),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 169, characters 18-30: *)
(*Why goal*) Lemma mul_po_58 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_75: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_76: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_77: tl = result0),
  forall (HW_78: (is_infinite xl) \/ (is_infinite yl)),
  (same_sign xl yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 169, characters 18-30: *)
(*Why goal*) Lemma mul_po_59 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_75: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_76: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_77: tl = result0),
  forall (HW_79: (is_infinite xl) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 169, characters 18-30: *)
(*Why goal*) Lemma mul_po_60 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_75: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_76: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_77: tl = result0),
  forall (HW_80: (is_infinite yl) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_61 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_75: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_76: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_77: tl = result0),
  forall (HW_81: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_82: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result1) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_83: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_62 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_71: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rgt (float_value yu) (float_value zero)) \/
                 (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                 (is_plus_infinity yu) /\ (is_finite zero) \/
                 (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_75: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                 (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                 (((is_infinite xl) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_76: (float_less_than_real
                  result0 (Rmult (float_value xl) (float_value yu))) /\
                 (((is_infinite xl) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_77: tl = result0),
  forall (HW_81: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_82: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result1) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_83: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_84: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 173, characters 11-23: *)
(*Why goal*) Lemma mul_po_63 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  (is_not_NaN xu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 173, characters 11-23: *)
(*Why goal*) Lemma mul_po_64 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 173, characters 11-23: *)
(*Why goal*) Lemma mul_po_65 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_86: (is_infinite xu) \/ (is_infinite yu)),
  (diff_sign xu yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 173, characters 11-23: *)
(*Why goal*) Lemma mul_po_66 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_87: (is_infinite xu) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 173, characters 11-23: *)
(*Why goal*) Lemma mul_po_67 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_88: (is_infinite yu) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 174, characters 18-30: *)
(*Why goal*) Lemma mul_po_68 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 174, characters 18-30: *)
(*Why goal*) Lemma mul_po_69 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 174, characters 18-30: *)
(*Why goal*) Lemma mul_po_70 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  forall (HW_92: (is_infinite xl) \/ (is_infinite yl)),
  (same_sign xl yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 174, characters 18-30: *)
(*Why goal*) Lemma mul_po_71 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  forall (HW_93: (is_infinite xl) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 174, characters 18-30: *)
(*Why goal*) Lemma mul_po_72 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  forall (HW_94: (is_infinite yl) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_73 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  forall (HW_95: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_96: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result1) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_97: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_74 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_70: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rlt (float_value yl) (float_value zero)) \/
                 (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                 (is_minus_infinity yl) /\ (is_finite zero) \/
                 (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_85: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                 (is_finite zero) /\
                 (Rle (float_value yu) (float_value zero)) \/
                 (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_89: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                 (((is_infinite xu) \/ (is_infinite yu) -> (diff_sign xu yu))) /\
                 (((is_infinite xu) /\ (is_finite yu) ->
                   ~(eq (float_value yu) (0)%R))) /\
                 (((is_infinite yu) /\ (is_finite xu) ->
                   ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_90: (float_less_than_real
                  result0 (Rmult (float_value xu) (float_value yu))) /\
                 (((is_infinite xu) \/ (is_infinite yu) ->
                   (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_91: tl = result0),
  forall (HW_95: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                 (((is_infinite xl) \/ (is_infinite yl) -> (same_sign xl yl))) /\
                 (((is_infinite xl) /\ (is_finite yl) ->
                   ~(eq (float_value yl) (0)%R))) /\
                 (((is_infinite yl) /\ (is_finite xl) ->
                   ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_96: (real_less_than_float
                  (Rmult (float_value xl) (float_value yl)) result1) /\
                 (((is_infinite xl) \/ (is_infinite yl) ->
                   (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_97: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_98: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 180, characters 11-23: *)
(*Why goal*) Lemma mul_po_75 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 180, characters 11-23: *)
(*Why goal*) Lemma mul_po_76 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 180, characters 11-23: *)
(*Why goal*) Lemma mul_po_77 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_101: (is_infinite xl) \/ (is_infinite yu)),
  (diff_sign xl yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 180, characters 11-23: *)
(*Why goal*) Lemma mul_po_78 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_102: (is_infinite xl) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 180, characters 11-23: *)
(*Why goal*) Lemma mul_po_79 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_103: (is_infinite yu) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 181, characters 18-30: *)
(*Why goal*) Lemma mul_po_80 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  (is_not_NaN xu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 181, characters 18-30: *)
(*Why goal*) Lemma mul_po_81 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 181, characters 18-30: *)
(*Why goal*) Lemma mul_po_82 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  forall (HW_107: (is_infinite xu) \/ (is_infinite yl)),
  (same_sign xu yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 181, characters 18-30: *)
(*Why goal*) Lemma mul_po_83 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  forall (HW_108: (is_infinite xu) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 181, characters 18-30: *)
(*Why goal*) Lemma mul_po_84 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  forall (HW_109: (is_infinite yl) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_85 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  forall (HW_110: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (same_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_111: (real_less_than_float
                   (Rmult (float_value xu) (float_value yl)) result1) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_112: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_86 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_100: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_104: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (diff_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_105: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yu))) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_106: tl = result0),
  forall (HW_110: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (same_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_111: (real_less_than_float
                   (Rmult (float_value xu) (float_value yl)) result1) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_112: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_113: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_87 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_114: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_115: tl = zero),
  forall (tu: gen_float),
  forall (HW_116: tu = zero),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_88 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_5: (is_not_NaN xl) /\ (is_not_NaN zero) /\ (is_finite xl) /\
                (is_finite zero) /\
                (Rlt (float_value xl) (float_value zero)) \/
                (is_minus_infinity xl) /\ (is_plus_infinity zero) \/
                (is_minus_infinity xl) /\ (is_finite zero) \/
                (is_finite xl) /\ (is_plus_infinity zero)),
  forall (HW_69: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                 (is_finite zero) /\
                 (Rle (float_value xu) (float_value zero)) \/
                 (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (HW_99: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                 (is_finite zero) /\
                 (Rge (float_value yl) (float_value zero)) \/
                 (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_114: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_115: tl = zero),
  forall (tu: gen_float),
  forall (HW_116: tu = zero),
  forall (a: R),
  forall (b: R),
  forall (HW_117: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 194, characters 11-23: *)
(*Why goal*) Lemma mul_po_89 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN xu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 194, characters 11-23: *)
(*Why goal*) Lemma mul_po_90 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 194, characters 11-23: *)
(*Why goal*) Lemma mul_po_91 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_122: (is_infinite xu) \/ (is_infinite yl)),
  (diff_sign xu yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 194, characters 11-23: *)
(*Why goal*) Lemma mul_po_92 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_123: (is_infinite xu) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 194, characters 11-23: *)
(*Why goal*) Lemma mul_po_93 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_124: (is_infinite yl) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 195, characters 18-30: *)
(*Why goal*) Lemma mul_po_94 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_125: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_126: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_127: tl = result0),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 195, characters 18-30: *)
(*Why goal*) Lemma mul_po_95 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_125: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_126: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_127: tl = result0),
  forall (HW_128: (is_infinite xu) \/ (is_infinite yu)),
  (same_sign xu yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 195, characters 18-30: *)
(*Why goal*) Lemma mul_po_96 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_125: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_126: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_127: tl = result0),
  forall (HW_129: (is_infinite xu) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 195, characters 18-30: *)
(*Why goal*) Lemma mul_po_97 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_125: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_126: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_127: tl = result0),
  forall (HW_130: (is_infinite yu) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_98 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_125: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_126: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_127: tl = result0),
  forall (HW_131: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                  (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                  (((is_infinite xu) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_132: (real_less_than_float
                   (Rmult (float_value xu) (float_value yu)) result1) /\
                  (((is_infinite xu) \/ (is_infinite yu) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_133: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_99 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_121: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_125: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_126: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_127: tl = result0),
  forall (HW_131: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                  (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                  (((is_infinite xu) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_132: (real_less_than_float
                   (Rmult (float_value xu) (float_value yu)) result1) /\
                  (((is_infinite xu) \/ (is_infinite yu) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_133: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_134: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 199, characters 11-23: *)
(*Why goal*) Lemma mul_po_100 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  (is_not_NaN xu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 199, characters 11-23: *)
(*Why goal*) Lemma mul_po_101 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 199, characters 11-23: *)
(*Why goal*) Lemma mul_po_102 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_136: (is_infinite xu) \/ (is_infinite yl)),
  (diff_sign xu yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 199, characters 11-23: *)
(*Why goal*) Lemma mul_po_103 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_137: (is_infinite xu) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 199, characters 11-23: *)
(*Why goal*) Lemma mul_po_104 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_138: (is_infinite yl) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 200, characters 18-30: *)
(*Why goal*) Lemma mul_po_105 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 200, characters 18-30: *)
(*Why goal*) Lemma mul_po_106 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 200, characters 18-30: *)
(*Why goal*) Lemma mul_po_107 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  forall (HW_142: (is_infinite xl) \/ (is_infinite yu)),
  (same_sign xl yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 200, characters 18-30: *)
(*Why goal*) Lemma mul_po_108 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  forall (HW_143: (is_infinite xl) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 200, characters 18-30: *)
(*Why goal*) Lemma mul_po_109 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  forall (HW_144: (is_infinite yu) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_110 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  forall (HW_145: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (same_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_146: (real_less_than_float
                   (Rmult (float_value xl) (float_value yu)) result1) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_147: tu = result1),
  (is_interval tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_111 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_120: (is_not_NaN yl) /\ (is_not_NaN zero) /\ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rlt (float_value yl) (float_value zero)) \/
                  (is_minus_infinity yl) /\ (is_plus_infinity zero) \/
                  (is_minus_infinity yl) /\ (is_finite zero) \/
                  (is_finite yl) /\ (is_plus_infinity zero)),
  forall (HW_135: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (HW_139: (is_not_NaN xu) /\ (is_not_NaN yl) /\
                  (((is_infinite xu) \/ (is_infinite yl) -> (diff_sign xu yl))) /\
                  (((is_infinite xu) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_140: (float_less_than_real
                   result0 (Rmult (float_value xu) (float_value yl))) /\
                  (((is_infinite xu) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_141: tl = result0),
  forall (HW_145: (is_not_NaN xl) /\ (is_not_NaN yu) /\
                  (((is_infinite xl) \/ (is_infinite yu) -> (same_sign xl yu))) /\
                  (((is_infinite xl) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_146: (real_less_than_float
                   (Rmult (float_value xl) (float_value yu)) result1) /\
                  (((is_infinite xl) \/ (is_infinite yu) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_147: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_148: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 205, characters 18-57: *)
(*Why goal*) Lemma mul_po_112 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  (is_finite xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 205, characters 18-57: *)
(*Why goal*) Lemma mul_po_113 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  (Rge (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 206, characters 11-50: *)
(*Why goal*) Lemma mul_po_114 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  (is_finite yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 206, characters 11-50: *)
(*Why goal*) Lemma mul_po_115 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  (Rge (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 207, characters 18-104: *)
(*Why goal*) Lemma mul_po_116 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  ((is_plus_infinity yu) \/ (is_finite yu) /\ (Rgt (float_value yu) (0)%R)).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 209, characters 18-104: *)
(*Why goal*) Lemma mul_po_117 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  ((is_plus_infinity xu) \/ (is_finite xu) /\ (Rgt (float_value xu) (0)%R)).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 211, characters 18-30: *)
(*Why goal*) Lemma mul_po_118 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  (is_not_NaN xl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 211, characters 18-30: *)
(*Why goal*) Lemma mul_po_119 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  (is_not_NaN yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 211, characters 18-30: *)
(*Why goal*) Lemma mul_po_120 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_155: (is_infinite xl) \/ (is_infinite yl)),
  (diff_sign xl yl).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 211, characters 18-30: *)
(*Why goal*) Lemma mul_po_121 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_156: (is_infinite xl) /\ (is_finite yl)),
  ~(eq (float_value yl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 211, characters 18-30: *)
(*Why goal*) Lemma mul_po_122 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_157: (is_infinite yl) /\ (is_finite xl)),
  ~(eq (float_value xl) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 212, characters 18-30: *)
(*Why goal*) Lemma mul_po_123 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  (is_not_NaN xu).
Proof.
Admitted.


(* Why obligation from file "interval_arith_full.why", line 212, characters 18-30: *)
(*Why goal*) Lemma mul_po_124 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  (is_not_NaN yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 212, characters 18-30: *)
(*Why goal*) Lemma mul_po_125 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  forall (HW_161: (is_infinite xu) \/ (is_infinite yu)),
  (same_sign xu yu).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 212, characters 18-30: *)
(*Why goal*) Lemma mul_po_126 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  forall (HW_162: (is_infinite xu) /\ (is_finite yu)),
  ~(eq (float_value yu) (0)%R).
Proof.
Admitted.

(* Why obligation from file "interval_arith_full.why", line 212, characters 18-30: *)
(*Why goal*) Lemma mul_po_127 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  forall (HW_163: (is_infinite yu) /\ (is_finite xu)),
  ~(eq (float_value xu) (0)%R).
Proof.
Admitted.



(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_128 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  forall (HW_164: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                  (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                  (((is_infinite xu) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_165: (real_less_than_float
                   (Rmult (float_value xu) (float_value yu)) result1) /\
                  (((is_infinite xu) \/ (is_infinite yu) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_166: tu = result1),
  (is_interval tl tu).
Proof.
intros.
Admitted.


(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_129 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_150: (is_not_NaN yu) /\ (is_not_NaN zero) /\ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rgt (float_value yu) (float_value zero)) \/
                  (is_plus_infinity yu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity yu) /\ (is_finite zero) \/
                  (is_finite yu) /\ (is_minus_infinity zero)),
  forall (HW_151: (is_finite xl) /\ (Rge (float_value xl) (0)%R)),
  forall (HW_152: (is_finite yl) /\ (Rge (float_value yl) (0)%R)),
  forall (HW_153: (is_plus_infinity yu) \/ (is_finite yu) /\
                  (Rgt (float_value yu) (0)%R)),
  forall (HW_154: (is_plus_infinity xu) \/ (is_finite xu) /\
                  (Rgt (float_value xu) (0)%R)),
  forall (HW_158: (is_not_NaN xl) /\ (is_not_NaN yl) /\
                  (((is_infinite xl) \/ (is_infinite yl) -> (diff_sign xl yl))) /\
                  (((is_infinite xl) /\ (is_finite yl) ->
                    ~(eq (float_value yl) (0)%R))) /\
                  (((is_infinite yl) /\ (is_finite xl) ->
                    ~(eq (float_value xl) (0)%R)))),
  forall (result0: gen_float),
  forall (HW_159: (float_less_than_real
                   result0 (Rmult (float_value xl) (float_value yl))) /\
                  (((is_infinite xl) \/ (is_infinite yl) ->
                    (is_minus_infinity result0)))),
  forall (tl: gen_float),
  forall (HW_160: tl = result0),
  forall (HW_164: (is_not_NaN xu) /\ (is_not_NaN yu) /\
                  (((is_infinite xu) \/ (is_infinite yu) -> (same_sign xu yu))) /\
                  (((is_infinite xu) /\ (is_finite yu) ->
                    ~(eq (float_value yu) (0)%R))) /\
                  (((is_infinite yu) /\ (is_finite xu) ->
                    ~(eq (float_value xu) (0)%R)))),
  forall (result1: gen_float),
  forall (HW_165: (real_less_than_float
                   (Rmult (float_value xu) (float_value yu)) result1) /\
                  (((is_infinite xu) \/ (is_infinite yu) ->
                    (is_plus_infinity result1)))),
  forall (tu: gen_float),
  forall (HW_166: tu = result1),
  forall (a: R),
  forall (b: R),
  forall (HW_167: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
unfold in_interval,float_less_than_real,real_less_than_float.
intros.
split.
destruct HW_159.
subst.
destruct H.
left.
split.
destruct H;auto.
2:right;exact H.
assert ((float_value xl <= a)%R).
decompose [and] HW_167.
destruct H3.
destruct H2;auto.
destruct HW_151.
unfold is_minus_infinity,is_finite in *.
rewrite H3 in H2.
destruct H2.
discriminate.
assert ((float_value yl <= b)%R).
decompose [and] HW_167.
destruct H2.
destruct H2;auto.
destruct HW_152.
unfold is_minus_infinity,is_finite in *.
rewrite H3 in H2.
destruct H2.
discriminate.
destruct H.
apply Rle_trans with ((float_value xl)*(float_value yl))%R.
exact H3.
apply help.
split.
destruct HW_151.
split;auto with real.
destruct HW_152.
split;auto with real.
(*borne sup*)
subst.
decompose [and] HW_165.
decompose [or] HW_154.
right.
apply H0.
left.
unfold is_plus_infinity, is_infinite in *.
destruct H1.
exact H1.
decompose [or] HW_153.
right.
apply H0.
right.
unfold is_plus_infinity, is_infinite in *.
destruct H2.
exact H2.
destruct H.
left.
split.
destruct H;auto.
decompose [and] HW_167.
destruct H6.
destruct H4.
destruct H7.
destruct H7.
apply Rle_trans with ((float_value xu)*(float_value yu))%R.
apply help.
split;split;auto with real.
destruct H5.
destruct HW_151.
destruct H5.
apply Rle_trans with (float_value xl);auto with real.
destruct HW_151.
unfold is_minus_infinity, is_finite in *.
destruct H5.
rewrite H9 in H5.
discriminate.
destruct H3.
destruct H3.
destruct HW_152.
apply Rle_trans with (float_value yl);auto with real.
destruct HW_152.
unfold is_minus_infinity, is_finite in *.
destruct H3.
rewrite H9 in H3.
discriminate.
destruct H;auto.
unfold is_plus_infinity, is_finite in *.
destruct H2.
rewrite H2 in H7.
destruct H7;discriminate.
unfold is_plus_infinity, is_finite in *.
destruct H4.
rewrite H4 in H1.
destruct H1;discriminate.
right;auto.
Qed.

 
(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_130 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_168: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_169: tl = zero),
  forall (tu: gen_float),
  forall (HW_170: tu = zero),
  (is_interval tl tu).
Proof.
intros.
(* FILL PROOF HERE *)
Save.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_131 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_119: (is_not_NaN xu) /\ (is_not_NaN zero) /\ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rgt (float_value xu) (float_value zero)) \/
                  (is_plus_infinity xu) /\ (is_minus_infinity zero) \/
                  (is_plus_infinity xu) /\ (is_finite zero) \/
                  (is_finite xu) /\ (is_minus_infinity zero)),
  forall (HW_149: (is_NaN yl) \/ (is_NaN zero) \/ (is_finite yl) /\
                  (is_finite zero) /\
                  (Rge (float_value yl) (float_value zero)) \/
                  (is_plus_infinity yl) \/ (is_minus_infinity zero)),
  forall (HW_168: (is_NaN yu) \/ (is_NaN zero) \/ (is_finite yu) /\
                  (is_finite zero) /\
                  (Rle (float_value yu) (float_value zero)) \/
                  (is_minus_infinity yu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_169: tl = zero),
  forall (tu: gen_float),
  forall (HW_170: tu = zero),
  forall (a: R),
  forall (b: R),
  forall (HW_171: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
intros.
(* FILL PROOF HERE *)
Save.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_132 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_172: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rle (float_value xu) (float_value zero)) \/
                  (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_173: tl = zero),
  forall (tu: gen_float),
  forall (HW_174: tu = zero),
  (is_interval tl tu).
Proof.
intros.
(* FILL PROOF HERE *)
Save.

(* Why obligation from file "interval_arith_full.why", line 224, characters 2-152: *)
(*Why goal*) Lemma mul_po_133 : 
  forall (xl: gen_float),
  forall (xu: gen_float),
  forall (yl: gen_float),
  forall (yu: gen_float),
  forall (HW_1: (is_interval xl xu) /\ (is_interval yl yu)),
  forall (result: gen_float),
  forall (HW_2: (((no_overflow Double down (0)%R) -> (is_finite result) /\
                  (eq (float_value result) (round_float Double down (0)%R)))) /\
                ((~(no_overflow Double down (0)%R) ->
                  (same_sign_real result (0)%R) /\
                  (overflow_value Double down result))) /\
                (eq (exact_value result) (0)%R) /\
                (eq (model_value result) (0)%R)),
  forall (zero: gen_float),
  forall (HW_3: zero = result),
  forall (HW_4: (eq (float_value zero) (0)%R)),
  forall (HW_118: (is_NaN xl) \/ (is_NaN zero) \/ (is_finite xl) /\
                  (is_finite zero) /\
                  (Rge (float_value xl) (float_value zero)) \/
                  (is_plus_infinity xl) \/ (is_minus_infinity zero)),
  forall (HW_172: (is_NaN xu) \/ (is_NaN zero) \/ (is_finite xu) /\
                  (is_finite zero) /\
                  (Rle (float_value xu) (float_value zero)) \/
                  (is_minus_infinity xu) \/ (is_plus_infinity zero)),
  forall (tl: gen_float),
  forall (HW_173: tl = zero),
  forall (tu: gen_float),
  forall (HW_174: tu = zero),
  forall (a: R),
  forall (b: R),
  forall (HW_175: (in_interval a xl xu) /\ (in_interval b yl yu)),
  (in_interval (Rmult a b) tl tu).
Proof.
intros.
(* FILL PROOF HERE *)
Save.

