「Software Foundation」という本を読んでいます。「誘導の詳細」の章で、著者は、誘導型が定義されているときに 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
1つだけの整数ではなく3つに依存しているからだと思った。
だから私はこのように書き直しP_plusassoc
ます:
Definition P_plusassoc (n:nat) : nat->nat->Prop :=
fun (m o:nat) => n + (m+ o) = (n+m) +o.
しかし、それでもうまくいきません。問題はどこだ ?P_plusassoc
を使用するように定義するにはどうすればよいnat_ind
ですか?