Isabelle 我能说出案例分析产生的变量吗?

Isabelle 我能说出案例分析产生的变量吗?,isabelle,Isabelle,是否可以为使用案例分析或归纳时生成的变量指定我自己的名称?如果您使用结构化证明(从proof关键字开始),您可以使用case键盘选择要证明的案例,并为案例分析/归纳创建的变量指定名称: lemma "length (rev xs) = length xs" proof (induct xs) case Nil then show ?case ... next case (Cons x xs) then show ?case ... qed 这里case(Cons x xs)告诉

是否可以为使用案例分析或归纳时生成的变量指定我自己的名称?

如果您使用结构化证明(从
proof
关键字开始),您可以使用
case
键盘选择要证明的案例,并为案例分析/归纳创建的变量指定名称:

lemma "length (rev xs) = length xs"
proof (induct xs)
  case Nil
  then show ?case ...
next
  case (Cons x xs)
  then show ?case ...
qed
这里
case(Cons x xs)
告诉Isabelle,你想证明一个列表由一个开始元素和一个剩余列表(即归纳步骤)组成的情况,并命名变量
x
xs

在校对块中,您可以使用
print\u cases
命令查看案例列表

另一方面,如果您使用的是
apply
-样式,则无法直接命名这些变量(同样,在这种情况下,您可能需要
case\u tac
而不是
cases
,因为您必须处理绑定变量而不是自由变量)。有一种方法
rename\u tac
,可用于重命名最外层的元量化变量

对于大多数项目(除了程序验证的显著例外,如L4.verified项目),常见的证明风格是使用大部分结构化证明。非结构化证明用于探索,很少变得如此复杂以至于需要重命名变量