code: def inner(tensor0: BKTensor, tensor1: BKTensor) -> BKTensor:
      
      # Note: Relying on fact that vdot flattens arrays
      N = rank(tensor0)
      axes = list(range(N))
      return tf.tensordot(tf.math.conj(tensor0), tensor1, axes=(axes, axes))
docs: Return the inner product between two states