Stricter defaults



A bunch of defaults in recent Maximas (changed a year ago or so) appear to
have changed from assuming that variables and expressions are real-valued by
default to assuming that they are complex-valued by default.

For example, log(1/x) no longer simplifies to -log(x) and sqrt(1/x) no
longer simplifies to 1/sqrt(x).

I understand that these simplifications do not treat branch cuts
consistently in the complex plane.  However, Maxima made the design decision
a long time ago that by default, entities (both undeclared variables and
values) were assumed to be real.  This design decision is still reflected by
much of Maxima; thus sign(sqrt(x)) => pz, sign(log(x)) => pnz.  In general,
it is *not* true in Maxima that substituting a complex value for a variable
will give reasonable results.  For example, subst(%i,x,rectform(log(x)))
yielsd %i*atan2(0,%i), which Maxima can't simplify any further as far as I
can tell -- because atan2 is assumed to have real arguments.

Moreover, even in the complex plane, as far as I know, no one has come up
with a consistent, correct, and useful way of handling either branch-cut
semantics or Riemann-surface semantics in Maxima.

The main effects of suppressing simplifications log(1/x) => -log(x) appear
to be

(1) confusing new users (and some old users)
      and
(2) breaking existing code (in particular integration)

I propose we return to the "everything is real" assumption as the default in
Maxima.

Discussion?

           -s