Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Isabelle 为什么我对从有限集中选择元素的函数的定义不一致?_Isabelle_Set Theory_Definitions - Fatal编程技术网

Isabelle 为什么我对从有限集中选择元素的函数的定义不一致?

Isabelle 为什么我对从有限集中选择元素的函数的定义不一致?,isabelle,set-theory,definitions,Isabelle,Set Theory,Definitions,我想对从有限集中选择一个元素的函数进行推理 我试图定义一个谓词,告诉我某个给定函数是否是这样一个“选择器”函数: definition chooser :: "('a set ⇒ 'a) ⇒ bool" where "chooser f ⟷ (∀ A . finite A ⟶ f A ∈ A)" 实际上,我想从中选择元素的有限集是具体类型的,但将具体类型放在'a的位置会导致同样的问题 我还试图省略有限A,但是我处理的集合是有限的,我甚至不想在这里考虑选择公理 现在这个定义似乎不一致: lemm

我想对从有限集中选择一个元素的函数进行推理

我试图定义一个谓词,告诉我某个给定函数是否是这样一个“选择器”函数:

definition chooser :: "('a set ⇒ 'a) ⇒ bool"
where "chooser f ⟷ (∀ A . finite A ⟶ f A ∈ A)"
实际上,我想从中选择元素的有限集是具体类型的,但将具体类型放在
'a
的位置会导致同样的问题

我还试图省略
有限A
,但是我处理的集合是有限的,我甚至不想在这里考虑选择公理

现在这个定义似乎不一致:

lemma assumes "chooser f" shows "False" using assms chooser_def by force
如何以合理的方式定义
chooser
?我想使用它如下:

assume "finite A"
moreover assume "chooser f"
moreover assume "choice = f A"
ultimately have "choice ∈ A" by ???
大多数情况下,重要的只是选择了集合中的一个成员,而不是选择它的方式


背景:我想正式确定拍卖中的平局破坏者(第4节)。假设拍卖物品有两个最高出价,我们需要任意选择一个应该赢得拍卖的出价人


顺便说一句,这里有一个非常简单的例子(有点难理解):


我仅根据Brian的评论提供细节,即选择函数仅为非空集合定义

从关于Choice_函数的Wikipedia条目:

definition chooser :: "('a set ⇒ 'a) ⇒ bool"
where "chooser f ⟷ (∀ A . finite A ⟶ f A ∈ A)"
选择函数(选择器,选择)是一个数学函数f,它定义在非空集合的某个集合X上,并为该集合中的每个集合S分配一些元素f(S)

到目前为止,你可能已经从布赖恩的作品中得到了你所需要的,但我还是这样做了。
chooser
的定义只需要集合不为空:

definition chooser :: "('a set => 'a) => bool" where 
  "chooser f <-> (!A. A ~= {} --> f A ∈ A)"

theorem "(finite A & A ~= {} & chooser f) ==> (f A ∈ A)"
by(metis chooser_def)

theorem "(A ~= {} & chooser f) ==> (f A ∈ A)"
by(metis chooser_def)

--GC

假设
选择器f
,这不是意味着
f{}∈ {}
?哦,真的-谢谢你的关注!感谢布莱恩和你;我现在已经修好了。
definition choice :: "'a set => 'a" where
  "choice T = (SOME x. x ∈ T)"

theorem "T ~= {} ==> choice T ∈ T"
  by(unfold choice_def, metis ex_in_conv someI