配列の長さをモデル化する必要があります。だから私は関数を宣言します
(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)
(src: 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
(src: http: //rise4fun.com/Z3/HdEy)
誰かがこれを回避する方法を知っていますか?