Dom::MinMaxSemiRing – MinMax semiring

Dom::MinMaxSemiRing creates a domain for the MinMax semiring.

→ Examples

Creating Elements

MinMaxSemiRing(x)

Parameters:

x

real number, infinity or -infinity.

Superdomain

Dom::BaseDomain

Categories

Cat::SemiRing

Axioms

Ax::canonicalRep, Ax::normalRep

Related Domains:

Dom::MaxMinSemiRing, Dom::MaxPlusSemiRing, Dom::MinPlusSemiRing

Details:

The domain element Dom::MinMaxSemiRing(x) represents the constant math in the MinMax semiring if math is a real number or real constant, or infinity or -infinity if math is infinity or -infinity.

Entries

"zero"

the constant infinity.

"one"

the constant -infinity.

Mathematical Methods

_plus – sum of MinMax

Dom::MinMaxSemiRing::_plus(dom math, ...)

The sum math is defined to be the smallest of real numbers math.

This method overloads the function _plus.

_mult – product of MinMax

Dom::MinMaxSemiRing::_mult(dom math, ...)

The product math is defined to be the biggest of real numbers, math.

This method overloads the function _mult.

_power – power of MinMax

Dom::MinMaxSemiRing::_power(dom a, Dom::Integer n)

The nth power math of the MinMax scalar a.

This method overloads the function _power.

Conversion Methods

convert – conversion of an object into a MinMax scalar

Dom::MinMaxSemiRing::convert(any x)

This method tries to convert x into a MinMax scalar. This is only possible if x is a real number, infinity or -infinity.

convert_to – conversion of a MinMax scalar into another type

Dom::MinMaxSemiRing::convert_to(dom a, any T)

Tries to convert a into type T. Currently, only a conversion into a type of scalars.

expr – convert a MinMax scalar into a real number, infinity or -infinity.

Dom::MinMaxSemiRing::expr(dom a)

This method returns a real number, infinity or -infinity such that generating a MinMax scalar from that real number, infinity or -infinity would result in a.

Example 1:

This example shows the idempotency of the MinMax semi-ring:

T:=Dom::MinMaxSemiRing:

T(infinity) + T(infinity);

T(3) + T(3)

math

math

T(6) + T(infinity);

T(6) + T(3);

T(6)*T(-infinity);

T(6)*T(3)

math

math

math

math

Example 2:

We can use real number and constants:

T(sin(2)) + T(-2.15)*T(PI)

math

Example 3:

We can change the domain of scalars:

T::convert_to(T(1), Dom::Integer) + T::convert_to(T(2), Dom::Integer)

math