x = c([4,5,6]) assert x != meanie(x) and x != integers(x) and x != [4,5,6] and x == c(x) # etc: more coupling of penalties from mystic.penalty import quadratic_inequality p1 = lambda x: sum(x) - 5 p2 = lambda x: min(i**2 for i in x) p = p1,p2 p = [quadratic_inequality(pi)(lambda x:0.) for pi in p] p1,p2 = p penalty = and_(*p) x = [[1,2],[-2,-1],[5,-5]] for xi in x: assert p1(xi) + p2(xi) == penalty(xi) penalty = or_(*p) for xi in x: assert min(p1(xi),p2(xi)) == penalty(xi) penalty = not_(p1) for xi in x: assert bool(p1(xi)) != bool(penalty(xi)) penalty = not_(p2) for xi in x: assert bool(p2(xi)) != bool(penalty(xi))