docs: def _tensor_decompose_series(lhs, rhs):
      """Simplification method for lhs << rhs
  
      Decompose a series product of two reducible circuits with compatible block
      structures into a concatenation of individual series products between
      subblocks.  This method raises CannotSimplify when rhs is a CPermutation in
      order not to conflict with other _rules.
      """
      if isinstance(rhs, CPermutation):
          raise CannotSimplify()
      lhs_structure = lhs.block_structure
      rhs_structure = rhs.block_structure
      res_struct = _get_common_block_structure(lhs_structure, rhs_structure)
      if len(res_struct) > 1:
          blocks, oblocks = (
              lhs.get_blocks(res_struct),
              rhs.get_blocks(res_struct))
          parallel_series = [SeriesProduct.create(lb, rb)
                             for (lb, rb) in zip(blocks, oblocks)]
          return Concatenation.create(*parallel_series)
      raise CannotSimplify()