### `crdts`: 经过全面测试的混合 CRDT 系列。
为了清晰和简洁,我们只关注 CvRDT(所有想法仍然适用于 CmRDT)。 CvRDT 结构定义了一个 `merge(a, b)` 操作,该操作接受状态 `a` 和 `b`,生成一个合并的状态。一个简单的例子是 `GSet`(只增长的集合),它的 `merge` 是两个集合的并集。
CRDT 都是关于部分顺序的,要将一个结构转换为 CRDT,首先必须定义一个特殊的部分顺序,用于描述该结构的状态空间。必须仔细定义,因为部分顺序还定义了合并的行为。例如,我们来看一下一个 2 元组结构的状态空间,它的状态空间如下所示:
`lub` 是最上限操作,它接受状态空间的一个子集,并生成一个**唯一**的状态,该状态大于或等于子集中的所有状态。以下是满足约束的部分顺序: