"Communication expressions must have at least two actions on the left-hand side, but {comm_i} does not."
// The left hand side of a communication cannot overlap with any other communication's left hand side. This is the definition used in mCRL2,
format!("Communication expressions cannot have right-hand side in another communication's left-hand side, i.e. {comm_i} and {comm_j}.").into(),
let sorted_allow: Vec<SortedMultiActionLabel> = allow.iter().map(SortedMultiActionLabel::new).collect();
let mut iter = ParallelTransitionIter::new(&mut iter_context, ¶llel_composition, ¤t_state_vector);
fn communicate<L: CombineLabel>(comm: &[CommExpr], action: LtsMultiAction<L>) -> LtsMultiAction<L> {
fn find_communication_match<L: CombineLabel>(actions: &[L], expr: &CommExpr) -> Option<Vec<L>> {
fn is_allowed<L: CombineLabel>(allow: &[SortedMultiActionLabel], action: &SortedLtsMultiAction<L>) -> bool {
fn hide_action<L: CombineLabel>(hide: &[String], mut action: LtsMultiAction<L>) -> LtsMultiAction<L> {
SortedMultiActionLabel::new(&MultiActionLabel::new(names.iter().map(|s| s.to_string()).collect()))