worksheet for exploring the ev() command quirks

kill(all);

preparatory assignments

x        : pippo ;
pippo    : pluto ;
pluto    : paperino ;
paperino : clarabella ;

when I hit shift-Enter (when I ask for the evaluation of the typed expression)
just one step of substitution is perfomed.
Such evaluation is the "implicit" one, since no explicit "ev()" is required to
perform it

x;

when I hit shift-Enter, the overall ev(x) expression is evaluated.
the argument passed to the ev(  ) function is evaluated first (x->pippo),
so ev( ) is called to operate on "pippo"

ev(x);

the "eval" keyword asks for a further evaluation step

ev(x , eval );

ev(x , eval ,eval );

ev(x , eval ,eval ,eval );

the "infeval" keyword repeats evaluations until the manipulated expression
does not change between two subsequent evaluation steps

ev(x , infeval);

ev( y^2 +1 , y = topolino , topolino=x );

ev( y^2 +1 , y = topolino , topolino=x ,eval);

ev() is called to operate on the following list of arguments
as returned by the implicit evaluation of them
ev( y^2 + 1 , y = topolino , topolino=pippo , eval );

ev(x, clarabella=pippo );

ev(x, clarabella=pippo ,eval);

ev(x, clarabella=pippo ,eval,eval);

ev(x, clarabella=pippo ,eval,eval,eval);

ev(x, clarabella=pippo ,eval,eval,eval,eval);

infinite recursive evaluation loop, do not try it at home
ev(x, clarabella=pippo ,infeval);

further notes

how to pass keywords or hypotheses to the implicit evaluation

y^2+1  , y=quiquoqua;

which is actually

/*ev(*/    
y^2+1  , y=quiquoqua  
/*)*/
;

where 
/*ev(*/
....
/*)*/
is just a the implicit evaluation made evident

the "numer" keyword asks for a floating point representation of the result

sqrt(2)*a , numer;

other notes on evaluations

natively, "f" is an expression not depending on "x"

diff(f,x);

diff(f(x) ,x );

If I want to suppress the evaluation of a function, i.e. to postpone it, I
may employ the ' operator

'diff(f,'x);

ev(%, f=sin(x) , diff);