You will find below a quick reference guide of the mathematical functions and operators available in the (min,+) interpreter that is available on-line as a Playground.
Function constructors
// Defines an affine function of slope 4 and constant 5
f1 := affine(4, 5)
// Defines a step function with step at time 4 with height 5
f2 := step(4, 5)
// Defines a staircase function with first step at time 4, with length 5 and height 6
f3 := stair(4, 5, 6)
// Defines a burst-delay function at time 4
f4 := delay(4)
// Defines a bucket function of slope 4 and constant 5
f5 := bucket(4, 5)
// Ultimately affine function
// uaf(SEGMENT+) with last segment having slope and right point Infinity
f6:=uaf([(0,0)0(1,0)] ](1,2)0(2,2)] ](2,3)1(+Infinity,+Infinity)[)
// Ultimately pseudo-periodic function
// f7 := upp([SEGMENT*,] period(SEGMENT*) [, incr [,period]])
// Defines a pseudo-periodic function. First segment list is the finite part. The second part is the pseudo-periodic part. The increment is optional. The period is purely informative.
// SEGMENT is [(x,y)] for a point, [(x1,y1)slope(x2,y2)]
// x and y could be any number, or +inf, +infinity, -inf, -infinity
f7:=upp([(0,0)0(1,0)[ [(1,1)] ](1,2)0(2,2)], period(](2,3)1(3,4)[ [(3,5)] ](3,6)2(4,8)]))
// Draws the functions - click on run button below to execute the script
plot(f1, f2, f3, f4, f6, f7)
Function operators
f1 /\ f2 // minimum of f1 and f2.
f1 \/ f2 // maximum of f1 and f2.
f1 + f2 // sum of f1 and f2.
f1 - f2 // subtraction of f1 and f2.
f1 * f2 // min-convolution of f1 and f2.
f1 / f2 // min-deconvolution of f1 and f2.
star(f) // subadditive closure of f.
hDev(f, g) // horizontal deviation between f and g
vDev(f, g) // vertical deviation between f and g
hShift(f, n) // f horizontally shifted by n.
vShift(f, n) // f vertically shifted by n.
f *_ g // defined as f * g
f /_ g // defined as f / g
// (max,+) operators:
f *^ g // defined as zero - ( ( zero - f ) * (zero - g ) )
f /^ g // defined as zero - ( ( zero - f ) / (zero - g ) )
// In next release
// f comp g // composition of f and g, ie for all x, (f comp g)(x) = f(g(x))
// left-ext(f) // defined as the function g such that for all x, g(x) = f(x-)
// right-ext(f) // defined as the function g such that for all x, g(x) = f(x+)
// low_inv(f) // defined as inv( f )
// up_inv(f) // defined as left-ext( inv( f ) )
Function
f1 := EXPR // variable assignment
f // returns the definition of f
f(x) // value of f at x
f(x+) // value of f at the right of x
f(x-) // value of f at the left of x
Value operators
v := EXPR //variable assignment
v1 /\ v2 // minimum of v1 and v2.
v1 \/ v2 // maximum of v1 and v2.
v1 + v2 // sum of v1 and v2.
v1 - v2 // substraction of v1 and v2.
v1 * v2 // multiplication of v1 and v2.
v1 ÷ v2 // division of v1 and v2. Type Alt+246 on MS/Windows to get the Obelus sign
v1 div v2 // division of v1 by v2.
Statements
help(fct) // displays some help about fct if available
assert(expr) // checks if the expression evaluates to true
// plot(f1,...,args)
// plots a graph displaying functions f1,f2,... args are the parameters for the drawing.
// Valid args are:
// main: the graph title
// xlim: the range for the x axis
// Ylim: the range for the y axis
// xlab: the label for the x axis
// ylab: the label for the y axis
// examples
plot(f1)
plot(f1, f2)
plot(service2,service1,xlim=[-0.3,15],ylim=[-0.3,15])
plot(f1, main="f1", xlim=[-0.5, 5], xlab="time", ylab="packets")