Я хотел бы рассказать о функциях, которые выбирают один элемент из конечного множества.Почему мое определение функции, которая выбирает элемент из конечного множества непоследовательным?
Я попытался определить предикат, который говорит мне, что некоторые данная функция является ли такая функция «Chooser»:
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 из this paper). Предположим, что есть два наивысших ставки для предмета, выставленного на аукцион, нам нужно произвольно выбрать одного участника, который должен выиграть аукцион.
Вот, кстати, действительно минимальный пример (который немного сложнее понять):
lemma "(∀ A . finite A ⟶ f A ∈ A) ⟹ False" by force
Предполагая, что 'f' функцией выбора, не означает, что' F {} ∈ {} '? –
Упс, действительно - спасибо за то, что заметили! –