'Apply state to self if self is not symbolic and state is a FockStateKet, else
multiply self by state.
Examples
>>> from sympy.physics.secondquant import B, BKet
>>> from sympy.abc import x, y, n
>>> B(x).apply_operator(y)
y*AnnihilateBoson(x)
>>> B(0).apply_operator(BKet((n,)))
sqrt(n)*FockStateBosonKet((n - 1,))'

def apply_operator(self, state):

    if ((not self.is_symbolic) and isinstance(state, FockStateKet)):
        element = self.state
        amp = sqrt(state[element])
        return (amp * state.down(element))
    else:
        return Mul(self, state)
