Logic_Propositional.hs revision 12251a9d23f842673978d0ad6692527ef320c55d
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott{-# OPTIONS -cpp #-}
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott{- |
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 Wapshott
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottMaintainer : luecke@informatik.uni-bremen.de
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottStability : experimental
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottPortability : non-portable (imports Logic.Logic)
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert WapshottInstance of class Logic for the propositional logic
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott Also the instances for Syntax and Category.
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott-}
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott{-
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott Ref.
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott http://en.wikipedia.org/wiki/Propositional_logic
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
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.
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey 2005.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-}
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseymodule Propositional.Logic_Propositional
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey (module Propositional.Logic_Propositional
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey , Sign
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey , Morphism
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey ) where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport Common.ProofTree
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport ATC.ProofTree ()
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport Logic.Logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport Propositional.Sign as Sign
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
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#ifdef UNI_PACKAGE
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#ifdef TABULAR_PACKAGE
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.ProveWithTruthTable as ProveTT
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#endif
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport qualified Propositional.Prove as Prove
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport Propositional.Conservativity
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#endif
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Lid for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseydata Propositional = Propositional deriving Show --lid
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
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"
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Instance of Category for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Category Sign.Sign Morphism.Morphism where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- Identity morhpism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey ide = Morphism.idMor
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- Returns the domain of a morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey dom = Morphism.source
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- Returns the codomain of a morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey cod = Morphism.target
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- tests if the morphism is ok
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey legal_mor f = Morphism.isLegalMorphism f
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey -- composition of morphisms
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey comp f g = Morphism.composeMor f g
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Instance of Sentences for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Sentences Propositional AS_BASIC.FORMULA
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Sign.Sign Morphism.Morphism Symbol.Symbol where
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
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
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Instance of Logic for propositional logc
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance Logic Propositional
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Sublogic.PropSL -- Sublogics
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.BASIC_SPEC -- basic_spec
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.FORMULA -- sentence
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_ITEMS -- symb_items
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_MAP_ITEMS -- symb_map_items
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Sign.Sign -- sign
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Morphism.Morphism -- morphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Symbol.Symbol -- symbol
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Symbol.Symbol -- raw_symbol
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey ProofTree -- proof_tree
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott where
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
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey ,ProveTT.ttProver
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#endif
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey ]
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey cons_checkers Propositional = [Prove.propConsChecker]
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey conservativityCheck Propositional = conserChose
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey#endif
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey
eba2b2ec966be265972d5fc47fa408a628a7139cTom Rumsey-- | Static Analysis for propositional logic
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance StaticAnalysis Propositional
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.BASIC_SPEC -- basic_spec
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.FORMULA -- sentence
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_ITEMS -- symb_items
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey AS_BASIC.SYMB_MAP_ITEMS -- symb_map_items
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Sign.Sign -- sign
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Morphism.Morphism -- morphism
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott Symbol.Symbol -- symbol
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott Symbol.Symbol -- raw_symbol
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey basic_analysis Propositional =
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey Just $ Analysis.basicPropositionalAnalysis
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 Analysis.inducedFromToMorphism
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey signature_colimit Propositional = Analysis.signatureColimit
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey-- | Sublogics
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance SemiLatticeWithTop Sublogic.PropSL where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey join = Sublogic.sublogics_max
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey top = Sublogic.top
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshottinstance MinSublogic Sublogic.PropSL AS_BASIC.BASIC_SPEC where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic it = Sublogic.sl_basic_spec Sublogic.bottom it
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL Sign.Sign where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic si = Sublogic.sl_sig Sublogic.bottom si
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance SublogicName Sublogic.PropSL where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey sublogicName = Sublogic.sublogics_name
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL AS_BASIC.FORMULA where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic frm = Sublogic.sl_form Sublogic.bottom frm
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL Symbol.Symbol where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic sym = Sublogic.sl_sym Sublogic.bottom sym
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL AS_BASIC.SYMB_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic symit = Sublogic.sl_symit Sublogic.bottom symit
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshottinstance MinSublogic Sublogic.PropSL Morphism.Morphism where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey minSublogic symor = Sublogic.sl_mor Sublogic.bottom symor
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance MinSublogic Sublogic.PropSL AS_BASIC.SYMB_MAP_ITEMS where
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott minSublogic sm = Sublogic.sl_symmap Sublogic.bottom sm
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL Symbol.Symbol where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogicM = Sublogic.prSymbolM
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogic Sublogic.PropSL Sign.Sign where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogic = Sublogic.prSig
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogic Sublogic.PropSL Morphism.Morphism where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogic = Sublogic.prMor
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL AS_BASIC.SYMB_MAP_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogicM = Sublogic.prSymMapM
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL AS_BASIC.SYMB_ITEMS where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogicM = Sublogic.prSymM
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogic Sublogic.PropSL AS_BASIC.BASIC_SPEC where
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey projectSublogic = Sublogic.prBasicSpec
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyinstance ProjectSublogicM Sublogic.PropSL AS_BASIC.FORMULA where
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott projectSublogicM = Sublogic.prFormulaM
d244c4a5c5ef6a408d1b44b95810a05368f33aaeRobert Wapshott