code: def _findSwiplLin():
      
  
      # Maybe the exec is on path?
      (path, swiHome) = _findSwiplFromExec()
      if path is not None:
          return (path, swiHome)
  
      # If it is not, use  find_library
      path = _findSwiplPathFromFindLib()
      if path is not None:
          return (path, swiHome)
  
      # Our last try: some hardcoded paths.
      paths = ['/lib', '/usr/lib', '/usr/local/lib', '.', './lib']
      names = ['libswipl.so', 'libpl.so']
  
      path = None
      for name in names:
          for try_ in paths:
              try_ = os.path.join(try_, name)
              if os.path.exists(try_):
                  path = try_
                  break
  
      if path is not None:
          return (path, swiHome)
  
      return (None, None)
docs: This function uses several heuristics to guess where SWI-Prolog is
      installed in Linuxes.
  
      :returns:
          A tuple of (path to the swipl so, path to the resource file)
  
      :returns type:
          ({str, None}, {str, None})