algebra.ring

package algebra.ring

Type members

Classlikes

trait AdditiveCommutativeGroup[@specialized(Int, Long, Float, Double) A] extends AdditiveGroup[A] with AdditiveCommutativeMonoid[A]
Companion
object
trait AdditiveCommutativeMonoid[@specialized(Int, Long, Float, Double) A] extends AdditiveMonoid[A] with AdditiveCommutativeSemigroup[A]
Companion
object
trait AdditiveCommutativeSemigroup[@specialized(Int, Long, Float, Double) A] extends AdditiveSemigroup[A]
Companion
object
trait AdditiveGroup[@specialized(Int, Long, Float, Double) A] extends AdditiveMonoid[A]
Companion
object
Companion
class
trait AdditiveGroupFunctions[G <: ([T] =>> AdditiveGroup[T])] extends AdditiveMonoidFunctions[G]
trait AdditiveMonoid[@specialized(Int, Long, Float, Double) A] extends AdditiveSemigroup[A]
Companion
object
Companion
class
trait AdditiveSemigroup[@specialized(Int, Long, Float, Double) A] extends Serializable
Companion
object
trait BoolRing[A] extends BoolRng[A] with CommutativeRing[A]

A Boolean ring is a ring whose multiplication is idempotent, that is a⋅a = a for all elements ''a''. This property also implies a+a = 0 for all ''a'', and a⋅b = b⋅a (commutativity of multiplication).

A Boolean ring is a ring whose multiplication is idempotent, that is a⋅a = a for all elements ''a''. This property also implies a+a = 0 for all ''a'', and a⋅b = b⋅a (commutativity of multiplication).

Every Boolean ring is equivalent to a Boolean algebra. See algebra.lattice.BoolFromBoolRing for details.

Companion
object
object BoolRing extends RingFunctions[[A] =>> BoolRing[A]]
Companion
class
trait BoolRng[A] extends CommutativeRng[A]

A Boolean rng is a rng whose multiplication is idempotent, that is a⋅a = a for all elements ''a''. This property also implies a+a = 0 for all ''a'', and a⋅b = b⋅a (commutativity of multiplication).

A Boolean rng is a rng whose multiplication is idempotent, that is a⋅a = a for all elements ''a''. This property also implies a+a = 0 for all ''a'', and a⋅b = b⋅a (commutativity of multiplication).

Every BoolRng is equivalent to algebra.lattice.GenBool. See algebra.lattice.GenBoolFromBoolRng for details.

Companion
object
Companion
class
trait CommutativeRig[@specialized(Int, Long, Float, Double) A] extends Rig[A] with CommutativeSemiring[A] with MultiplicativeCommutativeMonoid[A]

CommutativeRig is a Rig that is commutative under multiplication.

CommutativeRig is a Rig that is commutative under multiplication.

Companion
object
trait CommutativeRing[@specialized(Int, Long, Float, Double) A] extends Ring[A] with CommutativeRig[A] with CommutativeRng[A]

CommutativeRing is a Ring that is commutative under multiplication.

CommutativeRing is a Ring that is commutative under multiplication.

Companion
object
object CommutativeRing extends RingFunctions[[A] =>> CommutativeRing[A]]
Companion
class
trait CommutativeRng[@specialized(Int, Long, Float, Double) A] extends Rng[A] with CommutativeSemiring[A]

CommutativeRng is a Rng that is commutative under multiplication.

CommutativeRng is a Rng that is commutative under multiplication.

Companion
object
trait CommutativeSemiring[@specialized(Int, Long, Float, Double) A] extends Semiring[A] with MultiplicativeCommutativeSemigroup[A]

CommutativeSemiring is a Semiring that is commutative under multiplication.

CommutativeSemiring is a Semiring that is commutative under multiplication.

Companion
object
trait Field[@specialized(Int, Long, Float, Double) A] extends CommutativeRing[A] with MultiplicativeCommutativeGroup[A]
Companion
object
object Field extends FieldFunctions[[A] =>> Field[A]]
Companion
class
trait FieldFunctions[F <: ([T] =>> Field[T])] extends RingFunctions[F] with MultiplicativeGroupFunctions[F]
trait MultiplicativeCommutativeGroup[@specialized(Int, Long, Float, Double) A] extends MultiplicativeGroup[A] with MultiplicativeCommutativeMonoid[A]
Companion
object
trait MultiplicativeCommutativeMonoid[@specialized(Int, Long, Float, Double) A] extends MultiplicativeMonoid[A] with MultiplicativeCommutativeSemigroup[A]
Companion
object
trait MultiplicativeCommutativeSemigroup[@specialized(Int, Long, Float, Double) A] extends MultiplicativeSemigroup[A]
Companion
object
trait MultiplicativeGroup[@specialized(Int, Long, Float, Double) A] extends MultiplicativeMonoid[A]
Companion
object
trait MultiplicativeMonoid[@specialized(Int, Long, Float, Double) A] extends MultiplicativeSemigroup[A]
Companion
object
trait MultiplicativeSemigroup[@specialized(Int, Long, Float, Double) A] extends Serializable
Companion
object
trait Rig[@specialized(Int, Long, Float, Double) A] extends Semiring[A] with MultiplicativeMonoid[A]

Rig consists of:

Rig consists of:

  • a commutative monoid for addition (+)
  • a monoid for multiplication (*)

Alternately, a Rig can be thought of as a ring without multiplicative or additive inverses (or as a semiring with a multiplicative identity).

Mnemonic: "Rig is a Ring without 'N'egation."

Companion
object
object Rig extends AdditiveMonoidFunctions[[A] =>> Rig[A]] with MultiplicativeMonoidFunctions[[A] =>> Rig[A]]
Companion
class
trait Ring[@specialized(Int, Long, Float, Double) A] extends Rig[A] with Rng[A]

Ring consists of:

Ring consists of:

  • a commutative group for addition (+)
  • a monoid for multiplication (*)

Additionally, multiplication must distribute over addition.

Ring implements some methods (for example fromInt) in terms of other more fundamental methods (zero, one and plus). Where possible, these methods should be overridden by more efficient implementations.

Companion
object
object Ring extends RingFunctions[[A] =>> Ring[A]]
Companion
class
trait RingFunctions[R <: ([T] =>> Ring[T])] extends AdditiveGroupFunctions[R] with MultiplicativeMonoidFunctions[R]
trait Rng[@specialized(Int, Long, Float, Double) A] extends Semiring[A] with AdditiveCommutativeGroup[A]

Rng (pronounced "Rung") consists of:

Rng (pronounced "Rung") consists of:

  • a commutative group for addition (+)
  • a semigroup for multiplication (*)

Alternately, a Rng can be thought of as a ring without a multiplicative identity (or as a semiring with an additive inverse).

Mnemonic: "Rng is a Ring without multiplicative 'I'dentity."

Companion
object
object Rng extends AdditiveGroupFunctions[[A] =>> Rng[A]] with MultiplicativeSemigroupFunctions[[A] =>> Rng[A]]
Companion
class
trait Semiring[@specialized(Int, Long, Float, Double) A] extends AdditiveCommutativeMonoid[A] with MultiplicativeSemigroup[A]

Semiring consists of:

Semiring consists of:

  • a commutative monoid for addition (+)
  • a semigroup for multiplication (*)

Alternately, a Semiring can be thought of as a ring without a multiplicative identity or an additive inverse.

A Semiring with an additive inverse (-) is a Rng. A Semiring with a multiplicative identity (1) is a Rig. A Semiring with both of those is a Ring.

Companion
object
Companion
class