寻找可判定谓词的反例

Searching for a counterexample to a decidable predicate

感觉下面的 Coq 语句应该是有建设性的:

Require Import Decidable.

Lemma dec_search_nat_counterexample (P : nat -> Prop) (decH : forall i, decidable (P i))
  : (~ (forall i, P i)) -> exists i, ~ P i.

如果有上限,我希望能够显示某种形式的东西“假设不是每个 i < N 都满足 P i。然后有一个 i < N 其中 ~ P i”。事实上,您实际上可以编写一个函数来通过从零开始搜索来查找最小示例。

当然,最初的说法没有上限,但我觉得应该有一个归纳论证可以从上面的有界版本得到它。但我还不够聪明,不知道怎么做!我错过了一个聪明的把戏吗?还是有一个根本原因导致这行不通,尽管自然数是有序的?

在 Meven Lennon-Bertrand 的评论后修改了答案

这个语句等同于 Markov's principle 交换了 P~P。由于 P 是可判定的,我们有 P <-> (~ ~ P),因此可以进行此替换。

这篇论文 (http://pauillac.inria.fr/~herbelin/articles/lics-Her10-markov.pdf) 表明马尔可夫原理在 Coq 中是不可证明的,因为作者(Coq 的作者之一)在这篇论文中提出了一种新的逻辑,可以证明马尔可夫原理。

旧答案:

这在道德上是“全知的有限原则”- LPO(参见 https://en.wikipedia.org/wiki/Limited_principle_of_omniscience)。它需要经典公理来在 Coq 中证明它——或者你断言自己是公理。

参见示例:

Require Import Coquelicot.Markov.

Check LPO.

Print Assumptions LPO.

当然没有它的标准库版本。