问题描述
我知道Coq允许定义相互递归的归纳类型。但是有没有办法在Coq中编写递归定义?
例如,我想将定义写为:
DeFinition myDeFinition A := forall B C,(myDeFinition B) \/ (A = C).
上面定义中的重要部分是 myDeFinition B ,它在另一个参数上递归调用相同的定义。是否可以在Coq中做到这一点?
解决方法
您可以使用Fixpoint
代替Definition
。如果您想了解更多关于documentation的信息,建议您看看。
Fixpoint myDefinition A :=
forall B C,(myDefinition B) \/ (A = C).
请注意,上述类似内容不会被Coq接受,因此是有效的定义。 documentation应该再次说明您可以使用示例或不可以使用示例。