Коммутативная полугруппа
CSemigroup[A] - полугруппа, которая является коммутативной.
Помимо законов полугруппы:
- Замыкание (closure): для \(\forall x, y \in CS\) выполняется \(x + y \in CS\).
- Ассоциативность (associativity): для \(\forall x, y, z \in CS\) выполняется \((x + y) + z = x + (y + z)\).
должен соблюдаться закон:
- Коммутативность (commutative): для \(\forall x, y \in CS\) выполняется \(x + y = y + x\).
Код
trait CSemigroup[A] extends Semigroup[A]
Законы
Коммутативность означает, что порядок элементов при объединении не важен.
Другими словами, результат операции combine будет одинаковым, независимо от того,
в каком порядке вы передаёте элементы x и y.
Это можно записать так: cs.combine(x, y) == cs.combine(y, x)
Схема
classDiagram
class Semigroup~A~{
+combine(x: A, y: A) A
}
class CommutativeSemigroup~A~
Semigroup <|-- CommutativeSemigroup
Реализация в библиотеках
Реализация в Spire
import spire.algebra.CSemigroup
CSemigroup.combine(1, 2) == CSemigroup.combine(2, 1)
Ссылки: