ExtSign.hs revision 140287998aa8592c9c403bd9e308e447ba92ae11
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian MaederModule : $Header$
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederDescription : signatures with symbol sets
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederCopyright : (c) DFKI GmbH, Uni Bremen 2002-2007
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederLicense : GPLv2 or higher, see LICENSE.txt
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : Christian.Maeder@dfki.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : provisional
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : portable
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederSome functions that operate over signatures need to be extended to work over
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maedersignatures with symbol sets for every logic
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederimport qualified Data.Set as Set
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettich-- | signatures with symbol sets.
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettich-- (The Ord instance is needed for the ATC generation)
a737caf82de97c1907027c03e4b4509eb492b4b8Christian Maederdata ExtSign sign symbol = ExtSign
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder { plainSign :: sign
68d10d143f29fcff3c637ba24f90e983995ceae6Christian Maeder , nonImportedSymbols :: Set.Set symbol
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder } deriving (Show, Read)
3b06e23643a9f65390cb8c1caabe83fa7e87a708Till Mossakowskiinstance (Ord sign) => Eq (ExtSign sign symbol) where
9dac90ec2be2a72e03893095461960d483fe2fc2Christian Maeder a == b = compare a b == EQ
124c859ba4741d5e36d5d98634886b430b7af093Christian Maederinstance (Ord sign) => Ord (ExtSign sign symbol) where
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till Mossakowski compare (ExtSign s1 _) (ExtSign s2 _) = compare s1 s2
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maederinstance (Pretty sign, Pretty symbol)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder => Pretty (ExtSign sign symbol) where
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder pretty (ExtSign s sys) =
a1ed34933c266ce85066acb0d7b20c90cb8eb213Christian Maeder sep [pretty s, if Set.null sys then empty else pretty sys]
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus LuettichmkExtSign :: sign -> ExtSign sign symbol
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian MaedermkExtSign s = ExtSign s Set.empty