syntax - 什么意思(:b) c and [a:b] c in some Coq theories and where is it defined?

标签 syntax coq

我看到了一个非常奇怪的语法:类型中的 (name:type1) type2 和表达式中的 [name:type] expr,看起来像是 Pi 和 Lambda 的替代语法,但几个小时后我在文档中没有找到任何内容苦苦寻找,一切都是徒劳。

它是什么意思以及它是在哪里定义的? (抱歉,我丢失了示例用法的链接)

最佳答案

您一直在阅读为旧版本 Coq 编写的理论。 V8.0 对语法进行了重大修改。 V8.0 附带了一个将 V7 理论翻译成 V8 的工具,效果非常好;该工具已从后续版本中删除。

您可以在论文Translation from Coq V7 to V8中看到更改的回顾.

特别地,(a:b) c 是一个通用量化,现在写成 forall a:b, c[a:b] c 是一个 lambda 抽象,现在写成 fun a:b => c。阅读旧理论时另一个重要的事情是函数应用程序需要括号并且优先级较低:直到 V7,(f x = y) 意味着 (f (x=y))([x:nat]y z) 表示 (([x:nat]y) z)

关于syntax - 什么意思(:b) c and [a:b] c in some Coq theories and where is it defined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667804/

相关文章:

math - 如何查找 Coq 证明策略的定义或实现?

recursion - 依赖参数的结构递归

coq - 在 Coq 中设置带有空格和大括号的理论符号

javascript - 这两种 JavaScript OOP 语法的用法有何不同?

if-statement - = google 文档中的 IF 语法错误

Python,括号前的下划线有什么作用

coq - Coq 中的 Bove-Capretta 方法

javascript - 为什么空格会影响我的 html 元素中的 JavaScript?

php - 如何防止Symfony 4中出现ParseError?

coq - 破坏不动点时,添加假设而不简化