Dom::MaxPlusSemiRing – MaxPlus semi-ring

Dom::MaxPlusSemiRing creates a domain for the MaxPlus semi-ring.

→ Examples

Creating Elements

MaxPlusSemiRing(x)

Parameters:

x

real number or -infinity.

Superdomain

Dom::BaseDomain

Categories

Cat::SemiRing

Axioms

Ax::canonicalRep, Ax::normalRep

Related Domains:

Dom::MaxMinSemiRing, Dom::MinMaxSemiRing, Dom::MinPlusSemiRing

Details:

The domain element Dom::MaxPlusSemiRing(x) represents the constant math in the MaxPlus semi-ring if math is a real number or real constant, or math if math is -infinity.

Entries

"zero"

the constant -infinity.

"one"

the constant math.

Mathematical Methods

_plus – sum of MaxPlus

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

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

This method overloads the function _plus.

_mult – product of MaxPlus

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

The sum math is defined to be math.

This method overloads the function _mult.

_power – power of MaxPlus

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

The nth power math of the MaxPlus scalar a.

This method overloads the function _power.

Conversion Methods

convert – conversion of an object into a MaxPlus scalar

Dom::MaxPlusSemiRing::convert(any x)

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

convert_to – conversion of a MaxPlus scalar into another type

Dom::MaxPlusSemiRing::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 MaxPlus scalar into a real number or -infinity.

Dom::MaxPlusSemiRing::expr(dom a)

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

Example 1:

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

T:=Dom::MaxPlusSemiRing:

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