Assuming[x>0,TrueQ[x>0]]
should, as I understand it, test TrueQ[x>0]
after assuming x>0
. Could someone explain the output False
to me, please?
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityAssuming[x>0,TrueQ[x>0]]
should, as I understand it, test TrueQ[x>0]
after assuming x>0
. Could someone explain the output False
to me, please?
Because the assumption system is not called during the standard evaluation sequence, it is only called when Simplify
, FullSimplify
, Sum
, Integrate
etc... are used.
Thus, x>0
remains unevaluated:
Assuming[x > 0, x > 0]
(*
==> x > 0
*)
and TrueQ
then returns False
:
Assuming[x > 0, TrueQ[x > 0]]
(*
==> False
*)
If, however, you run Simplify
before TrueQ
, you get the expected result
Assuming[x > 0, TrueQ[Simplify[x > 0]]]
(*
==> True
*)
As an aside, there is some "hidden" functionality in the Assumptions`
context that lets you perform various checks and calculations within the assumption system. Run ?Assumptions`*
to see what's available. You code, in particular, could be written as
Assuming[x > 0, Assumptions`APositive[x - 0]]
(*
==> True
*)