我试图证明以下含义:
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?”),但最终需要很多经验,我决定在这里发布这个问题。
答案 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 ...)。但这是我们必须忍受的。