The functions of the Convex package never return unevaluated.
If they cannot handle an input type, they produce an error message.
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
Error, (in convex[dim]) method not defined
Error, (in POLYHEDRON[`&=`]) illegal combination of argument types
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)
is a fancone, but its domain (which is
F &x F)
has not been computed yet. This will only been done if
is called. Once the computation has been done, the result will be stored.