Isabelle琐碎的问题:“Max(S :: nat set)= 0”表示S的所有元素都为零

时间:2013-08-20 19:42:55

标签: max isabelle theorem-proving

我试图证明以下含义:

lemma Max_lemma:
  fixes s::nat and S :: "nat set"
  shows " ((Max S) = (0::nat)) ⟹ (∀ s ∈ S . (s = 0))"
sorry
(* 
  Note: I added additional parentheses just to be sure.*)

我认为这将是相当微不足道的,这就是为什么我试图用大锤获得证据。不幸的是失败了。我的定义是错误的,或者涉及像Max这样的大型运营商的自动证明存在一些困难。

我试着通过查看他们的定义以及我能找到的任何文档来更好地理解Max和max。因为我之前遇到了Isabelle的问题,尽管它有轻微的外观(“Why won't Isabelle simplify the body of my "if _ then _ else" construct?”),但最终需要很多经验,我决定在这里发布这个问题。

1 个答案:

答案 0 :(得分:2)

这样的定理是不可证明的,因为Max是通过fold1定义的,而lemma Max_lemma: fixes s::nat and S :: "nat set" assumes "finite S" shows " ((Max S) = (0::nat)) ⟹ (∀ s ∈ S . (s = 0))" using assms by (metis Max_ge le_0_eq) 又是一个定义(据我所知)仅适用于有限集。对于有限集,sledgehammer是成功的:

"(∑n ∈ {1::nat..}. n) = 0"

Isabelle对部分功能的处理有点不幸,而且事实是

{{1}}

是一个定理(大锤发现它)可能让伊莎贝尔的新人感到不安。 (如果结果只有-1/12 ...)。但这是我们必须忍受的。