7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaDescription : Interface for Isabelle as an ATP.
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaCopyright : (c) Eugen Kuksa University of Magdeburg 2017
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaLicense : GPLv2 or higher, see LICENSE.txt
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaMaintainer : Eugen Kuksa <kuksa@iks.cs.ovgu.de>
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaStability : provisional
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaPortability : non-portable (imports Logic)
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksamodule TPTP.Prover.Isabelle (isabelle) where
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaimport Interfaces.GenericATPState hiding (proverState)
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaimport Logic.Prover hiding (proofLines)
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaisabelle :: Prover Sign Sentence Morphism Sublogic ProofTree
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaisabelle = mkProver binary_name prover_name sublogics runTheProver
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksabinary_name :: String
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksabinary_name = "isabelle"
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaprover_name :: String
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaprover_name = "Isabelle"
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksasublogics :: Sublogic
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksasublogics = THF
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksarunTheProver :: ProverState
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa {- ^ logical part containing the input Sign and axioms and possibly
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa goals that have been proved earlier as additional axioms -}
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa -> GenericConfig ProofTree -- ^ configuration to use
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa -> Bool -- ^ True means save TPTP file
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa -> String -- ^ name of the theory in the DevGraph
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa -> Named Sentence -- ^ goal to prove
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa -> IO (ATPRetval, GenericConfig ProofTree)
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa -- ^ (retval, configuration with proof status and complete output)
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksarunTheProver proverState cfg saveTPTPFile theoryName namedGoal = do
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa let proverTimeLimitS = show $ 1000 * getTimeLimit cfg
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa allOptions = [ "tptp_isabelle"
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , proverTimeLimitS
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa problemFileName <-
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa prepareProverInput proverState cfg saveTPTPFile theoryName namedGoal prover_name
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa (_, out, wallTimeUsed) <-
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa executeTheProver binary_name (allOptions ++ [problemFileName])
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa let szsStatusLine = findSZS out
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa let resultedTimeUsed = wallTimeUsed
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa let axiomsUsed = getAxioms proverState
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa let (atpRetval, resultedProofStatus) =
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa atpRetValAndProofStatus cfg namedGoal resultedTimeUsed axiomsUsed
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa szsStatusLine prover_name
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa return (atpRetval, cfg { proofStatus = resultedProofStatus
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , resultOutput = out
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , timeUsed = resultedTimeUsed })