These specifications illustrate a technique for taking ordinarily-infinite monotonic systems and turning them finite for the purposes of model-checking. Briefly, this is accomplished by limiting the maximum divergence (difference between lowest and highest value) of any monotonic variable across the system, then continually transposing the set of monotonic variables to their lowest value. The technique is explained at length in this blog post.
Specs & models include:
CRDT.tla
: the "good copy" spec of a basic grow-only counter CRDTFinitize_CRDT.tla
: wrapsCRDT.tla
and implements the finitization techniqueFinitize_CRDT.cfg
: a model forFinitize_CRDT.tla
Constrain_CRDT.tla
: finitizesCRDT.tla
using state constraints instead; included for comparisonConstrain_CRDT.cfg
: a model forConstrain_CRDT.tla
ReplicatedLog.tla
: the "good copy" spec of a basic append-only replicated logFinitize_ReplicatedLog.tla
: wrapsReplicatedLog.tla
and implements the finitization techniqueFinitize_ReplicatedLog.cfg
: a model forFinitize_ReplicatedLog.tla