# Why does Assuming[x > 0, TrueQ[x > 0]] return False?

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, AssumptionsAPositive[x - 0]]
(*
==> True
*)

• I should probably emphasis that TrueQ is a syntactic test that "yields True if its argument is True, and yields False` otherwise." Mar 26, 2012 at 23:05
• Thanks for pointing out the Assumptions context. Aug 21, 2012 at 23:14