 This function is used for the strict-par mode.
--
-- This function returns Nothing as soon as a parallel operator is encountered.
-- In particular Unknown is accepted as in strict-par mode, Unknown is tweaked
-- to mean "in some order but not in parallel".
nonParallelChannelSet :: Ord a => Skel a -> Maybe (Set a)
nonParallelChannelSet = \case
  Zero -> pure ø
  Act c -> pure (l2s [c])
  Op (Prll _) _ _ -> Nothing
  Op _ sk0 sk1 -> union <$> nonParallelChannelSet sk0 <*> nonParallelChannelSet sk1

m
nonParallelChannelSet :: Ord a => Skel a -> Maybe (Set a)
nonParallelChannelSet = \case
  Zero -> pure ø
  Act c -> pure (l2s [c])
  Op (Prll _) _ _ -> Nothing
  Op _ sk0 sk1 -> union <$> nonParallelChannelSet sk0 <*> nonParallelChannelSet sk1
nonParallelChannelSet = \case
  Zero -> pure ø
  Act c -> pure (l2s [c])
  Op (Prll _) _ _ -> Nothing
  Op _ sk0 sk1 -> union <$> nonParallelChannelSet sk0 <*> nonParallelChannelSet sk1