For "all" solutions use Reduce
. Assuming that the intended domain is Integers
,
Reduce[{a + b + c + d == 60, a <= 30, b <= 30, c <= 30, d <= 30}, {a, b, c,
d}, Integers]
(a | b | c | d) [Element] Integers && -30 <= a <= 30 && ((b == -a
&& c == 30 && d == 30) || (-a < b <= 30 &&
30 - a - b <= c <= 30 && d == 60 - a - b - c))
For nonnegative integers,
Reduce[{a + b + c + d == 60, 0 <= a <= 30, 0 <= b <= 30, 0 <= c <= 30,
0 <= d <= 30}, {a, b, c, d}, Integers]
(a | b | c | d) [Element] Integers && ((a ==
0 && ((b == 0 && c == 30 && d == 30) || (1 <= b <= 29 &&
30 - b <= c <= 30 && d == 60 - b - c) || (b == 30 && 0 <= c <= 30 &&
d == 30 - c))) || (1 <= a <=
29 && ((0 <= b < 30 - a && 30 - a - b <= c <= 30 &&
d == 60 - a - b - c) || (b == 30 - a && 0 <= c <= 30 &&
d == 30 - c) || (30 - a < b <= 30 && 0 <= c <= 60 - a - b &&
d == 60 - a - b - c))) || (a ==
30 && ((b == 0 && 0 <= c <= 30 && d == 30 - c) || (1 <= b <= 29 &&
0 <= c <= 30 - b && d == 30 - b - c) || (b == 30 && c == 0 &&
d == 0))))
For specific examples, use FindInstance
Manipulate[
FindInstance[{a + b + c + d == 60, 0 <= a <= 30, 0 <= b <= 30, 0 <= c <= 30,
0 <= d <= 30}, {a, b, c, d}, Integers, n],
{{n, 10, "Instances"}, 1, 100, 1, Appearance -> "Labeled"}]
