private static Evaluator<FunctionalHypothesis<Integer, Boolean>> getEvaluator(
     Constraints<Integer, Boolean> constraints) {
   return func ->
       constraints.size()
           - constraints
               .stream()
               .mapToDouble(c -> func.getRepresentation().apply(c.left).equals(c.right) ? 1 : 0)
               .sum();
 }