在Isabelle中将集合转换为列表

在Isabelle中将集合转换为列表,isabelle,Isabelle,如何在Isabelle中将集合转换为列表 我对函数定义感兴趣,其签名为: "'a set => 'a list" 我如何定义它?在伊莎贝尔/杰迪特的查询面板的查找常量选项卡中搜索“'a set”“'a list” sorted_list_of_set :: "'a set ⇒ 'a list" 从理论列表中。然而,该常数要求'a在类linorder中,即,它仅适用于线性有序元素上的集合。此外,正如我在评论中提到的,它只适用于有限集。在集合的sorted\u list\u定义的正上方还有

如何在Isabelle中将集合转换为列表

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

"'a set => 'a list"
我如何定义它?

在伊莎贝尔/杰迪特的查询面板的查找常量选项卡中搜索
“'a set”“'a list”

sorted_list_of_set :: "'a set ⇒ 'a list"
从理论
列表中
。然而,该常数要求
'a
在类
linorder
中,即,它仅适用于线性有序元素上的集合。此外,正如我在评论中提到的,它只适用于有限集。在集合的
sorted\u list\u定义的正上方还有一个警告,为了完整起见,我在这里重复:

此函数将(有限)线性有序集映射到排序集 名单。警告:在大多数情况下,从 设置为列表,但其中一个应转换为另一个方向(通过 @{const set})

你可以从

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)

通常,这只适用于有限集(或通过返回无限集的无意义结果)。当你说“函数定义”时,你是指一些任意函数(可在Isabelle/HOL中定义)还是也可以作为函数代码执行的东西?对于任何找到这个线程的人,让我指出它的存在。谢谢你去找那个理论的作者:)。它是正式证据档案的一部分()