Isabelle 如何从定义的选项中提取具体值
如果您调用,比如说,Isabelle 如何从定义的选项中提取具体值,isabelle,Isabelle,如果您调用,比如说,mapName(identifier),它返回的内容不是“rangeType option”,因为它是一个有限的映射(有限域和范围),并且您确定该标识符存在于映射中?在回答您的问题之前,让我们先确定“部分函数”的类型我们说的是精确的 (明确地)部分函数在Isabelle/HOL中具有类型'a=>'b选项。然后,对于每个给定的x::'a这样的部分函数f:'a=>'b选项要么导致None(意思是f没有在x上定义)要么某些y:'b选项(只要f实际上是在x上定义的) 现在,如果对于某
mapName(identifier)
,它返回的内容不是“rangeType option
”,因为它是一个有限的映射(有限域和范围),并且您确定该标识符存在于映射中?在回答您的问题之前,让我们先确定“部分函数”的类型我们说的是精确的
(明确地)部分函数在Isabelle/HOL中具有类型'a=>'b选项
。然后,对于每个给定的x::'a
这样的部分函数f:'a=>'b选项
要么导致None
(意思是f
没有在x
上定义)要么某些y:'b选项
(只要f
实际上是在x
上定义的)
现在,如果对于某些输入x
,您知道(在Isabelle/HOL中,这应该意味着您有一个证明)定义了fx
,您可以使用选项类型的选择器函数a option=>a
。因此,每当fx=y时,fx
就会产生y
请注意,原则上也可以调用None
。在这种情况下,我们会遇到另一种在Isabelle/HOL中可用的部分函数。无
的结果仍然是'b
类型,但它是任意的(因此是“未定义的”)该类型的值'b
我们几乎无法证明任何东西。如果你有一个'a=>'b类型的mapmap\u name
选项
,并且知道map\u name id
将导致某些x
类型'b
的一些x
,然后您可以使用::'a option=>'a
立即提取x
,也就是说,映射名x
将产生x
。这正是我需要的。谢谢你,克里斯!好的,那么我将把我的评论变成一个答案,这样这个问题就可以标记为已回答,供以后的访问者使用。