def expr(self, history, call): implied_min_points = max(0, self.min_points - history.partner.min_points) suit = call.strain if self.use_partners_last_suit: assert annotations.Artificial not in history.partner.annotations_for_last_call suit = history.partner.last_call.strain return z3.And(model.support_points_expr_for_suit(suit) >= implied_min_points, model.playing_points >= implied_min_points)
def expr(self, history, call): assert annotations.Artificial not in history.partner.annotations_for_last_call return model.support_points_expr_for_suit(history.partner.last_call.strain) <= self.max_points
def expr(self, history, call): # We should assert here, except this is used to pass after a transfer accept (which is artificial) # assert annotations.Artificial not in history.partner.annotations_for_last_call return model.support_points_expr_for_suit(history.partner.last_call.strain) >= self.min_points