Simplify
is very gullible: if it gets a False
assumption, it'll believe anything is True
:
Simplify[x > y, False]
(* Simplify::fas -- Simplify: Warning: one or more assumptions evaluated to False. *)
(* True *)
Simplify[1 > 2, False]
(* Simplify::fas -- Simplify: Warning: one or more assumptions evaluated to False. *)
(* True *)
This also holds for $Assumptions
that turn out to be False
(which is how I ran into this problem):
$Assumptions = {x > 0};
Simplify[1 > 2]
(* False *)
x = -1;
Simplify[1 > 2]
(* Simplify::fas -- Simplify: Warning: one or more assumptions evaluated to False. *)
(* True *)
I'm sure there's a reason why this happens (and I'd be curious to hear it), but I find this behavior potentially misleading. Is there a good way to work around this behavior, so that the warning message shows but False
assumptions are ignored?
Implies[False, a]
yieldsTrue
and so the issue withSimplify
turns out no longer to be misleading. $\endgroup$Simplify
could do here. Wash your dishes? $\endgroup$Simplify[e, False]
only if the expression $e$ (or its parts) is a traditional boolean-valued expression. Yes inSimplify[x + y && x + y, False]
but not inSimplify[x + y && x + y // Simplify, False]
(because thee
here becomes simplyx + y
). An odd example:Simplify[False + y, False]
becomesTrue + y
, and two wrongsSimplify[False + False, False]
make a double right (too true!). But these inputs seem nonsensical and of not much real practical importance. $\endgroup${a<b,a>b}
, which do you discard? $\endgroup$False
on their own, which are easily screened out. $\endgroup$