Skip to content

Commit

Permalink
merge origin
Browse files Browse the repository at this point in the history
  • Loading branch information
goodlyrottenapple committed Aug 16, 2024
2 parents 743d5f8 + 02ed613 commit 9e4a8d2
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 9 deletions.
11 changes: 9 additions & 2 deletions booster/library/Booster/Syntax/Json/Internalise.hs
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,15 @@ internalisePatternOrTopOrBottom allowAlias checkSubsorts sortVars definition exi
variableSort <- lookupInternalSort sortVars definition.sorts p sort
let variableName = textToBS var.getId
pure $ Internal.Variable{variableSort, variableName}
(term, preds, ceilConditions, subst, unknown) <- internalisePattern allowAlias checkSubsorts sortVars definition p
pure $ IsPattern (existentialVars, Internal.Pattern{term,constraints = Set.fromList preds, ceilConditions}, subst, unknown)
(term, preds, ceilConditions, subst, unknown) <-
internalisePattern allowAlias checkSubsorts sortVars definition p
pure $
IsPattern $
( existentialVars
, Internal.Pattern{term, constraints = Set.fromList preds, ceilConditions}
, subst
, unknown
)
where
isTop = \case
[Syntax.KJTop{sort}] -> Just $ IsTop sort
Expand Down
19 changes: 14 additions & 5 deletions booster/library/Booster/Syntax/ParsedKore/Internalise.hs
Original file line number Diff line number Diff line change
Expand Up @@ -878,7 +878,12 @@ internaliseRewriteRuleNoAlias partialDefinition exs left right axAttributes = do
| v `Set.member` existentials' = Util.modifyVarName Util.markAsExVar v
| otherwise = Util.modifyVarName Util.markAsRuleVar v
(rhs, ensures) <-
internalisePatternEnsureNoSubstitutionOrCeilOrUnsupported partialDefinition ref Nothing renameVariable right
internalisePatternEnsureNoSubstitutionOrCeilOrUnsupported
partialDefinition
ref
Nothing
renameVariable
right
let notPreservesDefinednessReasons =
-- users can override the definedness computation by an explicit attribute
if coerce axAttributes.preserving
Expand Down Expand Up @@ -937,7 +942,12 @@ internaliseRewriteRule partialDefinition exs aliasName aliasArgs right axAttribu
| v `Set.member` existentials' = Util.modifyVarName Util.markAsExVar v
| otherwise = Util.modifyVarName Util.markAsRuleVar v
(rhs, ensures) <-
internalisePatternEnsureNoSubstitutionOrCeilOrUnsupported partialDefinition ref Nothing renameVariable right
internalisePatternEnsureNoSubstitutionOrCeilOrUnsupported
partialDefinition
ref
Nothing
renameVariable
right

let notPreservesDefinednessReasons =
-- users can override the definedness computation by an explicit attribute
Expand Down Expand Up @@ -1007,8 +1017,8 @@ internaliseSimpleEquation partialDef precond left right sortVars attrs
partialDef
(sourceRef attrs)
(Just sortVars)
(Util.modifyVarName ("Eq#" <>)) $
Syntax.KJAnd left.sort [left, precond]
(Util.modifyVarName ("Eq#" <>))
$ Syntax.KJAnd left.sort [left, precond]
(rhs, ensures) <-
internalisePatternEnsureNoSubstitutionOrCeilOrUnsupported
partialDef
Expand Down Expand Up @@ -1052,7 +1062,6 @@ internaliseSimpleEquation partialDef precond left right sortVars attrs
removeTrueBools :: [Def.Term] -> [Def.Term]
removeTrueBools = filter (/= TrueBool)


