docs: def new_linsolver(name,prop):
      """
      Creates a linear solver.
  
      Parameters
      ----------
      name : string
      prop : string
      
      Returns
      -------
      solver : :class:`LinSolver <optalg.lin_solver.LinSolver>`
      """
      
      if name == 'mumps':
          return LinSolverMUMPS(prop)
      elif name == 'superlu':
          return LinSolverSUPERLU(prop)
      elif name == 'umfpack':
          return LinSolverUMFPACK(prop)
      elif name == 'default':
          try:
              return new_linsolver('mumps',prop)
          except ImportError:
              return new_linsolver('superlu',prop)            
      else:
          raise ValueError('invalid linear solver name')