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
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.