如何在ACL2中更新变量值?

时间:2017-11-15 05:35:59

标签: acl2

我是ACL2定理证明的新手。我想根据三个变量的XOR结果更新变量的值。我认为“setq”会为我做这件事。

(setq out (xor (xor a b) c))

然而,我收到此错误:

  

TOP-LEVEL中的ACL2错误:符号SETQ(在包" COMMON-LISP"中)在ACL2中既没有功能也没有宏定义。此外,此符号位于主要的Lisp包中;因此,您无法在ACL2中定义它。请参阅:DOC近乎​​未命中。注意:此错误发生在上下文中(SETQ OUT(XOR(XOR A B)C))。

我们不能在ACL2中使用主要的Lisp函数吗?是否有另一种方法来更新ACL2中的变量值?我已经尝试过"分配",但我不希望我的变量变为全局变量。

1 个答案:

答案 0 :(得分:1)

ACL2是applicative programming language(实际上ACL2代表"应用Common Lisp&#34的计算逻辑;),因此您不能改变代码中的值;你只能绑定新的。因此,letlet*可能是您正在寻找的内容。