Logic_CspCASL.hs revision 0a58641cb9f0c51d02626a826acde9785b4f4a36
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder{-# LANGUAGE MultiParamTypeClasses, ScopedTypeVariables
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , TypeSynonymInstances, FlexibleInstances #-}
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens Elkner{- |
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederModule : ./CspCASL/Logic_CspCASL.hs
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederDescription : CspCASL instance of type class logic
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu ProdescuCopyright : (c) Markus Roggenbach, Till Mossakowski and Uni Bremen 2003
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederLicense : GPLv2 or higher, see LICENSE.txt
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederMaintainer : M.Roggenbach@swansea.ac.uk
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederStability : experimental
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederPortability : non-portable(import Logic.Logic)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederHere is the place where the class Logic is instantiated for CspCASL. A
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederCspCASL signature is a CASL signature with a set of named channels and
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederprocesses. Every process has a profile. Morphisms are supposed to allow
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederrenaming of channels and processes, too. Also sublogics (as a superset of some
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederCASL sublogics) are still missing.
654eedbcf7478c0d24ecba13325cf57ac2858071Christian Maeder-}
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroedermodule CspCASL.Logic_CspCASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder ( GenCspCASL (..)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , CspCASLSemantics
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , CspCASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , cspCASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , Trace (..)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , traceCspCASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , Failure (..)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder , failureCspCASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder ) where
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport Logic.Logic
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport Logic.Prover
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport Common.DocUtils
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
1a38107941725211e7c3f051f7a8f5e12199f03acmaederimport CASL.Logic_CASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CASL.Parse_AS_Basic
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CASL.Morphism
1a38107941725211e7c3f051f7a8f5e12199f03acmaederimport CASL.Sign
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CASL.ToDoc
1a38107941725211e7c3f051f7a8f5e12199f03acmaederimport qualified CASL.MapSentence as MapSen
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport qualified CASL.SimplifySen as SimpSen
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASL.ATC_CspCASL ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASL.CspCASL_Keywords
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASL.Morphism as CspCASL_Morphism
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASL.Parse_CspCASL ()
1a38107941725211e7c3f051f7a8f5e12199f03acmaederimport CspCASL.Print_CspCASL ()
1a38107941725211e7c3f051f7a8f5e12199f03acmaederimport qualified CspCASL.SignCSP as SignCSP
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroederimport qualified CspCASL.SimplifySen as SimplifySen
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASL.StatAnaCSP
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroederimport CspCASL.SymbItems
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroederimport CspCASL.Symbol
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASL.SymMapAna
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederimport CspCASLProver.CspCASLProver (cspCASLProver)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder-- | a generic logic id for CspCASL with different semantics
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederdata GenCspCASL a = GenCspCASL a deriving Show
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroedercspCASL :: GenCspCASL ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroedercspCASL = GenCspCASL ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder-- | The top-level logic with the loosest semantics (and without provers)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroedertype CspCASL = GenCspCASL ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederinstance Show a => Language (GenCspCASL a) where
656f17ae9b7610ff2de1b6eedeeadea0c3bcdc8dChristian Maeder language_name (GenCspCASL a) = "CspCASL"
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder ++ let s = show a in if s == "()" then "" else '_' : s
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder description _ =
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder "CspCASL - extension of CASL with the process algebra CSP\n" ++
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder "See http://www.cs.swan.ac.uk/~csmarkus/ProcessesAndData/"
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroeder-- | Instance of Sentences for CspCASL
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroederinstance Show a => Sentences (GenCspCASL a)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- sentence
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder SignCSP.CspCASLSen
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- signature
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder SignCSP.CspCASLSign
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- morphism
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspCASL_Morphism.CspCASLMorphism
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- symbol
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbol
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder where
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder map_sen (GenCspCASL _) m = return . MapSen.mapSen mapSen m
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder sym_name (GenCspCASL _) = cspSymName
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder symmap_of (GenCspCASL _) = cspMorphismToCspSymbMap
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder simplify_sen (GenCspCASL _) =
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder SimpSen.simplifySen (const return) SimplifySen.simplifySen
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder sym_of (GenCspCASL _) = symSets
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder symKind (GenCspCASL _) = show . pretty . cspSymbType
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder print_named (GenCspCASL _) = printTheoryFormula
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder-- | Syntax of CspCASL
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederinstance Show a => Syntax (GenCspCASL a)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspBasicSpec -- basic_spec
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbol
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbItems
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbMapItems
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder where
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder parse_symb_items (GenCspCASL _) = Just cspSymbItems
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder parse_symb_map_items (GenCspCASL _) = Just cspSymbMapItems
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder parse_basic_spec (GenCspCASL _) = Just $ basicSpec startCspKeywords
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder-- lattices (for sublogics) missing
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederclass Show a => CspCASLSemantics a where
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder cspProvers :: a
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -> [Prover SignCSP.CspCASLSign SignCSP.CspCASLSen
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspCASL_Morphism.CspCASLMorphism () ()]
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder cspProvers _ = []
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroeder{- further dummy types for the trace of the failure semantics can be added
ba06b25b69be05a4733db7197940efd73976f215Jonathan von Schroeder and made an instance of CspCASLSemantics.
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder "identity" Comorphisms between these different logics still need to be
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder defined.
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder-}
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederinstance CspCASLSemantics ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederdata Trace = Trace deriving Show
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroederdata Failure = Failure deriving Show
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroedertraceCspCASL :: GenCspCASL Trace
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroedertraceCspCASL = GenCspCASL Trace
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederfailureCspCASL :: GenCspCASL Failure
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von SchroederfailureCspCASL = GenCspCASL Failure
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroederinstance CspCASLSemantics Trace where
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder cspProvers _ = [cspCASLProver]
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroederinstance CspCASLSemantics Failure
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder-- | Instance of Logic for CspCASL
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroederinstance CspCASLSemantics a => Logic (GenCspCASL a)
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder -- Sublogics (missing)
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder ()
ece3b1a5353a9af3c966a1d5453594ed35334f7bJonathan von Schroeder -- basic_spec
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspBasicSpec
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- sentence
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder SignCSP.CspCASLSen
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- symb_items
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbItems
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- symb_map_items
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbMapItems
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- signature
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder SignCSP.CspCASLSign
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- morphism
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspCASL_Morphism.CspCASLMorphism
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspSymbol
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder CspRawSymbol
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder -- proof_tree (missing)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder where
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder stability (GenCspCASL _) = Testing
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder data_logic (GenCspCASL _) = Just (Logic CASL)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder empty_proof_tree _ = ()
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder provers (GenCspCASL _) = cspProvers (undefined :: a)
b35e053c2c5a5ea0f13decfd0303894861d82b4dJonathan von Schroeder
-- | Static Analysis for CspCASL
instance Show a => StaticAnalysis (GenCspCASL a)
-- basic_spec
CspBasicSpec
-- sentence
SignCSP.CspCASLSen
-- symb_items
CspSymbItems
-- symb_map_items
CspSymbMapItems
-- signature
SignCSP.CspCASLSign
-- morphism
CspCASL_Morphism.CspCASLMorphism
CspSymbol
CspRawSymbol
where
basic_analysis (GenCspCASL _) = Just basicAnalysisCspCASL
stat_symb_items (GenCspCASL _) = cspStatSymbItems
stat_symb_map_items (GenCspCASL _) = cspStatSymbMapItems
id_to_raw (GenCspCASL _) = idToCspRaw
symbol_to_raw (GenCspCASL _) = ACspSymbol
matches (GenCspCASL _) = cspMatches
empty_signature (GenCspCASL _) = SignCSP.emptyCspCASLSign
is_subsig (GenCspCASL _) = SignCSP.isCspCASLSubSig
subsig_inclusion (GenCspCASL _) = cspSubsigInclusion
signature_union (GenCspCASL _) = SignCSP.unionCspCASLSign
signatureDiff (GenCspCASL _) s = return . diffSig SignCSP.diffCspSig s
morphism_union (GenCspCASL _) =
morphismUnion CspCASL_Morphism.cspAddMorphismUnion
SignCSP.cspSignUnion
induced_from_morphism (GenCspCASL _) = cspInducedFromMorphism
induced_from_to_morphism (GenCspCASL _) = cspInducedFromToMorphism
cogenerated_sign (GenCspCASL _) = cspCogeneratedSign
generated_sign (GenCspCASL _) = cspGeneratedSign