Isabelle 如何映射映射的键和值?

Isabelle 如何映射映射的键和值?,isabelle,Isabelle,我需要定义一个函数,将有限映射的键和值映射到一组键值对中: theory Test imports Main "~~/src/HOL/Library/Finite_Map" begin definition denorm :: "('a, 'b) fmap ⇒ ('a × 'b) fset" where "denorm m ≡ " end 问题是我不能通过递归定义这个函数,因为fmap不是归纳数据类型,它没有任何构造函数 我猜fmap在内部表示为成对的列表。是否可以将fmap转换为

我需要定义一个函数,将有限映射的键和值映射到一组键值对中:

theory Test
  imports Main "~~/src/HOL/Library/Finite_Map"
begin

definition denorm :: "('a, 'b) fmap ⇒ ('a × 'b) fset" where
  "denorm m ≡ "

end
问题是我不能通过递归定义这个函数,因为
fmap
不是归纳数据类型,它没有任何构造函数


我猜
fmap
在内部表示为成对的列表。是否可以将
fmap
转换为列表?我需要列表函数的
fmap\u的逆函数。

一种可能的方法是合成图像、域和查找:表达式

λ m. (λ k. (k, the (fmlookup m k))) |`| fmdom m
具有所需的类型

('a, 'b) fmap ⇒ ('a × 'b) fset

并且应该为map
m
计算所需的集合。一种可能的方法是合成图像、域和查找:表达式

λ m. (λ k. (k, the (fmlookup m k))) |`| fmdom m
具有所需的类型

('a, 'b) fmap ⇒ ('a × 'b) fset

并应计算地图的所需集
m

此函数已存在:

fset_of_fmap :: "('a, 'b) fmap ⇒ ('a × 'b) fset"

此功能已经存在:

fset_of_fmap :: "('a, 'b) fmap ⇒ ('a × 'b) fset"

我在《伊莎贝尔2016-1》中找不到它。也许是在最新的不稳定版本中?是的,我在2017年添加了它,其中第一个候选版本是可用的。我在Isabelle 2016-1中找不到它。也许是最新的不稳定版本?是的,我为2017年添加了它,第一个候选版本已经发布。