12
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?

rm -rf
  • 88,781
  • 21
  • 293
  • 472
max
  • 1,585
  • 1
  • 14
  • 18

1 Answers1

18

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
*)
Simon
  • 10,167
  • 5
  • 57
  • 72