@@ -85,6 +85,7 @@ smt2_convt::smt2_convt(
8585 break ;
8686
8787 case solvert::CPROVER_SMT2:
88+ use_FPA_theory = true ;
8889 use_array_of_bool = true ;
8990 use_as_const = true ;
9091 use_check_sat_assuming = true ;
@@ -406,23 +407,23 @@ constant_exprt smt2_convt::parse_literal(
406407 {
407408 std::size_t e = unsafe_string2size_t (src.get_sub ()[2 ].id_string ());
408409 std::size_t s = unsafe_string2size_t (src.get_sub ()[3 ].id_string ());
409- return ieee_floatt::plus_infinity (ieee_float_spect (s, e)).to_expr ();
410+ return ieee_floatt::plus_infinity (ieee_float_spect (s - 1 , e)).to_expr ();
410411 }
411412 else if (src.get_sub ().size ()==4 &&
412413 src.get_sub ()[0 ].id ()==" _" &&
413414 src.get_sub ()[1 ].id ()==" -oo" ) // (_ -oo e s)
414415 {
415416 std::size_t e = unsafe_string2size_t (src.get_sub ()[2 ].id_string ());
416417 std::size_t s = unsafe_string2size_t (src.get_sub ()[3 ].id_string ());
417- return ieee_floatt::minus_infinity (ieee_float_spect (s, e)).to_expr ();
418+ return ieee_floatt::minus_infinity (ieee_float_spect (s - 1 , e)).to_expr ();
418419 }
419420 else if (src.get_sub ().size ()==4 &&
420421 src.get_sub ()[0 ].id ()==" _" &&
421422 src.get_sub ()[1 ].id ()==" NaN" ) // (_ NaN e s)
422423 {
423424 std::size_t e = unsafe_string2size_t (src.get_sub ()[2 ].id_string ());
424425 std::size_t s = unsafe_string2size_t (src.get_sub ()[3 ].id_string ());
425- return ieee_floatt::NaN (ieee_float_spect (s, e)).to_expr ();
426+ return ieee_floatt::NaN (ieee_float_spect (s - 1 , e)).to_expr ();
426427 }
427428
428429 if (type.id ()==ID_signedbv ||
0 commit comments