'Raises an exception if the solver cannot solve the problem.
Parameters
constraints: list
The list of canonicalized constraints.'

def validate_solver(self, constraints):

    if (not self.is_installed()):
        raise SolverError(('The    solver    %s    is    not    installed.' % self.name()))
    constr_map = SymData.filter_constraints(constraints)
    if ((constr_map[s.BOOL] or constr_map[s.INT]) and (not self.MIP_CAPABLE)):
        self._reject_problem('it    cannot    solve    mixed-integer    problems')
    elif (constr_map[s.SDP] and (not self.SDP_CAPABLE)):
        self._reject_problem('it    cannot    solve    semidefinite    problems')
    elif (constr_map[s.EXP] and (not self.EXP_CAPABLE)):
        self._reject_problem('it    cannot    solve    exponential    cone    problems')
    elif (constr_map[s.SOC] and (not self.SOCP_CAPABLE)):
        self._reject_problem('it    cannot    solve    second-order    cone    problems')
    elif ((len(constraints) == 0) and (self.name() in (s.SCS, s.GLPK))):
        self._reject_problem('it    cannot    solve    unconstrained    problems')
