'Add some constraints to the state.
You may pass in any number of symbolic booleans as variadic positional arguments.'

def add_constraints(self, *args, **kwargs):

    if ((len(args) > 0) and isinstance(args[0], (list, tuple))):
        raise Exception('Tuple    or    list    passed    to    add_constraints!')
    if ((o.TRACK_CONSTRAINTS in self.options) and (len(args) > 0)):
        if (o.SIMPLIFY_CONSTRAINTS in self.options):
            constraints = [self.simplify(a) for a in args]
        else:
            constraints = args
        self._inspect('constraints', BP_BEFORE, added_constraints=constraints)
        constraints = self._inspect_getattr('added_constraints', constraints)
        added = self.se.add(*constraints)
        self._inspect('constraints', BP_AFTER)
        if (o.TRACK_CONSTRAINT_ACTIONS in self.options):
            for c in added:
                sac = SimActionConstraint(self, c)
                self.history.add_action(sac)
    elif (('action' in kwargs) and kwargs['action'] and (o.TRACK_CONSTRAINT_ACTIONS in self.options) and (len(args) > 0)):
        for arg in args:
            if self.se.symbolic(arg):
                sac = SimActionConstraint(self, arg)
                self.history.add_action(sac)
    if ((o.ABSTRACT_SOLVER in self.options) and (len(args) > 0)):
        for arg in args:
            if self.se.is_false(arg):
                self._satisfiable = False
                return
            if self.se.is_true(arg):
                continue
            if claripy.backends.vsa.is_false(arg):
                self._satisfiable = False
                return
            if claripy.backends.vsa.is_true(arg):
                continue
            (_, converted) = self.se.constraint_to_si(arg)
            for (original_expr, constrained_si) in converted:
                if (not original_expr.variables):
                    l.error((('Incorrect    original_expression    to    replace    in    add_constraints().    ' + 'This    is    due    to    defects    in    VSA    logics    inside    claripy.    Please    report    ') + "to    Fish    and    he    will    fix    it    if    he's    free."))
                    continue
                new_expr = constrained_si
                self.registers.replace_all(original_expr, new_expr)
                for (_, region) in self.memory.regions.items():
                    region.memory.replace_all(original_expr, new_expr)
                l.debug('SimState.add_constraints:    Applied    to    final    state.')
    elif ((o.SYMBOLIC not in self.options) and (len(args) > 0)):
        for arg in args:
            if self.se.is_false(arg):
                self._satisfiable = False
                return
