Sublogics.hs revision 1b3a2f98d1cd01fc9e0591f69507e20526727559
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder{- |
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederModule : $Header$
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederDescription : sublogic analysis for CASL_DL
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederCopyright : (c) Dominik Luecke 2008
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : luecke@informatik.uni-bremen.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : experimental
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : portable
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederSublogic analysis for CASL_DL
d8c71aacc9f1c8cd40a8ad8dcdad9be8854b849fChristian Maeder
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian MaederThis module provides the sublogic functions (as required by Logic.hs)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder for CASL_DL. The functions allow to compute the minimal sublogics needed
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder by a given element, to check whether an item is part of a given
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder sublogic, and to project an element into a given sublogic.
c35d75c97d5257326d24e40fdc0ac6486f63ab55Christian Maeder-}
c35d75c97d5257326d24e40fdc0ac6486f63ab55Christian Maeder
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maedermodule CASL_DL.Sublogics
01e383014b555bbcf639c0ca60c5810b3eff83c0Christian Maeder (
3b06e23643a9f65390cb8c1caabe83fa7e87a708Till Mossakowski Lattice(..)
83394c6b6e6de128e71b67c9251ed7a84485d082Christian Maeder , CASL_DL_SL(..)
abf2487c3aece95c371ea89ac64319370dcb6483Klaus Luettich )
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till Mossakowski where
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maederimport Data.Maybe
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederimport CASL_DL.AS_CASL_DL()
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederimport CASL_DL.Sign()
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maederimport qualified CASL.Sign as CS
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederimport Logic.Logic
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maeder
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maederclass (Ord l, Show l) => Lattice l where
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder cjoin :: l -> l -> l
e8db9a65830cf71504e33c6f441a67b4d184a3caChristian Maeder ctop :: l
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder bot :: l
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederinstance Lattice () where
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder cjoin _ _ = ()
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder ctop = ()
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich bot = ()
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder
4d56f2fa72e4aec20eb827c11ed49c8cbb7014bdChristian Maederinstance Lattice Bool where
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder cjoin = (||)
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder ctop = True
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder bot = False
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder
57a2436f9d44e37042498a3b3dfacd301d91bb6dChristian Maederdata CASL_DL_SL = SROIQ
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder deriving (Ord,Eq)
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder
d4892fa7401ceef014ea59d2d900773eaf88fcbdChristian Maederinstance Show CASL_DL_SL where
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder show SROIQ = "SROIQ"
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maederinstance Sublogics CASL_DL_SL where
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder sublogic_names SROIQ = ["SROIQ"]
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederinstance SemiLatticeWithTop CASL_DL_SL where
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder join _ _ = SROIQ
55adfe57a4de1f36adc3e3bfc16f342e44a7d444Christian Maeder top = SROIQ
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
8d97ef4f234681b11bb5924bd4d03adef858d2d2Christian Maederinstance ProjectSublogic CASL_DL_SL CS.Symbol where
8d97ef4f234681b11bb5924bd4d03adef858d2d2Christian Maeder projectSublogic _ i = i
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maederinstance ProjectSublogicM CASL_DL_SL CS.Symbol where
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder projectSublogicM _ i = Just $ i
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederinstance MinSublogic CASL_DL_SL CS.Symbol where
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder minSublogic _ = SROIQ
f13d1e86e58da53680e78043e8df182eed867efbChristian Maeder