Coq中的自由变量

时间:2012-07-16 09:17:45

标签: coq free-variable

是否有任何函数/命令来获取/检查一个自由变量,假设n:U,是否存在于术语/表达式e中,使用Coq?请分享。

例如,我想在Coq中声明“n不会出现在e的自由名称中”。

谢谢,

Wilayat

1 个答案:

答案 0 :(得分:2)

我们假设你在讨论 Coq 术语中的自由变量:

处理基本的Coq证明(不使用外部),在证明上下文之外,你操纵的是一个封闭的术语,即一个只有绑定变量的术语。如果在校样模式下,目标中的字词e似乎有自由变量n(意味着变量n位于校对上下文中),可以使用generalize策略简单地使绑定显式(并关闭目标术语)。

在更高级的情况下,您的小香草证明可能涉及假设或参数形式的自由变量,在这种情况下,您可以使用Print Assumptions列出它们。

另一方面,如果您正在谈论使用Coq术语来表示术语在特定语言中的概念(例如,您正在形式化这种语言),您只需要给予特殊处理到你的语言的自由变量。

如果您在语言术语的归纳定义中为其提供特定构造函数,则应该很容易说明某个术语是否具有自由变量。如果你不熟悉代表替代的概念(并非如此微不足道)。在语言的自由变量中,您可以找到从TAPL到B.C.Pierce SF courseresults of the POPLMark Challenge的精度不断提高的指针。