如何映射映射的键和值?
How to map both keys and values of a mapping?
我需要定义一个函数,将有限映射的键和值映射到一组键值对中:
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_of_list
函数的反函数。
一种可能的方法是组合图像、域和查找:表达式
λ 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"
我需要定义一个函数,将有限映射的键和值映射到一组键值对中:
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_of_list
函数的反函数。
一种可能的方法是组合图像、域和查找:表达式
λ 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"