Hi and Thanks Priyan,
I hadn't thought about this, and it is closer, but..
Unless I don't understand, Refine would have to be used on every expression that contains the Symbol. I want to set up MMA so that it uses this information Globally, without my intervention on all subsequent evaluations when it encounters the Symbol, i.e. I want this info to be an upvalue.
I want the behavior to be an upvalue, i.e. A/:Positive[A]=True
which works fine anytime the Positive operator is used in MMA, i.e., MMA remembers and uses this automatically any time the operator is applied. However, even though Positive[A] evaluates to True, Negative[A] evaluates to Negative[A], MMA does not remember or infer that if Positive[A] is True, then by usual rules of logic, Negative[A] should be False, and Equal[0,A] is False is another inference, and so on. There are so many operators to be covered by setting each one as another upvalue, that the whole thing just becomes ridiculously complex. So, the question is how to set an upvalue that MMA will use to make all possible (within the scope of MMA) equivalent operators evaluate properly to True or False as appropriate.
Again, as an example so that, 0<A evaluates to True without having to set another upvalue (as you currently have to), or A>0 evaluates to True which would have to be another upvalue and A>=0 is True (YAUV [Yet another upvalue]) and 0<=A [YAUV], and so on and so on. There are many, many logical comparison operators and I can't even think how to get a exhaustive list of everyone of them that could be logically related to Positive and Real if I did want to make an elaborate table of upvalues.
Some developers must have thought about this. Maybe they have some idea.
Thanks/Cheers/Bob