[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Regarding the SingletonCardinality Axiom in Consensus.tla
Hello,
Whilst playing around with tlaplus and trying to learn how to specify consensus algorithms I stepped across the refinement example by Leslie Lamport ("Mechanically Checked Safety Proof of a Byzantine Paxos Algorithm") found here: http://research.microsoft.com/en-us/um/people/lamport/tla/byzpaxos.html
In the very basic Consensus.tla I stepped over an Axiom regarding the SingletonCardinality of sets (i guess). As I am very inadept with tla / pluscal I address my question to this group instead of adressing it directly to Mr. Lamport.
As far as I understand it, the axiom:
AXIOM SingletonCardinality ==
\A e : IsFiniteSet({e}) /\ (Cardinality({e}) = 1)
always evaluates to true, as {e} is always a set with a single entry, "e".
I guess the axiom would be correct if one would spare the {} brackets in both cases. Obviously the following test would then fail:
SingleCardinalityTest ==
\A e \in SUBSET {"a", "b", "c"} : IsFiniteSet({e}) /\ (Cardinality({e}) = 1)
as the SUBSET operator also produces {"a","b"} and alike.
So did I find a typo here or is the behaviour intended?
Best regards,
Christian Spann