不确定Coq手册v8.7.0 item 1.2.10中的以下含义:
我的理解是第一个的类型检查是由Coq(某些默认值)完成的,而第二个是由选择的Coq的VM(可能有不同的输入规则)完成的。
我尝试使用以下示例,但看不出与错误消息有任何区别
Check (3 : bool). (* Error: The term "3" has type "nat" while it is expected to have type "bool".*)
Check (3 <: bool). (* same as above*)
我的问题是:可能是默认情况和VM行为相同的情况?
此外,有一个例子,其中“:”和“&lt;:”的行为不同,所以人们可能会更加小心地选择另一个。
答案 0 :(得分:5)
据我所知,默认的还原机制和VM减少机制旨在强制执行相同的打字规则。
但它们的行为并不相同,因为对于某些计算,验证时间可能是不同的数量级。
这是一个例子
Time Check (refl_equal 1 : (10 ^ 200 - 9 * 10 ^ 199) / 10 ^ 199 = 1).
...
Finished transaction in 0.103 secs ...
Time Check (refl_equal 1 <: (10 ^ 200 - 9 * 10 ^ 199) / 10 ^ 199 = 1).
...
Finished transaction in 0.053 secs
这很重要,因为在证明的中间可能会发生大量计算。