Symbol.hs revision 5ad5dffe06818a13e1632b1119fbca7881085fc1
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder{-# OPTIONS -fallow-undecidable-instances #-}
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian Maeder{- |
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederModule : $Header$
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederDescription : Instance of class Logic for propositional logic
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederCopyright : (c) Dominik Luecke, Uni Bremen 2007
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : luecke@tzi.de
43b4c41fbb07705c9df321221ab9cb9832460407Christian MaederStability : experimental
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : portable
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maeder
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian MaederDefinition of symbols for propositional logic
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder-}
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maedermodule Propositional.Symbol
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder (
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder Symbol (..) -- Symbol type
a1ed34933c266ce85066acb0d7b20c90cb8eb213Christian Maeder , pretty -- pretty printing for Symbols
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder , symOf -- Extracts the symbols out of a signature
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich ) where
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maeder
ad270004874ce1d0697fb30d7309f180553bb315Christian Maederimport Common.Id
4d56f2fa72e4aec20eb827c11ed49c8cbb7014bdChristian Maederimport Common.Doc
4cb215739e9ab13447fa21162482ebe485b47455Christian Maederimport Common.DocUtils
8ef75f1cc0437656bf622cec5ac9e8ea221da8f2Christian Maederimport qualified Data.Set as Set
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettichimport Propositional.Sign
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
74eed04be26f549d2f7ca35c370e1c03879b28b1Christian Maeder-- | Datatype for symbols
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederdata Symbol = Symbol {symName :: Common.Id.Id}
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder deriving (Show, Eq, Ord)
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maeder
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maederinstance Pretty Symbol where
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maeder pretty = printSymbol
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
e593b89bfd4952698dc37feced21cefe869d87a2Christian MaederprintSymbol :: Symbol -> Doc
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederprintSymbol x = idDoc $ symName x
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
7cc09dd93962a2155c34d209d1d4cd7d7b838264Christian Maeder-- | Extraction of symbols from a signature
1aee4aaddde105264c1faf394d88e302c05094ffChristian MaedersymOf :: Sign -> Set.Set Symbol
1aee4aaddde105264c1faf394d88e302c05094ffChristian MaedersymOf x = foldr (\y -> Set.insert $ Symbol {symName = y}) Set.empty $
51d769d55d88dfa88bdf54bee78d8fa85a2deba8Christian Maeder Set.toList $ items x
f041c9a6bda23de33a38490e35b831ae18d96b45Christian Maeder