simplified primitives with reduce_arg(), which handles reduction,
splitting, and entanglement