【发布时间】:2018-12-31 14:11:43
【问题描述】:
我正在通过 coq 课程 "Logical Foundations"。解决问题:
具有小于或等于功能:
Fixpoint leb (n m : nat) : bool :=
match n with
| O => true
| S n' =>
match m with
| O => false
| S m' => leb n' m'
end
end.
创建“小于”函数:
Definition blt_nat (n m : nat) : bool
(* REPLACE THIS LINE WITH ":= _your_definition_ ." *). Admitted.
据我了解,它应该是这样工作的:
if (n == m)
return false
else
return (leb n m)
我创建了这个:
Definition blt_nat (n m : nat) : bool
match n with
| m => false
| _ => leb n m
end.
但它不起作用 - 输出:“错误:此子句是多余的。”换行:
| _ => leb n m
请帮忙。
【问题讨论】:
-
我对@987654328@ 没有经验,但我怀疑第一种情况
| m => ...与m不匹配,但匹配任何值并调用该值m(覆盖原m)。这可能会有所帮助:stackoverflow.com/a/46384468