到目前为止,我可以定义地图
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: 修复了语法并提供了确切的错误消息
答案 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}" *)