the argument simp:false



@Stavros

> But in brief, in ev(..., XXX), the XXX may be:
>
> * a symbol
> **? with a special interpretation (noeval, nouns, expand, ...)
> ** a variable name with the evflags property, in which case it is
> bound to true (simp, float, exponentialize, ...)
> ** a function name, in which case that function is de-nounified
> within the expression (diff, sum, ...)
> ** another symbol, in which case it is evaluated; its value should be
> a list, which is treated as arguments to ev
> * an assignment or equation (a:3 or a=3), in which case that variable
> is bound locally to that value
> * a function definition, in which case that function is bound locally
> to that definition

I find that such a listing of the admisible syntaxes would clarify very much
the manual section for 'ev'.

@Robert

> Well, ev(expr, foo:bar) or equivalently ev(expr, foo=bar) just means
> to evaluate expr while foo is temporarily bound to bar.

In particular, I have not seen an explicit mention that an assignment or
equation (foo:bar or foo=bar) are equivalent forms for a local/temporary binding.

However, at least in the case of 'simp', I do not find it working that way:

(%i2) simp : false$
(%i3) ev(1 + 1, simp = true);
(%o3)            2
(%i4) simp : true$
(%i5) ev(1 + 1, simp = false);
(%o5)            2

as I would have expected 1+1 in the last case.

I.e. the local binding for 'simp' does not seem to be working here the same
way as in ev(tellsimp (0^0, 1), simp: false).

Could you clarify on this point?

Alejandro Jakubi