coq 中的多态相等

polymorphic equality in coq

我找不到重载的标准库 == 函数和 returns 布尔值(或 sumbool,或我可以用来计算的东西)。我希望能够做到

3==5

"hello" == "hello"

无需指定参数的类型。如果 Coq 没有这种相等类型的特性,我会感到惊讶;有人可以告诉我在哪里可以找到它吗?我有一种感觉,它与 ssreflect 有关,但我无法弄清楚。

谢谢。

Ssreflect 有 eqType class,它正是您需要的:

From mathcomp Require Import ssreflect ssrfun ssrbool eqtype.

Check (3 == 5).

大多数标准类型都在 ssreflect 中定义了相等运算符。不幸的是,字符串不是其中之一,尽管自己动手并不难。 (Deriving library 附带一个实例,但尚未标记为稳定。)