#Java, 67 bytes s->!s.stream().anyMatch(p->s.stream().anyMatch(q->s.contains(p+q))) Input is a `Set<Integer>`. Tests: import java.util.Arrays; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; public class SumFree { public static void main(String[] args) { sumFree(s->!s.stream() .anyMatch(p->s.stream() .anyMatch(q->s.contains(p+q)))); // formatted to avoid wrapping } public static void sumFree(Function<Set<Integer>, Boolean> func) { test(func); test(func, 4); test(func, 1, 5, 7); test(func, 16, 1, 4, 9); test(func, 1, 4, 5, 7); test(func, 0); test(func, 3, 0); test(func, 16, 1, 4, 8); } public static void test(Function<Set<Integer>, Boolean> func, Integer... vals) { Set<Integer> set = Arrays.stream(vals).collect(Collectors.toSet()); System.out.format("%b %s%n", func.apply(set), set); } } Output: <!-- language: lang-none --> true [] true [4] true [1, 5, 7] true [16, 1, 4, 9] false [0] false [1, 4, 5, 7] false [0, 3] false [16, 1, 4, 8]