Logic_HasCASL.hs revision fd896e2068ad7e50aed66ac18c3720ea7ff2619f
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder-- {-# OPTIONS -fno-warn-missing-methods #-}
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly{- |
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerModule : $Header$
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyCopyright : (c) Christian Maeder and Uni Bremen 2003
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyLicence : All rights reserved.
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyMaintainer : hets@tzi.de
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyStability : experimental
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillyPortability : non-portable (imports Logic.Logic)
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly Here is the place where the class Logic is instantiated for HasCASL.
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly Also the instances for Syntax an Category.
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly todo:
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly - writing real functions
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly-}
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maedermodule HasCASL.Logic_HasCASL where
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder
e90dc723887d541f809007ae81c9bb73ced9592eChristian Maederimport HasCASL.As
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maederimport HasCASL.Le
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyimport HasCASL.PrintLe
56899f6457976a2ee20f6a23f088cb5655b15715Liam O'Reillyimport HasCASL.AsToLe
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maederimport HasCASL.Symbol
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maederimport HasCASL.ParseItem
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyimport Common.Result
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyimport Logic.ParsecInterface
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reillyimport Logic.Logic
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederimport Common.AnnoState(emptyAnnos)
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederimport Data.Dynamic
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maederimport Common.Lib.State
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reillyimport HasCASL.Morphism
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederimport Common.PrettyPrint
50c62c8c45643f09bcb2f4a99b07bf1d072ecf40Christian Maeder
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillytype HasCASL_Sublogics = ()
c0833539c8cf577dd3f2497792fbdd818442744cChristian Maeder
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly-- a dummy datatype for the LogicGraph and for identifying the right
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly-- instances
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maederdata HasCASL = HasCASL deriving (Show)
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyinstance Language HasCASL -- default definition is okay
fa373bc327620e08861294716b4454be8d25669fChristian Maeder
036ecbd8f721096321f47cf6a354a9d1bf3d032fChristian MaederbasicSpecTc, envTc, termTc, morphismTc, symbolTc, rawSymbolTc, symbItemsTc
aa4d26536fffe0153cd81d28925985892ac2f300Christian Maeder , symbMapItemsTc :: TyCon
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian MaederbasicSpecTc = mkTyCon "HasCASL.BasicSpec"
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'ReillyenvTc = mkTyCon "HasCASL.Env"
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillytermTc = mkTyCon "HasCASL.Term"
b1f12c962a6fb28a298b36cf6a1dcf2ad788fb58Christian MaedermorphismTc = mkTyCon "HasCASL.Morphism"
b1f12c962a6fb28a298b36cf6a1dcf2ad788fb58Christian MaedersymbolTc = mkTyCon "HasCASL.Symbol"
1a38107941725211e7c3f051f7a8f5e12199f03acmaederrawSymbolTc = mkTyCon "HasCASL.RawSymbol"
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillysymbItemsTc = mkTyCon "HasCASL.SymbItems"
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'ReillysymbMapItemsTc = mkTyCon "HasCASL.SymbMapItems"
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyinstance Typeable BasicSpec where
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly typeOf _ = mkAppTy basicSpecTc []
9e5f4073e948104307d43c3962d624b8416f191fLiam O'Reillyinstance Typeable Env where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder typeOf _ = mkAppTy envTc []
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederinstance Typeable Term where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder typeOf _ = mkAppTy termTc []
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederinstance Typeable Morphism where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder typeOf _ = mkAppTy morphismTc []
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederinstance Typeable Symbol where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder typeOf _ = mkAppTy symbolTc []
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederinstance Typeable RawSymbol where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder typeOf _ = mkAppTy rawSymbolTc []
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederinstance Typeable SymbItems where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder typeOf _ = mkAppTy symbItemsTc []
ebd23ec61635b0bebf7969d14f65b9d1e39f2b26Liam O'Reillyinstance Typeable SymbMapItems where
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder typeOf _ = mkAppTy symbMapItemsTc []
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly-- abstract syntax, parsing (and printing)
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyinstance Syntax HasCASL BasicSpec
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder SymbItems SymbMapItems
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder where
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder parse_basic_spec HasCASL = Just(toParseFun basicSpec emptyAnnos)
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder parse_symb_items HasCASL = Just(toParseFun symbItems emptyAnnos)
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder parse_symb_map_items HasCASL = Just(toParseFun symbMapItems
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder emptyAnnos)
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyinstance Category HasCASL Env Morphism where
fa373bc327620e08861294716b4454be8d25669fChristian Maeder ide HasCASL e = ideMor e
fa373bc327620e08861294716b4454be8d25669fChristian Maeder comp HasCASL m1 m2 = Just $ compMor m1 m2
fa373bc327620e08861294716b4454be8d25669fChristian Maeder dom HasCASL m = msource m
fa373bc327620e08861294716b4454be8d25669fChristian Maeder cod HasCASL m = mtarget m
fa373bc327620e08861294716b4454be8d25669fChristian Maeder legal_obj HasCASL e = legalEnv e
fa373bc327620e08861294716b4454be8d25669fChristian Maeder legal_mor HasCASL m = legalMor m
fa373bc327620e08861294716b4454be8d25669fChristian Maeder
fa373bc327620e08861294716b4454be8d25669fChristian Maeder
fa373bc327620e08861294716b4454be8d25669fChristian Maederinstance Sentences HasCASL Term () Env Morphism Symbol
fa373bc327620e08861294716b4454be8d25669fChristian Maeder
fa373bc327620e08861294716b4454be8d25669fChristian Maederinstance StaticAnalysis HasCASL BasicSpec Term ()
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder SymbItems SymbMapItems
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder Env
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder Morphism
e8d99f05c231b379be702a1aa8c7dd0b3c666928Liam O'Reilly Symbol RawSymbol where
e8d99f05c231b379be702a1aa8c7dd0b3c666928Liam O'Reilly basic_analysis HasCASL = Just ( \ (b, e, ga) ->
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder let (nb, ne) = runState (anaBasicSpec ga b) e
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder in Result (reverse (envDiags ne)) $
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly Just (nb, initialEnv, ne, sentences ne))
e8d99f05c231b379be702a1aa8c7dd0b3c666928Liam O'Reilly
e7cd36335f0f7be9ed5005e71d94c2856b588d62Christian Maeder signature_union HasCASL = merge
e7cd36335f0f7be9ed5005e71d94c2856b588d62Christian Maeder empty_signature HasCASL = initialEnv
e7cd36335f0f7be9ed5005e71d94c2856b588d62Christian Maeder induced_from_to_morphism HasCASL _ e1 e2 = return $ mkMorphism e1 e2
e7cd36335f0f7be9ed5005e71d94c2856b588d62Christian Maeder induced_from_morphism HasCASL _ e = return $ ideMor e
e8d99f05c231b379be702a1aa8c7dd0b3c666928Liam O'Reilly morphism_union HasCASL m1 m2 = morphismUnion m1 m2
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder cogenerated_sign HasCASL _ e = return $ ideMor e
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder stat_symb_map_items HasCASL = statSymbMapItems
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder stat_symb_items HasCASL = statSymbItems
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder symbol_to_raw HasCASL = symbolToRaw
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder id_to_raw HasCASL = idToRaw
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder matches HasCASL = matchSymb
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder sym_name HasCASL = symName
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederinstance Logic HasCASL HasCASL_Sublogics
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder BasicSpec Term SymbItems SymbMapItems
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder Env
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder Morphism
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder Symbol RawSymbol ()
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder