Zulip Chat Archive
Stream: new members
Topic: Is "choice ⟨1⟩" equal to "1"?
Deming Xu (Nov 07 2024 at 00:51):
I would like to know whether one of the following two theorems, "yes" and "no", can be proved, or neither of them can be proved?
open Classical
#print Nonempty
#check choice
noncomputable def x : Nat := choice ⟨ 1 ⟩
#print x.proof_1
theorem yes : x = 1 := by
rw [x]
-- ⊢ choice x.proof_1 = 1
rfl -- error
theorem no : x ≠ 1 := by
rw [x]
-- ⊢ choice x.proof_1 ≠ 1
rfl -- error
According to my understanding, this code means that I know there is an element 1 in the natural number type, so I can use ⟨ 1 ⟩
to prove Nonempty Nat
. Then according to the axiom of choice, I can pick out some element from this non-empty natural number type, and call it x.
So, can I still judge whether x is 1? Is x=1
a proposition that cannot be proved or falsified?
Yakov Pechersky (Nov 07 2024 at 01:03):
Since docs#Classical.choice (a function into Sort) is axiomatized with no partner specification axiom, then no, you can never prove either of the statements. The only thing I think you might be able to prove is that example : Classical.choice (Nonempty.intro 1) = Classical.choice (Nonempty.intro 0) := congrArg _ rfl
thanks to Nonempty being a Prop
Yakov Pechersky (Nov 07 2024 at 01:06):
Compare docs#Classical.choice to the pair of docs#Classical.choose and docs#Classical.choose_spec
Edward van de Meent (Nov 07 2024 at 09:52):
note that these are also available as docs#Exists.choose and docs#Exists.choose_spec , enabeling dot notation
Last updated: May 02 2025 at 03:31 UTC