DefaultMorphism.hs revision 656f17ae9b7610ff2de1b6eedeeadea0c3bcdc8d
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder{- |
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyModule : $Header$
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerDescription : supply a default morphism for a given signature type
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyCopyright : (c) C. Maeder, and Uni Bremen 2002-2006
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyLicense : GPLv2 or higher, see LICENSE.txt
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyMaintainer : Christian.Maeder@dfki.de
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyStability : provisional
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyPortability : portable
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillySupply a default morphism for a given signature type
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly-}
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly-- due to functional deps the instance for Logic.Category cannot be supplied
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reillymodule Common.DefaultMorphism
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder ( DefaultMorphism(..) -- constructor is only exported for ATC
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder , ideOfDefaultMorphism
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder , compOfDefaultMorphism
e90dc723887d541f809007ae81c9bb73ced9592eChristian Maeder , defaultInclusion
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder ) where
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
56899f6457976a2ee20f6a23f088cb5655b15715Liam O'Reillyimport Common.Keywords
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maederimport Common.Doc
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maederimport Common.DocUtils
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillydata DefaultMorphism sign = MkMorphism
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly { domOfDefaultMorphism :: sign
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder , codOfDefaultMorphism :: sign
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder } deriving (Show, Eq, Ord)
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reillyinstance Pretty a => Pretty (DefaultMorphism a) where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder pretty = printDefaultMorphism pretty
50c62c8c45643f09bcb2f4a99b07bf1d072ecf40Christian Maeder
33bdce26495121cdbce30331ef90a1969126a840Liam O'ReillyprintDefaultMorphism :: (a -> Doc) -> DefaultMorphism a -> Doc
c0833539c8cf577dd3f2497792fbdd818442744cChristian MaederprintDefaultMorphism fA (MkMorphism s t) =
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly text "inclusion" $+$ specBraces (fA s) $+$ text mapsTo <+> specBraces (fA t)
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian MaederideOfDefaultMorphism :: sign -> DefaultMorphism sign
33bdce26495121cdbce30331ef90a1969126a840Liam O'ReillyideOfDefaultMorphism s = MkMorphism s s
fa373bc327620e08861294716b4454be8d25669fChristian Maeder
036ecbd8f721096321f47cf6a354a9d1bf3d032fChristian MaedercompOfDefaultMorphism :: Monad m => DefaultMorphism sign
aa4d26536fffe0153cd81d28925985892ac2f300Christian Maeder -> DefaultMorphism sign -> m (DefaultMorphism sign)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian MaedercompOfDefaultMorphism (MkMorphism s1 _) (MkMorphism _ s3) =
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly return $ MkMorphism s1 s3
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
b1f12c962a6fb28a298b36cf6a1dcf2ad788fb58Christian MaederdefaultInclusion :: Monad m => sign -> sign -> m (DefaultMorphism sign)
b1f12c962a6fb28a298b36cf6a1dcf2ad788fb58Christian MaederdefaultInclusion s = return . MkMorphism s
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder