let mut transition_labels = ByteCompressedVec::with_capacity(num_of_states, 16usize.bytes_required());
let mut transition_to = ByteCompressedVec::with_capacity(num_of_states, num_of_states.bytes_required());
/// Internally this works by offsetting the state indices of the other LTS by the number of states
/// can find the states of the other LTS in the merged LTS as the initial state of the other LTS.
// Remove the sentinel state temporarily. This breaks the state invariant, but we will add it back later.
/// Creates a labelled transition system from another one, given the permutation of state indices
pub fn relabel<L: TransitionLabel>(self, labelling: impl Fn(Label) -> L) -> LabelledTransitionSystem<L> {
fn outgoing_transitions(&self, state_index: StateIndex) -> impl Iterator<Item = Transition> + '_ {
// If labels are not used, the number of labels may be less. So find a remapping of old labels to new labels.
let mapped_label = mapping[t.label.value()].expect(&format!("Label {} should be found", t.label));