Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serialize the unknown predicate as JSON on DecidePredicateUnknown #3694

Merged
merged 4 commits into from
Nov 16, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions kore/src/Kore/JsonRpc.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module Kore.JsonRpc (

import Control.Concurrent.MVar qualified as MVar
import Control.Monad.Except (runExceptT)
import Control.Monad.Logger (logInfoN, runLoggingT)
import Control.Monad.Logger (runLoggingT)
import Data.Aeson.Types (ToJSON (..))
import Data.Coerce (coerce)
import Data.Conduit.Network (serverSettings)
Expand Down Expand Up @@ -40,7 +40,11 @@ import Kore.Internal.Condition qualified as Condition
import Kore.Internal.OrPattern qualified as OrPattern
import Kore.Internal.Pattern (Pattern)
import Kore.Internal.Pattern qualified as Pattern
import Kore.Internal.Predicate (getMultiAndPredicate, pattern PredicateTrue)
import Kore.Internal.Predicate (
getMultiAndPredicate,
makeMultipleAndPredicate,
pattern PredicateTrue,
)
import Kore.Internal.Substitution qualified as Substitution
import Kore.Internal.TermLike (TermLike)
import Kore.Internal.TermLike qualified as TermLike
Expand All @@ -54,7 +58,7 @@ import Kore.JsonRpc.Server (
)
import Kore.JsonRpc.Types
import Kore.JsonRpc.Types.Log
import Kore.Log.DecidePredicateUnknown (DecidePredicateUnknown, srcLoc)
import Kore.Log.DecidePredicateUnknown (DecidePredicateUnknown (..), srcLoc)
import Kore.Log.InfoExecDepth (ExecDepth (..))
import Kore.Log.InfoJsonRpcProcessRequest (InfoJsonRpcProcessRequest (..))
import Kore.Log.JsonRpc (LogJsonRpcServer (..))
Expand Down Expand Up @@ -92,7 +96,6 @@ import Kore.Validate.PatternVerifier (Context (..))
import Kore.Validate.PatternVerifier qualified as PatternVerifier
import Log qualified
import Prelude.Kore
import Pretty qualified
import SMT qualified
import System.Clock (Clock (Monotonic), diffTimeSpec, getTime, toNanoSecs)

Expand Down Expand Up @@ -627,9 +630,7 @@ runServer port serverState mainModule runSMT Log.LoggerEnv{logAction} = do
log (InfoJsonRpcProcessRequest (getReqId req) parsed)
>> respond serverState mainModule runSMT parsed
)
[ JsonRpcHandler $ \(err :: DecidePredicateUnknown) ->
let mkPretty = Pretty.renderText . Pretty.layoutPretty Pretty.defaultLayoutOptions . Pretty.pretty
in logInfoN (mkPretty err) >> pure (backendError SmtSolverError $ mkPretty err)
[ handleDecidePredicateUnknown
, handleErrorCall
, handleSomeException
]
Expand All @@ -641,3 +642,12 @@ runServer port serverState mainModule runSMT Log.LoggerEnv{logAction} = do

log :: MonadIO m => Log.Entry entry => entry -> m ()
log = Log.logWith $ Log.hoistLogAction liftIO logAction

handleDecidePredicateUnknown :: JsonRpcHandler
handleDecidePredicateUnknown = JsonRpcHandler $ \(err :: DecidePredicateUnknown) ->
pure
( backendError SmtSolverError $
PatternJson.fromPredicate
(TermLike.SortActualSort $ TermLike.SortActual (TermLike.Id "SortBool" TermLike.AstLocationNone) [])
(makeMultipleAndPredicate . toList $ predicates err)
)