我正在尝试开发一种基于尽快防止错误输入的编程风格。例如,对于自然数的先行函数,而不是以下似是而非的定义:
Definition pred1 n :=
match n with
| O => None
| S n => Some n
end.
我想写如下:
Theorem nope n (p : n = O) (q : n <> O) : False.
contradict q.
exact p.
Qed.
Definition pred2 n (q : n <> O) :=
match n with
| S n => n
| O =>
let p := _ in
match nope n p q with end
end.
但我不知道用什么代替_
。我的直觉告诉我,分支中一定有一些assumption : n = O
可用的。| O =>
Coq 是否确实引入了这样的假设?如果有,它的名字是什么?