{-# LANGUAGE FlexibleInstances, TypeSynonymInstances #-} module Data.Logic.Types.Common where import Data.Logic.Classes.Variable (Variable(..)) import qualified Data.Set as Set import Text.PrettyPrint (text) instance Variable String where variant x vars = if Set.member x vars then variant (x ++ "'") vars else x prefix p x = p ++ x prettyVariable = text {- instance Variable String where variant v vs = if Set.member v vs then variant (next v) (Set.insert v vs) else v where next :: String -> String next s = case break (not . isDigit) (reverse s) of (_, "") -> "x" ("", nondigits) -> nondigits ++ "2" (digits, nondigits) -> nondigits ++ show (1 + read (reverse digits) :: Int) -}