有限集合から 1 つの要素を選択する関数について推論したいと思います。
特定の関数がそのような「選択」関数であるかどうかを示す述語を定義しようとしました。
definition chooser :: "('a set ⇒ 'a) ⇒ bool"
where "chooser f ⟷ (∀ A . finite A ⟶ f A ∈ A)"
実際には、要素を選択したい有限集合は具象型ですが、'a
の代わりに具象型を配置すると、同じ問題が発生します。
も省略しようとしましfinite 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 )。オークションにかけられているアイテムに 2 つの最高入札額があると仮定すると、オークションに勝つべき 1 人の入札者を任意に選択する必要があります。
これは、ところで、本当に最小限の例です(これは少し理解しにくいです):
lemma "(∀ A . finite A ⟶ f A ∈ A) ⟹ False" by force