【发布时间】:2018-04-25 07:56:44
【问题描述】:
我希望能够在 Coq 中比较两个“列表”类型的项目,并得到一个布尔值“真”或“假”来表示它们的等价性。
现在,我正在这样比较两个列表:
Eval vm_compute in (list 1 = list 2).
我得到一个形式的 Prop:
= nil
:: (2 :: 3 :: nil)
:: (2 :: nil)
:: (3 :: nil) :: nil =
nil
:: (2 :: 3 :: nil)
:: (2 :: nil)
:: (3 :: nil) :: nil
: Prop
显然 list1 = list2,那么我如何让它只返回 true 或 false?
【问题讨论】:
-
您对
list做出了自己的定义吗?通常它是一个类型构造函数,这样list nat是数字列表的type。但是您似乎将它用作(值)构造函数,创建了一个具体的列表,所以您一定是自己编造了一些东西,对吧? -
请注意,
=返回一个Prop,这与布尔值不同。 This answer 更详细地解释了这个问题。
标签: coq