'Lists all the auxiliary states in the symbol.
Example usage:
>>> a = mx.sym.var(\'a\')
>>> b = mx.sym.var(\'b\')
>>> c = a + b
>>> c.list_auxiliary_states()
Example of auxiliary states in `BatchNorm`.
>>> data = mx.symbol.Variable(\'data\')
>>> weight = mx.sym.Variable(name=\'fc1_weight\')
>>> fc1  = mx.symbol.FullyConnected(data = data, weight=weight, name=\'fc1\', num_hidden=128)
>>> fc2 = mx.symbol.BatchNorm(fc1, name=\'batchnorm0\')
>>> fc2.list_auxiliary_states()
[\'batchnorm0_moving_mean\', \'batchnorm0_moving_var\']
Returns
aux_states : list of str
List of the auxiliary states in input symbol.
Notes
Auxiliary states are special states of symbols that do not correspond to an argument,
and are not updated by gradient descent. Common examples of auxiliary states
include the `moving_mean` and `moving_variance` in `BatchNorm`.
Most operators do not have auxiliary states.'

def list_auxiliary_states(self):

    size = ctypes.c_uint()
    sarr = ctypes.POINTER(ctypes.c_char_p)()
    check_call(_LIB.MXSymbolListAuxiliaryStates(self.handle, ctypes.byref(size), ctypes.byref(sarr)))
    return [py_str(sarr[i]) for i in range(size.value)]
