Logic_Propositional.hs revision 12251a9d23f842673978d0ad6692527ef320c55d
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott{-# OPTIONS -cpp #-}
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottModule : $Header$
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottDescription : Instance of class Logic for propositional logic
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottCopyright : (c) Dominik Luecke, Uni Bremen 2007
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottMaintainer : luecke@informatik.uni-bremen.de
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottStability : experimental
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottPortability : non-portable (imports Logic.Logic)
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottInstance of class Logic for the propositional logic
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott Also the instances for Syntax and Category.
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott http://en.wikipedia.org/wiki/Propositional_logic
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott Till Mossakowski, Joseph Goguen, Razvan Diaconescu, Andrzej Tarlecki.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey What is a Logic?.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey In Jean-Yves Beziau (Ed.), Logica Universalis, pp. 113-@133. Birkhaeuser.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport Propositional.Morphism as Morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.AS_BASIC_Propositional as AS_BASIC
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.ATC_Propositional()
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.Symbol as Symbol
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumseyimport qualified Propositional.Parse_AS_Basic as Parse_AS
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.Analysis as Analysis
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.Sublogic as Sublogic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#ifdef UNI_PACKAGE
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#ifdef TABULAR_PACKAGE
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.ProveWithTruthTable as ProveTT
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.Prove as Prove
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Lid for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseydata Propositional = Propositional deriving Show --lid
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshottinstance Language Propositional where
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott description _ =
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "Propositional Logic\n"++
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "for more information please refer to\n"++
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "http://en.wikipedia.org/wiki/Propositional_logic"
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Instance of Category for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Category Sign.Sign Morphism.Morphism where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- Identity morhpism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- Returns the domain of a morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- Returns the codomain of a morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- tests if the morphism is ok
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- composition of morphisms
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Instance of Sentences for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Sentences Propositional AS_BASIC.FORMULA
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- returns the set of symbols
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey sym_of Propositional = Symbol.symOf
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- returns the symbol map
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey symmap_of Propositional = Symbol.getSymbolMap
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- returns the name of a symbol
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott sym_name Propositional = Symbol.getSymbolName
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott -- translation of sentences along signature morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey map_sen Propositional = Morphism.mapSentence
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- there is nothing to leave out
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey simplify_sen Propositional _ form = form
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Syntax of Propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Syntax Propositional AS_BASIC.BASIC_SPEC
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_ITEMS AS_BASIC.SYMB_MAP_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey parse_basic_spec Propositional = Just Parse_AS.basicSpec
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey parse_symb_items _ = Nothing
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey parse_symb_map_items _ = Nothing
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Instance of Logic for propositional logc
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Logic Propositional
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_MAP_ITEMS -- symb_map_items
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey ProofTree -- proof_tree
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey stability Propositional = Experimental
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey top_sublogic Propositional = Sublogic.top
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey all_sublogics Propositional = Sublogic.sublogics_all
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- supplied provers
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#ifdef UNI_PACKAGE
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey provers Propositional = [Prove.zchaffProver
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#ifdef TABULAR_PACKAGE
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey cons_checkers Propositional = [Prove.propConsChecker]
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey conservativityCheck Propositional = conserChose
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey-- | Static Analysis for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance StaticAnalysis Propositional
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_MAP_ITEMS -- symb_map_items
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey basic_analysis Propositional =
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott empty_signature Propositional = Sign.emptySig
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey inclusion Propositional = Morphism.inclusionMap
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott signature_union Propositional = Sign.sigUnion
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey symbol_to_raw Propositional = Symbol.symbolToRaw
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey id_to_raw Propositional = Symbol.idToRaw
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey matches Propositional = Symbol.matches
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey stat_symb_items Propositional = Analysis.mkStatSymbItems
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey stat_symb_map_items Propositional = Analysis.mkStatSymbMapItem
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey induced_from_morphism Propositional = Analysis.inducedFromMorphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey induced_from_to_morphism Propositional =
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey signature_colimit Propositional = Analysis.signatureColimit
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Sublogics
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance SemiLatticeWithTop Sublogic.PropSL where
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshottinstance MinSublogic Sublogic.PropSL AS_BASIC.BASIC_SPEC where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic it = Sublogic.sl_basic_spec Sublogic.bottom it
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL Sign.Sign where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic si = Sublogic.sl_sig Sublogic.bottom si
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance SublogicName Sublogic.PropSL where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL AS_BASIC.FORMULA where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic frm = Sublogic.sl_form Sublogic.bottom frm
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL Symbol.Symbol where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic sym = Sublogic.sl_sym Sublogic.bottom sym
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL AS_BASIC.SYMB_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic symit = Sublogic.sl_symit Sublogic.bottom symit
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshottinstance MinSublogic Sublogic.PropSL Morphism.Morphism where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic symor = Sublogic.sl_mor Sublogic.bottom symor
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL AS_BASIC.SYMB_MAP_ITEMS where
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott minSublogic sm = Sublogic.sl_symmap Sublogic.bottom sm
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL Symbol.Symbol where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogicM = Sublogic.prSymbolM
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogic Sublogic.PropSL Sign.Sign where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogic = Sublogic.prSig
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogic Sublogic.PropSL Morphism.Morphism where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogic = Sublogic.prMor
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL AS_BASIC.SYMB_MAP_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogicM = Sublogic.prSymMapM
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL AS_BASIC.SYMB_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogicM = Sublogic.prSymM
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogic Sublogic.PropSL AS_BASIC.BASIC_SPEC where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogic = Sublogic.prBasicSpec
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL AS_BASIC.FORMULA where
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott projectSublogicM = Sublogic.prFormulaM