Isabelle中是否内置了hashmap功能?

时间:2014-01-20 16:19:35

标签: hashmap isabelle

在perl中有哈希值,键值对。 Isabelle / HOL是否具有内置这样的函数和相应的定理?

1 个答案:

答案 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,尽管这些函数更难处理。