Coq 项目 1.2.10 类型转换

Coq item 1.2.10 Type cast

不确定以下在 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 行为相同的情况吗?

此外,最好有一个示例,其中“:”和“<:”的行为不同,这样人们可以更加谨慎地从另一个中选择一个。

据我所知,默认缩减机制和 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

这很重要,因为在证明过程中可能会发生大量计算。