public /*@Real*/ double regret(final /*@Real*/ double target) /*@ReadOnly*/ {
// average over the range below the target
final List<Ops.DoubleOp> functions = new ArrayList<Ops.DoubleOp>();
functions.add(new Square());
functions.add(new Bind2nd(new Minus(), target));
final Expression comp = new Expression(functions);
final Ops.DoublePredicate less = new Bind2ndPredicate(new LessThanPredicate(), target);
final Pair<Double, Integer> result = expectationValue(comp, less);
final double x = result.first();