Join two channels acting on different qubits into a single channel
    acting on all qubits

def join_channels(*channels: Channel) -> Channel:
    """Join two channels acting on different qubits into a single channel
    acting on all qubits"""
    vectors = [chan.vec for chan in channels]
    vec = reduce(outer_product, vectors)
    return Channel(vec.tensor, vec.qubits)