internaliseCeil ::
KoreDefinition -> -- context
Syntax.KorePattern -> -- LHS of ceil
Expand Down
5 changes: 4 additions & 1 deletion booster/tools/booster/Server.hs
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,7 @@ translateSMTOpts = \case
, retryLimit =
KoreSMT.RetryLimit . maybe Unlimited (Limit . fromIntegral) $ smtOpts.retryLimit
, tactic = fmap translateSExpr smtOpts.tactic
, args = smtOpts.args
}
Nothing ->
defaultKoreSolverOptions{solver = KoreSMT.None}
Expand All @@ -499,6 +500,7 @@ translateSMTOpts = \case
, prelude = KoreSMT.Prelude Nothing
, solver = KoreSMT.Z3
, tactic = Nothing
, args = []
}
translateSExpr :: SMT.SExpr -> KoreSMT.SExpr
translateSExpr (SMT.Atom (SMT.SMTId x)) = KoreSMT.Atom (Text.decodeUtf8 x)
Expand Down Expand Up @@ -533,7 +535,7 @@ mkKoreServer [email protected]{logAction} CLOptions{definitionFile, mainMo
, loggerEnv
}
where
KoreSMT.KoreSolverOptions{timeOut, retryLimit, tactic} = koreSolverOptions
KoreSMT.KoreSolverOptions{timeOut, retryLimit, tactic, args} = koreSolverOptions
smtConfig :: KoreSMT.Config
smtConfig =
KoreSMT.defaultConfig
Expand All @@ -542,6 +544,7 @@ mkKoreServer [email protected]{logAction} CLOptions{definitionFile, mainMo
KoreSMT.timeOut = timeOut
, KoreSMT.retryLimit = retryLimit
, KoreSMT.tactic = tactic
, KoreSMT.arguments = args <> KoreSMT.defaultConfig.arguments
}

-- SMT solver with user declared lemmas
Expand Down
2 changes: 2 additions & 0 deletions dev-tools/kore-rpc-dev/Server.hs
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ translateSMTOpts = \case
, retryLimit =
KoreSMT.RetryLimit . maybe Unlimited (Limit . fromIntegral) $ smtOpts.retryLimit
, tactic = fmap translateSExpr smtOpts.tactic
, args = smtOpts.args
}
Nothing ->
defaultKoreSolverOptions{solver = KoreSMT.None}
Expand All @@ -317,6 +318,7 @@ translateSMTOpts = \case
, prelude = KoreSMT.Prelude Nothing
, solver = KoreSMT.Z3
, tactic = Nothing
, args = []
}
translateSExpr :: SMT.SExpr -> KoreSMT.SExpr
translateSExpr (SMT.Atom (SMT.SMTId x)) = KoreSMT.Atom (Text.decodeUtf8 x)
Expand Down
4 changes: 3 additions & 1 deletion kore/app/share/GlobalMain.hs
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ import SMT (
SMT,
)
import SMT qualified
import SMT qualified as SMT.Config (Config (..))
import System.Clock (
Clock (Monotonic),
diffTimeSpec,
Expand Down Expand Up @@ -581,14 +582,15 @@ execute options metadataTools lemmas worker =
(declareSMTLemmas metadataTools lemmas)
worker
withoutSMT = SMT.runNoSMT worker
KoreSolverOptions{timeOut, rLimit, resetInterval, prelude, solver} =
KoreSolverOptions{timeOut, rLimit, resetInterval, prelude, solver, args} =
options
config =
SMT.defaultConfig
{ SMT.timeOut = timeOut
, SMT.rLimit = rLimit
, SMT.resetInterval = resetInterval
, SMT.prelude = prelude
, SMT.arguments = args <> SMT.Config.arguments SMT.defaultConfig
}

data SerializedDefinition = SerializedDefinition
Expand Down
10 changes: 10 additions & 0 deletions kore/src/Options/SMT.hs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ data KoreSolverOptions = KoreSolverOptions
, prelude :: !Prelude
, solver :: !Solver
, tactic :: !(Maybe SExpr)
, args :: [String]
}

parseKoreSolverOptions :: Parser KoreSolverOptions
Expand All @@ -72,6 +73,7 @@ parseKoreSolverOptions =
<*> parsePrelude
<*> parseSolver
<*> parseTactic
<*> parseArgs
where
parseTimeOut =
option
Expand Down Expand Up @@ -128,6 +130,14 @@ parseKoreSolverOptions =
<> value defaultTactic
)

parseArgs =
many $
strOption
( metavar "SMT_ARG"
<> long "smt-arg"
<> help "Argument passed to Z3"
)

SMT.Config
{ timeOut = defaultTimeOut
, retryLimit = defaultRetryLimit
Expand Down

0 comments on commit 9e4a8d2

Please sign in to comment.