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(); }