module TPDB.Data where
data Identifier = Identifier { name :: String , arity :: Int }
deriving ( Eq, Ord, Show )
data Term v s = Var v
| Node s [ Term v s ]
deriving Show
data Rule a = Rule { lhs :: a, rhs :: a
, strict :: Bool
, top :: Bool
}
deriving Show
data RS s r =
RS { signature :: [ s ]
, rules :: [ Rule r ]
, separate :: Bool
}
deriving Show
type TRS v s = RS s ( Term v s )
type SRS s = RS s [ s ]
data Problem v s =
Problem { trs :: TRS v s
, strategy :: Strategy
, type_ :: Type
}
deriving Show
data Type = Termination | Complexity
deriving Show
data Strategy = Full | Innermost | Outermost
deriving Show