# Using Thread to make positive numbers in assumptions

I'm having trouble getting Mathematica to use my assumptions. Here's a simple example:

FullSimplify[Sign[(a)],Assumptions->Thread[{a,b,c}>0] && Element[{a,b,c }, Reals]]


This just gives me "Sign [A]". I think I'm doing the "Thread" wrong, but I'm not sure how.

• The assumption a > 0 already assumes that a is real, so you don't need the second assumption. That said, if you did need it, do Append[Thread[{a, b, c} > 0], Element[{a, b, c}, Reals]] instead. The problem is that Thread[{a, b, c} > 0] makes a list, which you are joining to Element[{a,b,c }, Reals] with And, which requires a sequence of logical expressions, not a list of logical expressions. – march Aug 16 '17 at 21:34
• Or use Thread[And[a, b, c] > 0, And]. – Michael E2 Aug 16 '17 at 23:11

As noted by @march using the assumption a > 0 automatically makes a an element of reals.

Below is the output of Thread

Thread[{a, b, c} > 0]
(* {a > 0, b > 0, c > 0} *)


It is a list and works fine as long as we don't try to use it with an And or an Or.

FullSimplify[Sign[(a)], Assumptions -> Thread[{a, b, c} > 0]]

(* 1 *)


Assuming that one wanted to merge it with other And or Or expressions, replace the head of the list with And by using Apply.

FullSimplify[Sign[(a)], Assumptions -> And @@ Thread[{a, b} > 0] && c > 0]

(* 1 *)