我如何定义一个谓词,例如even: Int -> Bool,它接受一个整数并输出它是否为偶数?
我尝试过类似的东西
(set-logic AUFNIRA)
(declare-fun even (Int) Bool)
Run Code Online (Sandbox Code Playgroud)
例如,我想知道如何声明这even(2)是真的。
大约有 3 种方法可以做到这一点。
您可以使用解释谓词(_ divisible 2)。
(assert ((_ divisible 2) 6))
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用 Define-fun 来精确捕获。
(define-fun even ((x Int)) Bool ((_ divisible 2) x))
Run Code Online (Sandbox Code Playgroud)
请注意,这可能不符合您选择的逻辑,例如QF_LIA。
您可以声明未解释的谓词,并逐点定义其语义。
(declare-fun even (Int) Bool)
(assert (even 2))
(assert (not (even 3)))
Run Code Online (Sandbox Code Playgroud)您可以声明未解释的谓词并通过量词定义其语义。
(declare-fun even (Int) Bool)
(assert (forall ((x Int)) (= (even x) (exists ((y Int)) (= x (* 2 y))))))
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |