如何从定义的选项中提取具体值

How to extract concrete values from defined options

当你调用 mapName(identifier) 时是可能的,它 returns 不是 'rangeType option' 的东西,因为它是一个有限映射(有限域和范围)并且您确定标识符存在于地图中?

在回答你的问题之前,让我们把我们正在谈论的那种 "partial functions" 精确化。

(明确地)部分函数在 Isabelle/HOL 中具有类型 'a => 'b option。然后对于每个给定的 x :: 'a 这样的部分函数 f :: 'a => 'b option 导致 None (意味着 f 未在 x 上定义)或 Some y :: 'b option (只要 f 实际上是在 x 上定义的)。

现在,如果对于某些输入 x 你知道(在 Isabelle/HOL 中应该意味着你有一个证明)定义了 f x,你可以使用选择器- 选项类型的函数 the : 'a option => 'a。因此,每当 f x = Some y 然后 the (f x) 导致 y.

注意原则上也可以调用the None。在那种情况下,我们会遇到 Isabelle/HOL 中可用的另一种偏函数。 the None 的结果仍然是 'b 类型,但它是该类型 'b 的任意值(因此 "undefined"),我们几乎无法证明任何值。