Zulip Chat Archive

Stream: general

Topic: decidability implies LEM


Huỳnh Trần Khanh (Jul 28 2021 at 13:14):

how does decidability imply LEM? this is something that I struggle to understand

Yakov Pechersky (Jul 28 2021 at 13:16):

Decidable means that given some true-false statement, there is a defined, executable algorithm to determine whether it is true or false. No in between. Decidability by definition means that the algorithm terminates, so you will get exactly one of either true or false. That's my understanding

Eric Wieser (Jul 28 2021 at 13:18):

Decidability of all propositions implies LEM

Eric Wieser (Jul 28 2021 at 13:18):

Obviously the fact that natural numbers are decidably equal does not imply LEM generally

Yakov Pechersky (Jul 28 2021 at 13:22):

Yes, I meant LEM for the class of propositions for which one has decidability

Eric Wieser (Jul 28 2021 at 13:25):

Sure, I was just making sure Huỳnh Trần Khanh was aware of the distinction

Mario Carneiro (Jul 28 2021 at 13:32):

syntactically, it's a triviality: psum p (~p) implies p \/ ~p by case split

Eric Wieser (Jul 28 2021 at 13:32):

What's the relevance of psum?

Mario Carneiro (Jul 28 2021 at 13:32):

that's what decidable p is

Eric Wieser (Jul 28 2021 at 13:33):

src#decidable says otherwise

Mario Carneiro (Jul 28 2021 at 13:33):

I would write sum but that doesn't typecheck in lean for silly reasons

Mario Carneiro (Jul 28 2021 at 13:33):

They are isomorphic types

Eric Wieser (Jul 28 2021 at 13:33):

If we're handwaving decidable as psum we may as well handwave it as or

Mario Carneiro (Jul 28 2021 at 13:33):

No, because psum is a type and or is a prop

Mario Carneiro (Jul 28 2021 at 13:34):

decidable p is not isomorphic to p \/ ~p

Mac (Jul 29 2021 at 02:14):

Mario Carneiro said:

I would write sum but that doesn't typecheck in lean for silly reasons

Isn't one key difference between decidable' (p : Prop) := psum p (~p) and the real decidable p that psum is a normal inductive and decidable is a class inductive?

Kyle Miller (Jul 29 2021 at 02:30):

@Mac This should be functionally equivalent:

def decidable' (p : Prop) := psum p ¬p
attribute [class] decidable'

Last updated: Dec 20 2023 at 11:08 UTC