Isabelle 中的 Map 和 Mapping 有什么区别?
What's the difference between Map and Mapping in Isabelle?
所以我上网,发现了这些:
https://isabelle.in.tum.de/library/HOL/HOL/Map.html(地图)
https://isabelle.in.tum.de/library/HOL/HOL-Library/Mapping.html(映射)
两个以“地图”一词开头的理论。我通读了好一阵子,但我无法真正辨别出它们之间的任何显着差异。有没有什么时候我应该使用前者而不是后者,反之亦然?
提前致谢!
Map.thy
给大家一些偏函数的词汇,写成'a ⇀ 'b
,是'a ⇒ 'b option
.
的缩写
另一方面,Mapping
理论将其包装成一种新型的偏函数,这对代码生成很有用。如果您尝试导出涉及类型 'a ⇀ 'b
的部分函数的代码,您将在导出的代码中得到 'a ⇒ 'b option
,这意味着例如诸如请求此类函数的域之类的事情将根本无法执行。
另一方面,使用 Mapping
,您可以导出更合理的(有限)映射实现,例如关联列表或红黑树。
所以,简短的回答:不用担心 Mapping
,除非(以及何时)您想要导出可执行代码。
所以我上网,发现了这些:
https://isabelle.in.tum.de/library/HOL/HOL/Map.html(地图)
https://isabelle.in.tum.de/library/HOL/HOL-Library/Mapping.html(映射)
两个以“地图”一词开头的理论。我通读了好一阵子,但我无法真正辨别出它们之间的任何显着差异。有没有什么时候我应该使用前者而不是后者,反之亦然?
提前致谢!
Map.thy
给大家一些偏函数的词汇,写成'a ⇀ 'b
,是'a ⇒ 'b option
.
另一方面,Mapping
理论将其包装成一种新型的偏函数,这对代码生成很有用。如果您尝试导出涉及类型 'a ⇀ 'b
的部分函数的代码,您将在导出的代码中得到 'a ⇒ 'b option
,这意味着例如诸如请求此类函数的域之类的事情将根本无法执行。
另一方面,使用 Mapping
,您可以导出更合理的(有限)映射实现,例如关联列表或红黑树。
所以,简短的回答:不用担心 Mapping
,除非(以及何时)您想要导出可执行代码。