2014-01-05 1 views
2

Пожалуйста, помогите мне решить эту проблему, я пробовал различные способы, но не удалось.Проблемы с Z3 (версия 4.3): Результат реального значения не округляется автоматически

На сайте: http://rise4fun.com/Z3

при решении этой формулы:

 
(declare-const a Real) 
(assert (= a (/ 5 2))) 
(check-sat) 
(get-model) 

результатом является

 
sat 
(model 
    (define-fun a() Real 
    (/ 5.0 2.0)) 
) 

Ответ (/ 5,0 2,0), которое не является круглым стоимость. (Нужно 2.5)

В старой версии Z3 (версия 3.2), с той же вышеприведенной формуле: ответ 2,5 (то есть то, что мне нужно)

Есть ли кто-нибудь знает, как config Z3 (версия 4.3), чтобы получить тот же ответ, что и его старая версия?

Спасибо.

ответ

2

Пожалуйста, используйте следующий код

(declare-const a Real) 
(assert (= a (/ 5 2))) 
(check-sat) 
(set-option :pp-decimal true) 
(get-model) 

и выход

sat 
(model 
    (define-fun a() Real 
    2.5) 
) 
+0

Спасибо так много! Не могли бы вы рассказать мне, где я могу найти конфигурацию «set-option», как это? –

+0

Привет, я не специалист по Z3, и я не знаю, как использовать «set-option» в целом. Я ожидаю, что Леонардо де Мора даст нам больше информации об этом. Всего наилучшего. –

+0

Не могли бы вы рассказать мне, как скрыть все предупреждения и ошибки? Если Z3 не может решить, он возвращает «unsat».
если другие ошибки, возврат "null" –

 Смежные вопросы

  • Нет связанных вопросов^_^