将一组转换为Isabelle中的列表

时间:2015-02-20 16:10:54

标签: isabelle

如何将一组转换为Isabelle的列表?

我对函数定义感兴趣,签名为:

"'a set => 'a list"

我该如何定义?

2 个答案:

答案 0 :(得分:1)

通过在Isabelle / jEdit的查询面板的查找常量标签中搜索"'a set" "'a list",我偶然发现了

sorted_list_of_set :: "'a set ⇒ 'a list"

来自理论List。但是,此常量要求'a位于类linorder中,即,它仅适用于线性排序元素上的集合。而且,正如我的评论中所提到的,它只适用于有限集。 sorted_list_of_set的定义正上方还有一个警告,我在此重复完整性:

  

此函数将(有限的)线性有序集映射到已排序   名单。警告:在大多数情况下,转换来自不是一个好主意   设置为列表,但一个应该转换到另一个方向(通过   @ {const set})。

答案 1 :(得分:1)

你可以从

开始
definition set_to_list :: "'a set ⇒ 'a list"
  where "set_to_list s = (SOME l. set l = s)"

然后证明

lemma  set_set_to_list:
   "finite s ⟹ set (set_to_list s) = s"
unfolding set_to_list_def by (metis (mono_tags) finite_list some_eq_ex)