[remove interesting vars set from solver, add operators for solver operations
John Meacham <john@repetae.net>**20120118015831
 Ignore-this: cff498daa4acc9a2be35d36e0d88c504
] hunk ./src/Util/UnionSolve.hs 8
-    islte,isgte,equals
+    islte,isgte,equals,
+    (@<=),(@>=),(@=),(@<=@),(@>=@),(@=@)
hunk ./src/Util/UnionSolve.hs 44
-
hunk ./src/Util/UnionSolve.hs 45
--- we make the fields strict because many empty values will be
--- mappended together when used in a writer monad.
-data C l v = C !(S.Seq (CL l v)) !(Set.Set v)
-
-instance Ord v => Monoid (C l v) where
-    mempty = C mempty mempty
-    mappend (C a b) (C c d) = C (a `mappend` c) (b `mappend` d)
-
+newtype C l v = C (S.Seq (CL l v))
+    deriving(Monoid)
hunk ./src/Util/UnionSolve.hs 58
-cAnnotate s (C seq set) = C (fmap (CLAnnotate s) seq) set
+cAnnotate s (C seq) = C (fmap (CLAnnotate s) seq)
hunk ./src/Util/UnionSolve.hs 61
-    showsPrec _ (C xs _) = showString "" . foldr (.) id (intersperse (showString "\n") (map shows (S.toList xs))) . showString "\n"
+    showsPrec _ (C xs) = showString "" . foldr (.) id (intersperse (showString "\n") (map shows (S.toList xs))) . showString "\n"
hunk ./src/Util/UnionSolve.hs 73
+-- operator constraits, the @ is on the side that takes a variable.
+v @<= l = cL v OpLte l
+v @>= l = cL v OpGte l
+v @=  l = cL v OpEq l
+v @<=@ l = cV v OpLte l
+v @>=@ l = cV v OpGte l
+v @=@  l = cV v OpEq l
+
+cL x y z = C (S.singleton (CL x y z))
+cV x y z = C (S.singleton (CV x y z))
+
hunk ./src/Util/UnionSolve.hs 86
-islte (Left v1) (Left v2) = C (S.singleton (CV v1 OpLte v2)) mempty
-islte (Left v1) (Right v2) = C (S.singleton (CL v1 OpLte v2)) mempty
-islte (Right v1) (Left v2) = C (S.singleton (CL v2 OpGte v1)) mempty
+islte (Left v1) (Left v2) = C (S.singleton (CV v1 OpLte v2))
+islte (Left v1) (Right v2) = C (S.singleton (CL v1 OpLte v2))
+islte (Right v1) (Left v2) = C (S.singleton (CL v2 OpGte v1))
hunk ./src/Util/UnionSolve.hs 91
-isgte (Left v1) (Left v2) = C (S.singleton (CV v2 OpLte v1)) mempty
-isgte (Left v1) (Right v2) = C (S.singleton (CL v1 OpGte v2)) mempty
-isgte (Right v1) (Left v2) = C (S.singleton (CL v2 OpLte v1)) mempty
+isgte (Left v1) (Left v2) = C (S.singleton (CV v2 OpLte v1))
+isgte (Left v1) (Right v2) = C (S.singleton (CL v1 OpGte v2))
+isgte (Right v1) (Left v2) = C (S.singleton (CL v2 OpLte v1))
hunk ./src/Util/UnionSolve.hs 96
-equals (Left v1) (Left v2) = C (S.singleton (CV v1 OpEq v2)) mempty
-equals (Left v1) (Right v2) = C (S.singleton (CL v1 OpEq v2)) mempty
-equals (Right v1) (Left v2) = C (S.singleton (CL v2 OpEq v1)) mempty
+equals (Left v1) (Left v2) = C (S.singleton (CV v1 OpEq v2))
+equals (Left v1) (Right v2) = C (S.singleton (CL v1 OpEq v2))
+equals (Right v1) (Left v2) = C (S.singleton (CL v2 OpEq v1))
hunk ./src/Util/UnionSolve.hs 105
-type RS l a =  Element (R l a) a
-
+type RS l a = Element (R l a) a
hunk ./src/Util/UnionSolve.hs 140
-solve putLog (C csp _vset) = do
+solve putLog (C csp) = do