ProveDarwin.hs revision 4ca0c94efd3f03e6fdd2e7e68471d338b4a224dc
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekModule : $Header$
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom GundersenDescription : Interface to the TPTP theorem prover via Darwin.
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekCopyright : (c) Heng Jiang, Uni Bremen 2004-2007
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-SzmekMaintainer : jiang@informatik.uni-bremen.de
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekStability : provisional
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-SzmekPortability : needs POSIX
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-SzmekInterface for the Darwin service, uses GUI.GenericATP.
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-SzmekSee <http://spass.mpi-sb.mpg.de/> for details on SPASS, and
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek<http://combination.cs.uiowa.edu/Darwin/> for Darwin.
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek , darwinCMDLautomaticBatch
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek , darwinConsChecker
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , ProverBinary (..)
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek-- preliminary hacks for display of CASL models
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekimport Common.AS_Annotation as AS_Anno
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekimport qualified Common.Result as Result
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekimport Data.Time (timeToTimeOfDay)
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekimport Data.Time.Clock (UTCTime (..), secondsToDiffTime, getCurrentTime)
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekimport qualified Control.Concurrent as Concurrent
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekimport Interfaces.GenericATPState
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek-- * Prover implementation
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmekdata ProverBinary = Darwin | EDarwin
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekproverBinary :: ProverBinary -> String
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart PoetteringproverBinary b = case b of
299a55075d1bf478b9190191caefd5c1b934340dMark Eichin Darwin -> "darwin"
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek EDarwin -> "e-darwin"
299a55075d1bf478b9190191caefd5c1b934340dMark Eichin{- | The Prover implementation. First runs the batch prover (with
299a55075d1bf478b9190191caefd5c1b934340dMark Eichin graphical feedback), then starts the GUI prover. -}
299a55075d1bf478b9190191caefd5c1b934340dMark Eichin :: ProverBinary -> Prover Sign Sentence SoftFOLMorphism () ProofTree
3fde5f30bda2a70d97f3dc8fa918e42e1c07cc2cLennart PoetteringdarwinProver b = mkAutomaticProver (proverBinary b) () (darwinGUI b)
3fde5f30bda2a70d97f3dc8fa918e42e1c07cc2cLennart Poettering $ darwinCMDLautomaticBatchAux b
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart PoetteringdarwinConsChecker
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering :: ProverBinary -> ConsChecker Sign Sentence () SoftFOLMorphism ProofTree
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart PoetteringdarwinConsChecker b = (mkConsChecker (proverBinary b) () $ consCheck b)
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering { ccNeedsTimer = False }
fbce11397f4d19821a9dfe66ee3ebe11cad90057Jan Engelhardt Record for prover specific functions. This is used by both GUI and command
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering line interface.
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart PoetteringatpFun :: ProverBinary -- ^ the actual binary
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering -> String -- ^ theory name
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering -> ATPFunctions Sign Sentence SoftFOLMorphism ProofTree SoftFOLProverState
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart PoetteringatpFun b thName = ATPFunctions
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering { initialProverState = spassProverState
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering , atpTransSenName = transSenName
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering , atpInsertSentence = insertSentenceGen
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering , goalOutput = showTPTPProblem thName
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , proverHelpText = "no help for darwin available"
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , batchTimeEnv = "HETS_SPASS_BATCH_TIME_LIMIT"
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , fileExtensions = FileExtensions
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek { problemOutput = ".tptp"
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , proverOutput = ".spass"
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , theoryConfiguration = ".spcf" }
3fde5f30bda2a70d97f3dc8fa918e42e1c07cc2cLennart Poettering , runProver = runDarwin b
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek , createProverOptions = extraOpts }
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek Invokes the generic prover GUI. SPASS specific functions are omitted by
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek data type ATPFunctions.
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek :: ProverBinary -- ^ the actual binary
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek -> String -- ^ theory name
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek -> Theory Sign Sentence ProofTree
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek -- ^ theory consisting of a signature and sentences
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek -> [FreeDefMorphism SPTerm SoftFOLMorphism] -- ^ freeness constraints
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek -> IO [ProofStatus ProofTree] -- ^ proof status for each goal
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekdarwinGUI b thName th freedefs =
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek genericATPgui (atpFun b thName) True (proverBinary b) thName th
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek freedefs emptyProofTree
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek-- ** command line function
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering Implementation of 'Logic.Prover.proveCMDLautomaticBatch' which provides an
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering automatic command line interface to the Darwin prover.
847ae0ae7f29e7bfb245d692409fc2948eab7d1dLennart Poettering Darwin specific functions are omitted by data type ATPFunctions.
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-SzmekdarwinCMDLautomaticBatch
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek :: Bool -- ^ True means include proved theorems
d868475ad62547f0a034dfaf038aff31b3d05372Zbigniew Jędrzejewski-Szmek -> Bool -- ^ True means save problem file
-> AS_Anno.Named SPTerm -- ^ goal to prove
saveFileName = thName ++ '_' : AS_Anno.senAttr nGoal
'_' : AS_Anno.senAttr nGoal
(AS_Anno.senAttr nGoal) emptyProofTree)
(AS_Anno.senAttr nGoal) bin emptyProofTree)
{ goalName = AS_Anno.senAttr nGoal
in map AS_Anno.senAttr fs