我是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中的变量值?我已经尝试过"分配",但我不希望我的变量变为全局变量。
答案 0 :(得分:1)
ACL2是applicative programming language(实际上ACL2代表"应用Common Lisp&#34的计算逻辑;),因此您不能改变代码中的值;你只能绑定新的。因此,let
或let*
可能是您正在寻找的内容。