Sign.hs revision 7a4685f6f0678ef58ace46d58357035551fdd98b
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannModule : $Header$
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannDescription : Signature for propositional logic
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannCopyright : (c) Dominik Luecke, Uni Bremen 2007
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannMaintainer : luecke@informatik.uni-bremen.de
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannStability : experimental
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannPortability : portable
74dfa6bc521350525358340117512f8afe9fdd26Daniel HausmannDefinition of signatures for propositional logic
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann Till Mossakowski, Joseph Goguen, Razvan Diaconescu, Andrzej Tarlecki.
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann What is a Logic?.
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann In Jean-Yves Beziau (Ed.), Logica Universalis, pp. 113-@133. Birkhaeuser.
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann Sign (..) -- Propositional Signatures
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,pretty -- pretty printing
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,isLegalSignature -- is a signature ok?
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,addToSig -- adds an id to the given Signature
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,unite -- union of sigantures
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,emptySig -- empty signature
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,isSubSigOf -- is subsiganture?
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,sigDiff -- Difference of Signatures
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,sigUnion -- Union for Logic.Logic
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,diffOfSigs -- Difference for Logic.Logic
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,ATP_ProofTree (..) -- Proof tree for propositonal logic
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmann ,emptyProofTree -- the empty proof tree
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmannimport qualified Data.Set as Set
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmannimport qualified Common.Id as Id
74dfa6bc521350525358340117512f8afe9fdd26Daniel Hausmannimport qualified Common.Result as Result
import Common.Doc
import Common.DocUtils
printSign s = hsep [text "prop", (sepByCommas $ map pretty (Set.toList $ items s))]
addToSig :: Sign -> Id.Id -> Sign
addToSig sig tok = Sign {items = Set.insert tok $ items sig}
items = Set.union (items sig1) (items sig2)
emptySig = Sign{items = Set.empty}
isSubSigOf sig1 sig2 = Set.isSubsetOf (items sig1) (items sig2)
sigDiff sig1 sig2 = Sign{items = Set.difference (items sig1) (items sig2)}
sigUnion :: Sign -> Sign -> Result.Result Sign
sigUnion s1 s2 = Result.Result
, Result.diagString = "All fine sigUnion"
, Result.maybeResult = Just $ unite s1 s2
-- | difference of signatures for Logic.Logic
diffOfSigs :: Sign -> Sign -> Result.Result Sign
| isSubSigOf s1 s2 = Result.Result
, Result.diagString = "All fine diffOfSigs"
, Result.maybeResult = Just $ sigDiff s1 s2
| otherwise = Result.Result
, Result.diagString = (show $ pretty s1) ++
, Result.maybeResult = Nothing