Require Import Omega 后 bool 和 Datatypes.bool 的混淆

Mix-up of bool and Datatypes.bool after Require Import Omega

我正在学习软件基础知识,运行 出错了。

ERROR : The term "true" has type "bool" while it is expected to have type "Datatypes.bool"

下面的证明。

Theorem beq_nat_true : forall n m,
  beq_nat n m = true -> n = m.

我发现当我使用 Require Import Omega 时会发生这种情况。
关于 Omega 引入环境的任何提示、建议或解释?

Omega 模块间接导入了许多操纵自然数的标准库的定义,其中一些最终遮蔽了软件基础的一部分。 beq_nat 函数就是其中之一。出现问题是因为 beq_nat returns 标准布尔值的标准库版本,而 SF returns 的版本是重新定义的布尔值。

我们不久前就注意到了这个问题,并且已经在 current version 中修复了它。如果您不想重新下载所有内容(或者如果您自己导入了 Omega),您也可以只限定 beq_nat 以使用正确的版本。我的猜测是 Basics.beq_nat 应该有效。