@@ -89,30 +89,30 @@ adjustRank youngMark visitedMark groupRank var =
91adjustRankHelp :: Int -> Int -> Int -> Variable -> Descriptor -> TS.Solver Int
91adjustRankHelp :: Int -> Int -> Int -> Variable -> Descriptor -> TS.Solver Int
92−adjustRankHelp youngMark visitedMark groupRank var descriptor =
92+adjustRankHelp youngMark visitedMark groupRank var descriptor@(Descriptor content rank mark _) =
93− if _mark descriptor == youngMark then
93+ if mark == youngMark then
95 do -- Set the variable as marked first because it may be cyclic.
95 do -- Set the variable as marked first because it may be cyclic.
96 liftIO $ UF.modifyDescriptor var $ \desc ->
96 liftIO $ UF.modifyDescriptor var $ \desc ->
97 desc { _mark = visitedMark }
97 desc { _mark = visitedMark }
99 maxRank <-
99 maxRank <-
100− adjustRankContent youngMark visitedMark groupRank (_content descriptor)
100+ adjustRankContent youngMark visitedMark groupRank content
102 liftIO $ UF.modifyDescriptor var $ \desc ->
102 liftIO $ UF.modifyDescriptor var $ \desc ->
103 desc { _rank = maxRank }
103 desc { _rank = maxRank }
105 return maxRank
105 return maxRank
107− else if _mark descriptor /= visitedMark then
107+ else if mark /= visitedMark then
109− do let minRank = min groupRank (_rank descriptor)
109+ do let minRank = min groupRank rank
110 liftIO $ UF.setDescriptor var (descriptor { _mark = visitedMark, _rank = minRank })
110 liftIO $ UF.setDescriptor var (descriptor { _mark = visitedMark, _rank = minRank })
111 return minRank
111 return minRank
115− return (_rank descriptor)
115+ return rank
118adjustRankContent :: Int -> Int -> Int -> Content -> TS.Solver Int
118adjustRankContent :: Int -> Int -> Int -> Content -> TS.Solver Int