Isabelle中矛盾的惯用语证明?

时间:2013-05-18 22:28:54

标签: proof isabelle isar

到目前为止,我在Isabelle的以下风格中使用矛盾来编写证据(使用Jeremy Siek的模式):

lemma "<expression>"
proof -
  {
    assume "¬ <expression>"
    then have False sorry
  }
  then show ?thesis by blast
qed

有没有一种方法可以在没有嵌套的原始校样块{ ... }的情况下工作?

2 个答案:

答案 0 :(得分:5)

经典证明存在规则ccontr

have "<expression>"
proof (rule ccontr)
  assume "¬ <expression>"
  then show False sorry
qed

有时可能有助于by contradiction证明最后一步。

还有规则classical(看起来不太直观):

have "<expression>"
proof (rule classical)
  assume "¬ <expression>"
  then show "<expression>" sorry
qed

有关使用classical的更多示例,请参阅$ISABELLE_HOME/src/HOL/Isar_Examples/Drinker.thy

答案 1 :(得分:2)

为了更好地理解规则classical,可以使用结构化的Isar样式进行打印,如下所示:

print_statement classical

输出:

theorem classical:
  obtains "¬ thesis"

因此,对直觉主义者的纯粹邪恶似乎更直观:为了证明某些任意论点,我们可以假设它的否定成立。

相应的规范证明模式是:

notepad
begin
  have A
  proof (rule classical)
    assume "¬ ?thesis"
    then show ?thesis sorry
  qed
end

这里?thesisA的上述主张的具体论点,可能是一个任意复杂的陈述。这个通过缩写?thesis的准抽象是典型的惯用Isar,强调推理的结构。