quotient_type警告“没有地图功能”

时间:2018-04-28 21:01:47

标签: isabelle

当使用quotient_type命令时,我收到以下警告:“没有为Example.A定义映射函数。这将在以后导致问题”。 以下是触发警告的最小示例(使用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

所以我的问题是: 这个上下文中的map函数是什么意思(我只知道函数式编程中仿函数上下文中map函数的概念)? 它与数据类型包映射函数有什么关系,比如由注释行生成的函数? 以后会遇到哪些问题?

1 个答案:

答案 0 :(得分:1)

datatype命令默认情况下不会使用商包注册生成的map函数,因为可能有更多的常规映射器(如果有死类型变量)。因此,您必须手动执行仿函数声明:

functor map_A
   by(simp_all add: A.map_id0 A.map_comp o_def)

如果您以后想要通过商类型提升定义,则需要映射器及其定理。这是Isabelle邮件列表中的discussed