deterministicPart :: (Ord q, Ord a) => NBA q a l
                                    -> S.Set q
deterministicPart a = let g = graph a
                          transGraph = trc  g
                          succDeterministic i = hasNoDuplicates $ map snd (lsuc g i)
                          det = [i | i <- nodes g, all succDeterministic (suc transGraph i)]
                          in
                            S.fromList $ map (toState a) det
deterministicPart :: (Ord q, Ord a) => NBA q a l
                                    -> S.Set q
deterministicPart a = let g = graph a
                          transGraph = trc  g
                          succDeterministic i = hasNoDuplicates $ map snd (lsuc g i)
                          det = [i | i <- nodes g, all succDeterministic (suc transGraph i)]
                          in
                            S.fromList $ map (toState a) det
deterministicPart a = let g = graph a
                          transGraph = trc  g
                          succDeterministic i = hasNoDuplicates $ map snd (lsuc g i)
                          det = [i | i <- nodes g, all succDeterministic (suc transGraph i)]
                          in
                            S.fromList $ map (toState a) det