Коммутативное полуполе
Коммутативное полуполе - это полуполе с коммутативным умножением.
Для коммутативного полуполя должны соблюдаться следующие законы:
- Замыкание сложения (closure): для \(\forall x, y \in S\) выполняется \(x + y \in S\).
- Ассоциативность сложения (associativity): для \(\forall x, y, z \in S\) выполняется \((x + y) + z = x + (y + z)\).
- Существование нулевого элемента: существует \(\exists 0 \in S\) такой, что для \(\forall x \in S\) выполняется \(0 + x = x + 0 = x\)
- Коммутативность сложения (commutative): для \(\forall x, y \in S\) выполняется \(x + y = y + x\).
- Замыкание умножения (closure): для \(\forall x, y \in S\) выполняется \(x * y \in S\).
- Ассоциативность умножения (associativity): для \(\forall x, y, z \in S\) выполняется \((x * y) * z = x * (y * z)\).
- Коммутативность умножения: для \(\forall x, y \in R\) выполняется \(x * y = y * x\).
- Дистрибутивность (distributivus, распределительный закон): для \(\forall x, y, z \in S\) выполняется \(x * (y + z) = x * y + x * z\) и \((x + y) * z = x * z + y * z\).
- Мультипликативное свойство нуля: \(a * 0 = 0 * a = 0\)
- Существование единичного элемента: \(\exists 1 \in S \quad \forall x \in S \quad x * 1 = 1 * x = x\)
- Наличие обратного элемента: для любого \(a \in F\), \(a \neq 0\), существует элемент \(a^{-1} \in F\) такой, что \(a \cdot a^{-1} = 1\).
Код
trait CommutativeSemifield[A] extends Semifield[A], CommutativeRig[A]
Схема
classDiagram
class Semigroup~A~{
+combine(x: A, y: A) A
}
class Monoid~A~{
+empty() A
}
Semigroup <|-- Monoid
class CommutativeSemigroup~A~
Semigroup <|-- CommutativeSemigroup
class CommutativeMonoid~A~
Monoid <|-- CommutativeMonoid
CommutativeSemigroup <|-- CommutativeMonoid
class Semiring~A~
CommutativeMonoid <|-- Semiring
class MultiplicativeSemigroup~A~{
+times(x: A, y: A) A
}
MultiplicativeSemigroup <|-- Semiring
Semigroup .. MultiplicativeSemigroup
class Rig~A~{
+one() A
}
Semiring <|-- Rig
class Semifield~A~{
+reciprocal(x: A) A
+div(x: A, y: A) A
}
Rig <|-- Semifield
class CommutativeSemiring~A~
Semiring <|-- CommutativeSemiring
class CommutativeRig~A~
Rig <|-- CommutativeRig
CommutativeSemiring <|-- CommutativeRig
class CommutativeSemifield~A~
Semifield <|-- CommutativeSemifield
CommutativeRig <|-- CommutativeSemifield
Ссылки: