我可以命名通过案例分析生成的变量吗?

时间:2012-12-07 16:17:51

标签: isabelle

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

1 个答案:

答案 0 :(得分:6)

如果您使用结构化校样(从proof关键字开始),您可以使用case keywoard选择要证明的案例,并为案例分析/创建的变量命名感应:

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和{{1 }}

在校样栏中,您可以使用xs命令查看案例列表。

另一方面,如果您使用print_cases - 样式,则无法直接命名这些变量(在这种情况下,您可能需要apply而不是{{1}因为你将不得不处理绑定变量而不是自由变量)。方法case_tac可用于重命名最外层的元量化变量。

对于大多数项目(除了程序验证之外,例如在L4.verified项目中),常见的证明样式是使用大多数结构化证明。非结构化样张用于探索,很少变得如此复杂,以至于必须重命名变量。