Contents
Evaluation
Functions
The functions of the Convex package never return unevaluated.
If they cannot handle an input type, they produce an error message.
Operators
The operators, however, behave differently: they return unevaluated
if they do not know how to handle the first argument.
(But they do cause errors if another arguments is wrong.)
The reason for this is that some Maple functions (solve,
for example) internally use operators, assuming that they are never evaluated.
Of course, this crucial assumption is nowhere documented ...
Operators defined by the Convex package are the comparison operators
&=,
&<>,
&<,
&>,
&<=,
&>=,
&<<,
&>>
and the Cartesian product operator
&x.
Examples
x
Error, (in convex[dim]) method not defined
`&=`(x,y)
Error, (in POLYHEDRON[`&=`]) illegal combination of argument types
Delayed evaluation
Some computations may be delayed until you request the information.
Consider the following example:
| F := facefan(cube(4));
C := op(minimal(F));
|
---|
F := FAN(4,0,[0, 0, 0, 8])
C := FANCONE(4,0,0,0,0)
C2 := FANCONE(8,0,0,0,0)
Now
C2
is a fancone, but its domain (which is
F &x F)
has not been computed yet. This will only been done if
domain(C2)
is called. Once the computation has been done, the result will be stored.