class_docstr: Generate a list comprehension.
  
  Explanation
  ===========
  
  If there is a symbolic dimension, for example, say [i for i in range(1, N)] where
  N is a Symbol, then the expression will not be expanded to an array. Otherwise,
  calling the doit() function will launch the expansion.
  
  Examples
  ========
  
  >>> from sympy.tensor.array import ArrayComprehension
  >>> from sympy import symbols
  >>> i, j, k = symbols('i j k')
  >>> a = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
  >>> a
  ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
  >>> a.doit()
  [[11, 12, 13], [21, 22, 23], [31, 32, 33], [41, 42, 43]]
  >>> b = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k))
  >>> b.doit()
  ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k))
class_docstr_tok: ["Generate","a","list","comprehension",".","Explanation","===========","If","there","is","a","symbolic","dimension",",","for","example",",","say","[","i","for","i","in","range","(","1",",","N",")","]","where","N","is","a","Symbol",",","then","the","expression","will","not","be","expanded","to","an","array",".","Otherwise",",","calling","the","doit","(",")","function","will","launch","the","expansion",".","Examples","========",">",">",">","from","sympy.tensor.array","import","ArrayComprehension",">",">",">","from","sympy","import","symbols",">",">",">","i",",","j",",","k","=","symbols","(","'","i","j","k","'",")",">",">",">","a","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","3",")",")",">",">",">","a","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","3",")",")",">",">",">","a.doit","(",")","[","[","11",",","12",",","13","]",",","[","21",",","22",",","23","]",",","[","31",",","32",",","33","]",",","[","41",",","42",",","43","]","]",">",">",">","b","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","k",")",")",">",">",">","b.doit","(",")","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","k",")",")"]
docstr: The set of the free_symbols in the array.
  Variables appeared in the bounds are supposed to be excluded
  from the free symbol set.
  
  Examples
  ========
  
  >>> from sympy.tensor.array import ArrayComprehension
  >>> from sympy import symbols
  >>> i, j, k = symbols('i j k')
  >>> a = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
  >>> a.free_symbols
  set()
  >>> b = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k+3))
  >>> b.free_symbols
  {k}
docstr_tok: ["The","set","of","the","free_symbols","in","the","array",".","Variables","appeared","in","the","bounds","are","supposed","to","be","excluded","from","the","free","symbol","set",".","Examples","========",">",">",">","from","sympy.tensor.array","import","ArrayComprehension",">",">",">","from","sympy","import","symbols",">",">",">","i",",","j",",","k","=","symbols","(","'","i","j","k","'",")",">",">",">","a","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","3",")",")",">",">",">","a.free_symbols","set","(",")",">",">",">","b","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","k+3",")",")",">",">",">","b.free_symbols","{","k","}"]
code: def free_symbols(self):
      """
      The set of the free_symbols in the array.
      Variables appeared in the bounds are supposed to be excluded
      from the free symbol set.
  
      Examples
      ========
  
      >>> from sympy.tensor.array import ArrayComprehension
      >>> from sympy import symbols
      >>> i, j, k = symbols('i j k')
      >>> a = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
      >>> a.free_symbols
      set()
      >>> b = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k+3))
      >>> b.free_symbols
      {k}
      """
      expr_free_sym = self.function.free_symbols
      for var, inf, sup in self._limits:
          expr_free_sym.discard(var)
          curr_free_syms = inf.free_symbols.union(sup.free_symbols)
          expr_free_sym = expr_free_sym.union(curr_free_syms)
      return expr_free_sym
  
imports: import functools, itertools
  from sympy.core.sympify import _sympify, sympify
  from sympy.core.expr import Expr
  from sympy.core import Basic, Tuple
  from sympy.tensor.array import ImmutableDenseNDimArray
  from sympy.core.symbol import Symbol
  from sympy.core.numbers import Integer
label_desc: Use image node_id 4 for calling the ArrayComprehension obj's underlying member method code with example usage: obj.free_symbols() and returns: expr_free_sym