Hello David,

On 18.08.2016 17:17, David MENTRE wrote:
Clearly, the generated SMT2 file does not set logic to AUFLIRA, as shown
in the used .smt2 file for one goal of my example:
"""
(set-logic AUFBVDTNIRA)
;;; generated by SMT-LIB2 driver
;;; SMT-LIB2 driver: bit-vectors, common part
(set-option :produce-models true)
;;; SMT-LIB2: integer arithmetic
(declare-datatypes () ((tuple0 (Tuple0))))
;; CompatOrderMult
  (assert
  (forall ((x Int) (y Int) (z Int))
  (=> (<= x y) (=> (<= 0 z) (<= (* x z) (* y z))))))

(declare-datatypes () ((s_t (mk_s_t (x Int)(y Int)))))
(assert
;; WP_parameter_f
 ;; File "counter_example_test.mlw", line 10, characters 6-7
  (not (forall ((x1 Int)) (< 0 (+ x1 x1)))))
(check-sat)
(get-info :reason-unknown)
/tmp/why_5d496b_counter_example_test-T-WP_parameter_f.smt2 (END)
"""

I'll do some test with CVC4 1.5 that you are using, as suggested by David.

Indeed, counterexamples are currently not working with CVC4 1.4 out of the box. The driver used for cvc4 1.4 (drivers/cvc4_14) does not include the transformation prepare_for_counterexmp which is necessary for counterexample generation and sets logic to AUFBVDTNIRA. The driver used for cvc 1.5 (drivers/cvc4_15) contains the transformation prepare_for_counterexmp (note that this transformation is noop if counterexample generation is not selected) and sets logic to AUFBVDTLIRA. This has a bad effect of CVC4 emitting error when a non-linear operator is used. That's why in SPARK we use two drivers for CVC4 1.5 - one setting the logic to AUFBVDTLIRA for generation of counterexamples and one setting the logic to AUFBVDTNIRA for proof.

It would be more convenient for Why3 users if Why3 would force the linear arithmetic automatically if counterexample generation is selected. It would be easy to do this, but on the other side it would be a bit temporary hack because we believe that CVC4 should not turn off counterexample generation just because the logic is set to non-linear arithmetic. And as there was need for this in SPARK it was never implemented.

Sorry, this should be documented in the manual (I have already quickly written an initial version of such a documentation, but it should be probably polished more to be a part of master branch and then official release).

David
_______________________________________________
Why3-club mailing list
Why3-club@lists.gforge.inria.fr
http://lists.gforge.inria.fr/mailman/listinfo/why3-club

Reply via email to