class_docstr: A class which manages a mapping from functions to arguments and an inverse
  mapping from arguments to functions.
docstr: Return a dict whose keys are function numbers. The entries of the dict are
  the number of arguments said function has in common with
  ``argset``. Entries have at least 2 items in common.  All keys have
  value at least ``min_func_i``.
docstr_tok: ["Return","a","dict","whose","keys","are","function","numbers",".","The","entries","of","the","dict","are","the","number","of","arguments","said","function","has","in","common","with","``","argset","``",".","Entries","have","at","least","2","items","in","common",".","All","keys","have","value","at","least","``","min_func_i","``","."]
code: def get_common_arg_candidates(self, argset, min_func_i=0):
      """Return a dict whose keys are function numbers. The entries of the dict are
      the number of arguments said function has in common with
      ``argset``. Entries have at least 2 items in common.  All keys have
      value at least ``min_func_i``.
      """
      count_map = defaultdict(lambda: 0)
      if not argset:
          return count_map
  
      funcsets = [self.arg_to_funcset[arg] for arg in argset]
      # As an optimization below, we handle the largest funcset separately from
      # the others.
      largest_funcset = max(funcsets, key=len)
  
      for funcset in funcsets:
          if largest_funcset is funcset:
              continue
          for func_i in funcset:
              if func_i >= min_func_i:
                  count_map[func_i] += 1
  
      # We pick the smaller of the two containers (count_map, largest_funcset)
      # to iterate over to reduce the number of iterations needed.
      (smaller_funcs_container, larger_funcs_container) = sorted(
          [largest_funcset, count_map], key=len
      )
  
      for func_i in smaller_funcs_container:
          # Not already in count_map? It can't possibly be in the output, so
          # skip it.
          if count_map[func_i] < 1:
              continue
  
          if func_i in larger_funcs_container:
              count_map[func_i] += 1
  
      return {k: v for k, v in count_map.items() if v >= 2}
  
imports: from collections import defaultdict
  from sympy.core import Basic, Mul, Add, Pow, sympify
  from sympy.core.containers import Tuple, OrderedSet
  from sympy.core.exprtools import factor_terms
  from sympy.core.singleton import S
  from sympy.core.sorting import ordered
  from sympy.core.symbol import symbols, Symbol
  from sympy.matrices import MatrixBase, Matrix, ImmutableMatrix, SparseMatrix, ImmutableSparseMatrix
  from sympy.matrices.expressions import MatrixExpr, MatrixSymbol, MatMul, MatAdd, MatPow, Inverse
  from sympy.matrices.expressions.matexpr import MatrixElement
  from sympy.polys.rootoftools import RootOf
  from sympy.utilities.iterables import numbered_symbols, sift, topological_sort, iterable
  from .None import cse_opts
label_desc: Use image node_id 5 for calling the FuncArgTracker obj's underlying member method code with example usage: obj.get_common_arg_candidates(argset, min_func_i) and returns: unknown, count_map