Quantifier in Z3

Basically, I want to ask Z3 to give me an arbitrary integer whose value is greater than 10. Therefore, I am writing the following statements:

(declare-const x (Int))
(assert (forall ((i Int)) (> i 10)))
(check-sat)
(get-value(x))

How can I apply this quantifier to my model? I know that you can write (assert (> x 10)) to achieve this. But I mean, I want a quantifier in my model, so every time I declare an integer constant whose value is guaranteed to exceed 10. Therefore, I do not need to insert an instruction (assert (> x 10)) for each integer constant so that I am announced.

+5
source share
1 answer

(assert (forall ((i Int)) (> i 10))), i , , false.

, , :

(declare-fun greaterThan10 (Int) Bool)
(assert (forall ((i Int)) (= (greaterThan10 i) (> i 10))))

, :

(declare-const x (Int))
(declare-const y (Int))
(assert (greaterThan10 x))
(assert (greaterThan10 y))
(check-sat)

, , , Z3 API. , (set-option :macro-finder true), Z3 .

, , define-fun SMT-LIB v2 - , :

(define-fun greaterThan10 ((i Int)) Bool
  (> i 10))
+5

All Articles