#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]