如何在Fixpoint定义Coq中创建条件

时间:2018-12-23 02:15:46

标签: coq coq-tactic

我正在研究“软件基础”这本书,并且正在探讨第二章中的最后一个问题。该问题要求将自然数转换为二进制数,其中以下列方式定义了二进制数:

  - [is] zero,
  - [is] twice a binary number, or
  - [is] one more than twice a binary number.

我的思维过程是,如果自然数为偶数,则可以表示为

double(nat_to_bin n)

但是,在我的Fixpoint定义中,当我尝试编写

(evenb n' = true) => double(nat_to_bin)

我出错了,因为evenb n'不是nat的构造函数。我有什么办法可以创建一个条件,使上面的行成为有效的函数定义,而无需更改nat的定义?

1 个答案:

答案 0 :(得分:2)

没关系,我想出了一个解决方案。我可以写这个词

match (evenb n') with
| true => ....

尽管带我一会儿。