[clean up UnionSolve code
John Meacham <john@repetae.net>**20070301054528] hunk ./Util/UnionSolve.hs 149
-                xe `equal` ye
+                xe `lessThenOrEqual` ye
+                xe <- UF.find xe
+                ye <- UF.find ye
+                ye `lessThenOrEqual` xe
hunk ./Util/UnionSolve.hs 174
-                            when (Just v `nem` mu) $ mapM_ (\lb -> v `greaterThen` lb) (Set.toList lb)
-                            when (Just v `nem` ml) $ mapM_ (\ub -> v `lessThen` ub) (Set.toList ub)
+                            mapM_ (\lb -> v `greaterThen` lb) (Set.toList lb)
+                            mapM_ (\ub -> v `lessThen` ub) (Set.toList ub)
+                            --when (Just v `nem` mu) $ mapM_ (\lb -> v `greaterThen` lb) (Set.toList lb)
+                            --when (Just v `nem` ml) $ mapM_ (\ub -> v `lessThen` ub) (Set.toList ub)
hunk ./Util/UnionSolve.hs 204
-                    checkRS ((Ri ml lb (mjoin (Just v) mu) ub)) xe
+                    doUpdate (Ri ml lb (mjoin (Just v) mu) ub) xe
hunk ./Util/UnionSolve.hs 211
-                R c | v `lte` c -> return ()
+                R c | v `lte` c -> do putLog "already set and is lower"; return ()
hunk ./Util/UnionSolve.hs 213
-                Ri (Just n) _ _ _ | v `lte` n -> return ()
+                Ri (Just n) _ _ _ |  v `lte` n -> do putLog "already less than lower bound";  return ()
hunk ./Util/UnionSolve.hs 215
-                    checkRS ((Ri (mmeet (Just v) ml) lb mu ub)) xe
+                    doUpdate (Ri (mmeet (Just v) ml) lb mu ub) xe
hunk ./Util/UnionSolve.hs 219
-        checkRS (Ri (Just l) _ (Just u) _) xe | l `eq` u = setValue xe l
-        checkRS (Ri (Just l) _ (Just u) _) xe | u `lte` l = error "you crossed the streams"
-        checkRS (Ri (Just l) _ _ _) xe  | isTop l = setValue xe l
-        checkRS (Ri  _ _ (Just u) _) xe | isBottom u = setValue xe u
-        checkRS r xe = updateW (const r) xe
+        checkRS (Ri (Just l) _ (Just u) _) xe | l `eq` u = do
+            putLog $ "Boxed in value of " ++ show (fromElement xe) ++ " being set to " ++ show l
+            setValue xe l
+        checkRS (Ri (Just l) _ (Just u) _) xe | u `lte` l = fail "checkRS: you crossed the streams"
+        checkRS (Ri (Just l) _ _ _) xe  | isTop l = do
+            putLog $ "Going up:   " ++ show (fromElement xe)
+            setValue xe l
+        checkRS (Ri  _ _ (Just u) _) xe | isBottom u = do
+            putLog $ "Going down: " ++ show (fromElement xe)
+            setValue xe u
+        checkRS r xe = return ()
hunk ./Util/UnionSolve.hs 250
+                            w <- getW xe
+                            checkRS w xe
+                            w <- getW ye
+                            checkRS w ye
+        doUpdate r xe = do
+            updateW (const r) xe
+            checkRS r xe
hunk ./Util/UnionSolve.hs 267
-                    case (nml,nmu) of
-                        (Just x,Just y) | x `eq` y -> xe `setValue` x
-                                        | y `lte` x -> fail "equal not equal"
-                        _ -> do
-                            nlb <- finds (xlb `mappend` ylb)
-                            nub <- finds (yub `mappend` xub)
-                            updateW (\_ -> Ri nml (Set.delete xe nlb) nmu (Set.delete xe nub)) xe
-                (Ri xml xlb xmu xub,R c) -> do xe `setValue` c
-                (R c,Ri xml xlb xmu xub) -> do xe `setValue` c
-                (R c1,R c2) | c1 `eq` c2 -> return ()
-                _ -> fail $ "error: " ++ show (xw,yw)
+                    nlb <- finds (xlb `mappend` ylb)
+                    nub <- finds (yub `mappend` xub)
+                    doUpdate (Ri nml (Set.delete xe nlb) nmu (Set.delete xe nub)) xe
+--                    updateW (\_ -> Ri nml (Set.delete xe nlb) nmu (Set.delete xe nub)) xe
+--                    case (nml,nmu) of
+--                        (Just x,Just y) | x `eq` y -> xe `setValue` x
+--                                        | y `lte` x -> fail "equal not equal"
+--                        _ -> return ()
+--                (Ri xml xlb xmu xub,R c) -> do xe `setValue` c
+--                (R c,Ri xml xlb xmu xub) -> do xe `setValue` c
+--                (R c1,R c2) | c1 `eq` c2 -> return ()
+--                _ -> fail $ "error: " ++ show (xw,yw)