在perl中有哈希值,键值对。 Isabelle / HOL是否具有内置这样的函数和相应的定理?
答案 0 :(得分:2)
通常在Isabelle / HOL中,您只需使用'key ⇒ 'value
类型的函数。例如:
definition "num_animals
≡ (λ_. 0)(''dog'' := 3, ''cat'' := 42, ''mouse'' := 12)"
lemma "num_animals ''dog'' = 3"
by (simp add: num_animals_def)
此处,(λ_. 0)
是为所有输入值返回0
的函数,而语法(''dog'' := 3)
修改现有函数,以便输入dog
返回{{1} }}
如果您希望能够确定某个功能是否不包含特定键,您可以使用Isabelle / HOL的3
类型:
option
这与哈希表有很多不同之处。例如,Isabelle必须执行至少definition "num_animals
≡ (λ_. None)(''dog'' := Some 3, ''cat'' := Some 42, ''mouse'' := Some 12)"
lemma "num_animals ''elephant'' = None"
by (simp add: num_animals_def)
步骤才能以此格式查找函数中的值。此外,没有进行散列:显式存储和比较键值。但是,通常,因为你是推理关于这些事情,而不是通常尝试执行这些事情,所以这不是问题。
如果您正在处理较大的证明条款,您可能需要查看其他函数表示,例如AFP中的Binary Search Trees,尽管这些函数更难处理。