1

有没有办法在 muZ3 关系规范中不确定地执行递归调用?具体来说,我想翻译如下函数:

int foo(int x) {
    ...
    if (*) y = foo(y);
    ...
}

到 muZ3 规则格式。

4

1 回答 1

1

您可以为这两种情况制定单独的规则:

  (declare-fun foo (Int Int) Bool)

   (assert (forall ((x Int) (y Int) (z Int))  (=> (and ... (foo x y) ...) (foo x z)))

   (assert (forall ((x Int) (y Int) (z Int))  (=> (and ... true ...) (foo x z)))
于 2014-06-10T12:24:03.027 回答