我需要对数组的长度进行建模。所以我声明了一个函数
(declare-fun LEN ((Array Int Int)) Int)
同时,我想定义一些使用define-fun
.
但是,当我在 Z3 上进行了一些测试时,似乎define-fun
并declare-fun
不能存在于同一个源文件中?
如下代码可以正常工作:
(define-fun mymax ((a Int) (b Int)) Int
(ite (> a b) a b))
(assert (= (mymax 100 7) 100))
(check-sat)
(来源:http ://rise4fun.com/Z3/jRzs )
但是下面,不管LEN
插入到哪里,都会出现错误:
;(declare-fun LEN ((Array Int Int) Int)
;unknown sort 'assert'
(define-fun mymax ((a Int) (b Int)) Int
(ite (> a b) a b))
; (declare-fun LEN ((Array Int Int) Int)
;unknown sort 'assert'
(assert (= (mymax 4 7) 7))
; (declare-fun LEN ((Array Int Int) Int)
;;unknown sort 'check-assert'
(check-sat)
;(declare-fun LEN ((Array Int Int) Int)
;invalid sort, symbol, '_' or '(' expected
(来源:http ://rise4fun.com/Z3/HdEy )
有人知道如何解决这个问题吗?