Zulip Chat Archive
Stream: new members
Topic: Classical.choice produces equal elements
Constantine Ter-Matevosian (Aug 17 2024 at 19:45):
Hi all. I was looking at the proof of Diaconescu's theorem (Classical.em
), and noticed that on lines 58-59 it uses [what I think is] the fact that Classical.choice produces equal elements of a Nonempty
type.
theorem choiceEq {α : Sort u} (a b : Nonempty α) :
@Eq α (Classical.choice a) (Classical.choice b) := by rfl
This then seems to propagate to other AC-related def
s like Classical.indefiniteDescription
, Classical.choose
, and Classical.choose_spec
, i.e. any two values of these def
s are equal.
Out of sheer curiosity, how/why does this work? And why doesn't it work for, say,
axiom hi {A : Sort u} (B : Sort v) (x : A) : B
theorem hiEq {A : Sort u} {B : Sort v} (x x' : A) : hi B x = hi B x' := sorry
?
Kyle Miller (Aug 17 2024 at 19:52):
Nonempty
is a proposition, and this is just relying on proof irrelevance (proofs of the same proposition are defeq).
Constantine Ter-Matevosian (Aug 17 2024 at 19:54):
Oh, right, true!! Thank you! <3
Last updated: May 02 2025 at 03:31 UTC