{-# OPTIONS_GHC -fglasgow-exts #-}
module HyLo.Signature.String( StringSignature,
                              PropSymbol(..),
                              NomSymbol(..),
                              RelSymbol(..), inv)

where

import HyLo.Signature ( Signature, IsRelSym(..) )

newtype PropSymbol = PropSymbol String deriving(Eq, Ord, Show, Read)

newtype NomSymbol = NomSymbol String deriving(Eq, Ord, Show, Read)

data RelSymbol =    RelSymbol String
               | InvRelSymbol String
               deriving(Eq, Ord, Show, Read)

inv :: RelSymbol -> RelSymbol
inv (   RelSymbol r) = InvRelSymbol r
inv (InvRelSymbol r) = RelSymbol r

instance IsRelSym RelSymbol where
    invRel = Just . inv

type StringSignature = Signature NomSymbol PropSymbol RelSymbol