Re:Modeling CRDTs in Alloy – the importance of idempotence
by nyssos on Monday October 09, 2023 @11:12AM
(#37821277)
They're talking about idempotence of `merge(a, _ )` (under function composition), whereas you're talking about idempotence of `a` (with composition given by `merge`). Same property, different object.
[ Parent
| on HN ]
Re:Modeling CRDTs in Alloy – the importance of idempotence
by Twisol on Monday October 09, 2023 @03:58PM
(#37824738)
Right, but then for commutativity I would expect them to use `merge(merge(a, b), c) = merge(merge(a, c), b)`, whereas what they actually have is the usual `merge(a, b) = merge(b, a)`. They're sort of mixing and matching from the axioms of monoids[^] and the axioms of actions (what you're referring to as "function composition").
[^] (well, properly, semilattices, because that's what state-based CRDTs are based on. But semilattices are "just" commutative idempontent monoids ^_^)