# Re: [tlaplus] another simple theorem

Right... silly me. Thank you!

On Thursday, December 1, 2022 at 9:53:54 PM UTC+2 Stephan Merz wrote:
Yes, you can also write … \in BOOLEAN. -s

On 1 Dec 2022, at 20:44, jack malkovick <sillym...@xxxxxxxxx> wrote:

﻿Ah... I supposed that P and Q will be predicates.
It this the canonical way to specify that P and Q are predicates?

THEOREM TT ==
ASSUME
NEW P(_), NEW Q(_),
\A x : P(x) \in {TRUE, FALSE} /\ Q(x) \in {TRUE, FALSE}
PROVE
\A x : (P(x) # Q(x)) => (P(x) = ~Q(x))
PROOF
OBVIOUS

On Thursday, December 1, 2022 at 9:29:02 PM UTC+2 Stephan Merz wrote:
Hi,

I am glad that TLAPS doesn’t prove this because it’s wrong. As a simple counter-example consider

P(x) == 1
Q(x) == 2

Clearly, you have P(x) # Q(x) for any x but we do not expect to prove 1 = ~2.

What TLAPS should prove is

ASSUME NEW P(), NEW Q()
PROVE \A x : ~(P(x) <=> Q(x)) => (P(x) <=> ~Q(x))

Stephan

On 1 Dec 2022, at 19:58, jack malkovick <sillym...@xxxxxxxxx> wrote:

﻿
How could I help TLAPS to prove this simple theorem?

THEOREM TT ==
ASSUME
NEW P(_), NEW Q(_)
PROVE
\A x : (P(x) # Q(x)) => (P(x) = ~Q(x))
PROOF
OBVIOUS

PS. it can prove with no problem the reverse implication
\A x : (P(x) = ~Q(x)) => (P(x) # Q(x))

--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+u...@xxxxxxxxxxxxxxxx.