我正在阅读《软件基础》一书。在“关于归纳的更多信息”一章中,作者讨论了在定义归纳类型时由 coq 生成的归纳原理。
下面是一个练习。在定义中封装“+”的关联概念,然后在其上应用 nat_ind。
我对定义的第一个猜测如下:
Definition P_plusassoc (n m o:nat) : Prop :=
n + (m+ o) = (n+m) +o.
但是,当我想证明这一点时,我遇到了问题:
Theorem plus_assoct : forall o m n, P_plusassoc n m o.
Proof.
apply nat_ind.
nat_ind
不起作用。所以我认为这是因为P_plusassoc
不依赖于一个整数而是三个。
所以我这样重写P_plusassoc
:
Definition P_plusassoc (n:nat) : nat->nat->Prop :=
fun (m o:nat) => n + (m+ o) = (n+m) +o.
但它仍然不起作用。问题出在哪里 ?我如何定义P_plusassoc
使用nat_ind
?