“在什么条件下”;“评估cbv三角洲”;在Coq中扩展定义?
在一般证明中(使用Coq 8.5),我执行了以下内容:“在什么条件下”;“评估cbv三角洲”;在Coq中扩展定义?,coq,evaluation,Coq,Evaluation,在一般证明中(使用Coq 8.5),我执行了以下内容: Require Import Arith. Eval cbv delta in Nat.add_comm 3 7. 输出是 然而,Print Nat.add_comm.给出了一个以两个Nat作为输入的长而复杂的函数。我希望我的代码能够扩展Nat.add\u comm的定义,这是Eval cbv delta in.在类似情况下所做的。作为一个初学者,我知道有一种天真的误解潜伏着。我遗漏了什么?对Daniel的评论进行一点扩展,cbv del
Require Import Arith.
Eval cbv delta in Nat.add_comm 3 7.
输出是
然而,
Print Nat.add_comm.
给出了一个以两个Nat作为输入的长而复杂的函数。我希望我的代码能够扩展Nat.add\u comm
的定义,这是Eval cbv delta in.
在类似情况下所做的。作为一个初学者,我知道有一种天真的误解潜伏着。我遗漏了什么?对Daniel的评论进行一点扩展,cbv delta
将显示一个标识符,如果
定义的而不是Qed
关闭的,要么主体是通过:=
或自动义务策略(对于程序定义
)或类型类解析(对于没有主体的实例
)给出的,以及
不透明id
或策略不透明[id]
将其标记为不透明,以及:
而不是在具有模块类型归属的模块(或模块函子)中定义的。可能只是Nat.add\u comm
是不透明的-如果你通过它的证明(以及依赖引理的证明)并将Qed.
替换为已定义。
在任何地方,它的计算结果都可能是eq\u refl
@DanielSchepler:谢谢。不透明和透明的区别正是我想要的。
Nat.add_comm 3 7 : 3 + 7 = 7 + 3