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

如何在定点定义Coq中创建条件,coq,coq-tactic,Coq,Coq Tactic,我正在阅读《软件基础》一书,并且正在研究第二章中的最后一个问题。该问题要求将自然数转换为二进制数,其中二进制数的定义方式如下: - [is] zero, - [is] twice a binary number, or - [is] one more than twice a binary number. 我的思考过程是,如果一个自然数是偶数,那么它可以表示为 double(nat_to_bin n) 然而,在我的定点定义中,当我试图写作时 (evenb n' = true) =

我正在阅读《软件基础》一书,并且正在研究第二章中的最后一个问题。该问题要求将自然数转换为二进制数,其中二进制数的定义方式如下:

  - [is] zero,
  - [is] twice a binary number, or
  - [is] one more than twice a binary number.
我的思考过程是,如果一个自然数是偶数,那么它可以表示为

double(nat_to_bin n)
然而,在我的定点定义中,当我试图写作时

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

我得到一个错误,因为evenb n'不是nat的构造函数。有没有什么方法可以让我创建一个条件,使上面的一行成为有效的函数定义,而不改变nat的定义?

不管怎样,我想出了一个解决方案。我只会写这个词

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

不过我花了一段时间。

不过,我想出了一个解决办法。我只会写这个词

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

不过,我花了一段时间。

如果是那样的话。。。否则…
如果是,则。。。否则…