使用setient_type命令时,我会收到以下警告:"例如,未定义的地图函数。这是触发警告的最小示例(用Isabelle2017测试(。
theory Example
imports
Main
begin
datatype 'a A = B "'a A" | C
(*for map: map *) (* uncommenting doesn't fix the warning*)
quotient_type 'a Q = "'a A" / "op ="
by (rule identity_equivp)
end
所以我的问题是:在此上下文中,地图函数的含义是什么(我只知道函数编程中函数的映射函数的概念(?它与Datatype软件包映射功能有什么关系,例如评论行生成的函数?以后会出现哪些问题?
默认情况下,datatype
命令不会带有商软件包生成的映射功能,因为可能会有更多的通用映射器(如果有死类型变量(。因此,您必须手动执行函数声明:
functor map_A
by(simp_all add: A.map_id0 A.map_comp o_def)
如果您以后想通过商类型提起定义,则需要映射器及其定理。这已在isabelle邮件列表中进行了讨论。