Status: IN
`PNCounter` delegates entirely to two `GCounter` instances (`p` for increments, `n` for decrements); it contains no independent merge or counting logic
Source: entries/2026/05/29/conflict-free-replicated-data-types-crdts.md
class PNCounter:
def __init__(self, replica_id):
self.p = GCounter(replica_id) # increments
self.n = GCounter(replica_id) # decrements
def value(self):
return self.p.value() - self.n.value()