是否有任何函数/命令来获取/检查一个自由变量,假设n:U,是否存在于术语/表达式e中,使用Coq?请分享。
例如,我想在Coq中声明“n不会出现在e的自由名称中”。
谢谢,
Wilayat
答案 0 :(得分:2)
我们假设你在讨论 Coq 术语中的自由变量:
处理基本的Coq证明(不使用外部),在证明上下文之外,你操纵的是一个封闭的术语,即一个只有绑定变量的术语。如果在校样模式下,目标中的字词e
似乎有自由变量n
(意味着变量n
位于校对上下文中),可以使用generalize
策略简单地使绑定显式(并关闭目标术语)。
在更高级的情况下,您的小香草证明可能涉及假设或参数形式的自由变量,在这种情况下,您可以使用Print Assumptions
列出它们。
另一方面,如果您正在谈论使用Coq术语来表示术语在特定语言中的概念(例如,您正在形式化这种语言),您只需要给予特殊处理到你的语言的自由变量。
如果您在语言术语的归纳定义中为其提供特定构造函数,则应该很容易说明某个术语是否具有自由变量。如果你不熟悉代表替代的概念(并非如此微不足道)。在语言的自由变量中,您可以找到从TAPL到B.C.Pierce SF course到results of the POPLMark Challenge的精度不断提高的指针。