I think most of these data structures are available in Riak via riak_dt
Excerpts:
Instead of shipping the whole state, ship only deltas (δ-state) generated by δ-mutators.
Definition 1 (Delta-mutator). A delta-mutator mδ is a function, corresponding to an update operation, which takes a state X in a join-semilattice S as parameter and returns a delta-mutation mδ(X), also in S.
Definition 2 (Delta-group). A delta-group is inductively defined as either a delta-mutation or a join of several delta-groups.
Definition 3 (δ-CRDT). A δ-CRDT consists of a triple (S,Mδ,Q), where S is a join-semilattice, Mδ is a set of delta-mutators, and Q a set of query functions, where the state transition at each replica is given by either joining the current state X∈S with a delta-mutation: X′=X⊔mδ(X), or joining the current state with some received delta-group D: X′=X⊔D.
it will be useful to find a non-trivial decomposition such that delta-states returned by delta-mutators in Mδ are smaller than the resulting state: size(mδ(X))≪size(m(X))
Definition 4 (Delta-interval). Given a replica i progressing along the states Xi0,Xi1,..., by joining delta dik (either local delta-mutation or received delta-group) into Xik to obtain Xik+1, a delta-interval Δia,b is a delta-group resulting from joining deltas dia,...,dib−1: Δia,b=⊔{dik∣a≤k<b}
Definition 5 (Delta-interval-based anti-entropy algorithm). A given anti-entropy algorithm for δ-CRDTs is delta-interval-based, if all deltas sent to other replicas are delta-intervals.
Definition 6 (Causal delta-merging condition). A delta-interval based anti-entropy algorithm is said to satisfy the causal delta-merging condition if the algorithm only joins Δja,b from replica j into state Xi of replica i that satisfy: Xi⊒Xja
Portfolios contains the following data types:
G-Set
2P-Set
LWW-Set (Add-Wins or Remove-Wins)
PN-Counter
Lexicographic Counter
state = a lexicographic pair for each replica
Causal delta-CRDTs
DotSet, DotFun, DotMap
Enable-Wins Flag
Multi-Value Register
Add-Wins Set (this can be seen as a map from elements to enable-wins flags, but with a single causal context)