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?
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?
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
*)
True if its argument is True, and yields False otherwise."
– Simon
Mar 26 '12 at 23:05