到目前为止,我在Isabelle的以下风格中使用矛盾来编写证据(使用Jeremy Siek的模式):
lemma "<expression>"
proof -
{
assume "¬ <expression>"
then have False sorry
}
then show ?thesis by blast
qed
有没有一种方法可以在没有嵌套的原始校样块{ ... }
的情况下工作?
答案 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
这里?thesis
是A
的上述主张的具体论点,可能是一个任意复杂的陈述。这个通过缩写?thesis
的准抽象是典型的惯用Isar,强调推理的结构。