All Projects → JYwellin → CRDT-TLA

JYwellin / CRDT-TLA

Licence: other
Specifying and Verifying CRDT Protocols using TLA+

Programming Languages

TLA
29 projects

Projects that are alternatives of or similar to CRDT-TLA

tla2json
Convert TLA+ output (and values) into JSON
Stars: ✭ 19 (-32.14%)
Mutual labels:  tlc, tlaplus
tlacli
A script for running TLA+/TLC from the command line
Stars: ✭ 75 (+167.86%)
Mutual labels:  tlc, tlaplus
vscode-tlaplus
TLA+ language support for Visual Studio Code
Stars: ✭ 213 (+660.71%)
Mutual labels:  tlc
tree-sitter-tlaplus
A tree-sitter grammar for TLA+
Stars: ✭ 31 (+10.71%)
Mutual labels:  tlaplus
tezedge-specification
TLA+ specs and models for the TezEdge node's p2p overlay network, shell, and consensus
Stars: ✭ 19 (-32.14%)
Mutual labels:  tlaplus
tlaplus specs
Different TLA+ specifications, mostly for learning purposes
Stars: ✭ 25 (-10.71%)
Mutual labels:  tlaplus
specifica
Basic TLA+ related Haskell libraries (parser, evaluator, pretty-printer)
Stars: ✭ 19 (-32.14%)
Mutual labels:  tlaplus
tlaplus-graph-explorer
A static web application to explore and animate a TLA+ state graph.
Stars: ✭ 188 (+571.43%)
Mutual labels:  tlaplus
tla-tools
TLA+ tools for Emacs
Stars: ✭ 27 (-3.57%)
Mutual labels:  tlaplus
CommunityModules
TLA+ snippets, operators, and modules contributed and curated by the TLA+ community
Stars: ✭ 167 (+496.43%)
Mutual labels:  tlaplus

CRDT-TLA

Specifying and Verifying CRDT Protocols using TLA+

Specification

Conflict-free Replicated Data Types (CRDT) are replicated data types that encapsulate the mechanisms for resolving concurrent conflicts. They guarantee strong eventual consistency among replicas in distributed systems, which requires replicas that have executed the same set of updates be in the same state. However, CRDT protocols are subtle and it is difficult to ensure their correctness.

This project leverages model checking to verify the correctness of CRDT protocols. Specifically, we propose a reusable framework for modelling and verifying CRDT protocols. The framework consists of four layers, i.e., the communication layer, the interface layer, the protocol layer, and the specification layer.

Papers

See paper-crdt-TLA+.

TLA+ module description

The following figure shows the relationship between the key modules in the project:

The solid line from module A to module B indicates that A extends B,

The dashed line from module A to module B indicates that A instantiates B.


layer module function
specification Correctness the specification of SEC and EV
specification OpCorrectness the specification of SEC and EV for op-based CRDT
specification StateCorrectness the specification of SEC and EV for state-based CRDT
layer module function
protocol OpCounter the specification of op-based counter
protocol StateCounter the specification of state-based counter
protocol OpAWSet the specification of op-based AWSet
protocol StateAWSet the specification of state-based AWSet
layer module function
interface CRDTInterface provide a unified interface for two types of CRDT
layer module function
communication SystemModel the specification of system model
communication BasicNetwork the specification of basic network
communication ReliableNetwork the specification of reliable network
communication CausalNetwork the specification of casual network
communication ReliableCausalNetwork the specification of reliable causal network

How to run?

  1. Run separately.

Create and run TLC models in the usual way.

  1. Run in batch (Recommended).

We write scripts to automatically conduct a batch of experiments; seeJYwellin/crdt-experiments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].