CoCASLSign.hs revision ad270004874ce1d0697fb30d7309f180553bb315
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder{- |
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederModule : $Header$
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederCopyright : (c) Till Mossakowski, Uni Bremen 2004
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : hausmann@tzi.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : provisional
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : portable
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederSignatures for CoCASL, as extension of CASL signatures.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder-}
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maedermodule CoCASL.CoCASLSign where
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederimport CASL.Sign
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederimport CASL.AS_Basic_CASL (SORT)
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederimport qualified Data.Map as Map
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederimport qualified Common.Lib.Rel as Rel
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederdata CoCASLSign = CoCASLSign { sees :: Rel.Rel SORT
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder , constructs :: Rel.Rel SORT
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder , constructors :: OpMap
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder } deriving (Show, Eq)
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till MossakowskiemptyCoCASLSign :: CoCASLSign
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederemptyCoCASLSign = CoCASLSign Rel.empty Rel.empty Map.empty
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederaddCoCASLSign :: CoCASLSign -> CoCASLSign -> CoCASLSign
8f51f7ee933762df1a1e52caee78f5564fcf0730Christian MaederaddCoCASLSign a b = a
88c800932dd7053322501ea2039d9f234be6866cKlaus Luettich { sees = Rel.transClosure $ Rel.union (sees a) $ sees b
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder , constructs = Rel.transClosure $ Rel.union (constructs a) $ constructs b
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder , constructors = addOpMapSet (constructors a) $ constructors b
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder }
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
8410667510a76409aca9bb24ff0eda0420088274Christian MaederdiffCoCASLSign :: CoCASLSign -> CoCASLSign -> CoCASLSign
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederdiffCoCASLSign a b = a
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder { sees = Rel.transClosure $ Rel.difference (sees a) $ sees b
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder , constructs = Rel.transClosure $ Rel.union (constructs a) $ constructs b
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich , constructors = diffMapSet (constructors a) $ constructors b
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich }
3474624438293363cada4e49225aae1e292fa597Christian Maeder
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus LuettichisSubCoCASLSign :: CoCASLSign -> CoCASLSign -> Bool
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederisSubCoCASLSign a b =
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder Rel.isSubrelOf (sees a) (sees b)
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder && Rel.isSubrelOf (constructs a) (constructs b)
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder && isSubOpMap (constructors a) (constructors b)
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder