使用Map.thy

时间:2016-09-08 20:28:09

标签: isabelle

到目前为止,我可以定义地图

map_of [(1, 2), (3, 4::int)]

类型

'a => int option

当我尝试获取地图的域名时:

dom (map_of [(1, 2), (3, 4::int)])

给出错误

Wellsortedness error:
Type 'b not of sort enum
Cannot derive subsort relation {equal,numeral} < enum

Enum.thy中的示例仅显示有限的情况,如何证明int或nat等无限类型的枚举属性?

更新1: 修复了语法并提供了确切的错误消息

1 个答案:

答案 0 :(得分:1)

这看起来像是在尝试评估表达式时出现的问题

dom (map_of [(1, 2), (3, 4::int)])

e.g。使用“value”命令。

这不起作用的原因是“map_of”本质上为您提供了一个函数,而函数的域通常不是可计算的。

不过,您可以使用地图并执行校样:

lemma "dom (map_of [(1, 2), (3, 4::nat)]) = {1, 3}"
by simp

或者,如果你想要一些可计算的东西,那么你可以继续使用元组列表。在Isabelle2016-1中,也将有一个专用的“有限图”类型:

theory Scratch
  imports "~~/src/HOL/Library/Finite_Map"
begin

value "fmdom' (fmap_of_list [(1, 2), (3, 4::nat)])"
(* prints "{1, 1 + 1 + 1}" *)