Isabelle 如何简化数据类型上函数属性的证明?
我创建了一个小证明,旨在创建一个示例,用于在证明案例中使用Isabelle 如何简化数据类型上函数属性的证明?,isabelle,isar,Isabelle,Isar,我创建了一个小证明,旨在创建一个示例,用于在证明案例中使用next: theory RedGreen imports Main begin datatype color = RED | GREEN fun green :: "color => color" where "green RED = GREEN" | "green GREEN = GREEN" lemma disj_not: "P \<or> Q \<Longrightarro
next
:
theory RedGreen
imports Main
begin
datatype color = RED | GREEN
fun green :: "color => color"
where
"green RED = GREEN"
| "green GREEN = GREEN"
lemma disj_not: "P \<or> Q \<Longrightarrow> \<not>P \<longrightarrow> Q"
proof
assume disj: "P \<or> Q"
assume "\<not>P"
from this show "Q" using `P \<or> Q` by (simp)
qed
lemma redgreen: "x \<noteq> RED \<longrightarrow> x = GREEN"
proof
assume notred: "x \<noteq> RED"
have "x = RED \<or> x = GREEN" by (simp only: color.nchotomy)
from this show "x = GREEN" using notred by (simp add: disj_not)
qed
lemma "green x = GREEN"
proof cases
assume "x = RED"
from this show "green x = GREEN" by (simp)
next
assume "x \<noteq> RED"
from this have "x = GREEN" by (simp add: redgreen)
from this show "green x = GREEN" by (simp)
qed
理论红绿
主要进口
开始
数据类型颜色=红色|绿色
趣味绿色::“颜色=>颜色”
哪里
“绿-红=绿”
|“绿色=绿色”
引理不:“P\Q\\P\Q”
证明
假设disj:“P\Q”
假设“\P”
从本节目中使用'P\Q`by(simp)的“Q”
量化宽松
引理红绿:“x\RED\x=GREEN”
证明
假设不红色:“x\RED”
使用“x=RED\x=GREEN”(仅限simp:color.nchotomy)
从该显示中,使用notred by(simp add:disj_not)显示“x=GREEN”
量化宽松
引理“绿色x=绿色”
证明案例
假设“x=红色”
由(simp)主持的本节目“绿色x=绿色”
下一个
假设“x\RED”
从中选择“x=GREEN”by(simp add:redgreen)
由(simp)主持的本节目“绿色x=绿色”
量化宽松
这能在不丢失细节的情况下简化吗?使用一些魔术不是我想要的。改进Isar的使用风格是受欢迎的。我的经验是,像您的
disj\u not
和redgreen
这样的低级(特别)规则几乎没有用处。如果确实需要,这很可能是由于缺乏自动化(通过适当的simp
、intro
、elim
和dest
规则)。很高兴,在你的例子中,这些“中间引理”根本没有必要(我也不认为它们有特殊的教育价值)。来回答你关于简化版本的问题。我认为这样做的一个典型方式是:
lemma "green x = GREEN"
proof (cases x)
case RED
then show "green x = GREEN" by simp
next
case GREEN
then show "green x = GREEN" by simp
qed
其中,自动生成的事实
color.detain
用于对color
类型的变量x
进行案例证明,我要提出的另一个风格建议是,您可以说然后通过simp显示?论文,这避免了一些重复<代码>?论文只是你试图证明的原始陈述的简写。@davidg:你当然是对的。为了可读性(如果目标很短),我有时会显式地编写show语句。在实际开发中,上述情况将通过(案例x)simp_all(无论如何)通过得到证实