Uses of Interface
org.smtlib.IResponse
Packages that use IResponse
Package
Description
This package contains the main classes and abstract interfaces for this
SMT-LIB tool; the tool provides a stand-alone SMT-LIB-compliant command-line
application, an application that responds to SMT-LIB commands over a
network port, and an SMT-LIB Java API.
This package contains implementations of the SMT-LIB commands,
implementing the interfaces defined in ICommand;
these implementations are independent of the concrete syntax that might
be used, except that each command object has methods that can parse or print
representations of the command in the standard (or potentially other) concrete syntaxes.
This package contains commands that are extensions to SMT-LIB.
This package is an implementation of the interfaces defined in org.smtlib.
This package is a concrete implementation of a particular concrete syntax for the abstract SMT-LIB semantics.
This package implements various instances of org.smtlib.ISolver, which are
specific solvers that wrap and interact with various off-the-shelf SMT solvers
currently available.
-
Uses of IResponse in org.smtlib
Subinterfaces of IResponse in org.smtlibModifier and TypeInterfaceDescriptioninterfaceThis interface represents the general class of attribute values; that is, it is the super-interface of any class that may be an attribute value; in the abstract syntax it has no particular structure, though it does include true, false, string literals, numerals, and various pre-defined constants.interfaceThis interface represents the functionality for any class implementing an SMT-LIB term or formulastatic interfaceThis interface represents SMT-LIB identifiers that are sort qualifiers on function idsstatic interfaceIExpr.IAttribute<TT extends IAttributeValue>This interface represents an SMT-LIB attribute-value pair; the value may be null (keyword-only attribute).static interfaceThis interface represents an SMT-LIB expression with attributes.static interfaceThis interface represents SMT-LIB binary literalsstatic interfaceThis interface represents non-negative decimal numbers of arbitrary size (i.e.static interfaceThis interface represents an error, e.g.static interfaceThis interface represents an SMT-LIB quantified exists expressionstatic interfaceThis interface represents SMT-LIB expressions that are a function identifier applied to one or more arguments.static interfaceThis interface represents an SMT-LIB quantified forall expressionstatic interfaceThis interface represents SMT-LIB hex literalsstatic interfaceThis interface represents SMT-LIB identifiers (either ids or parameterized ids)static interfaceMarker interface for the index types in a parameterized identifier: INumeral and ISymbol, plus IHexLiteral, which the Strings theory's (_ char H) uses, and IBinaryLiteral, which no theory uses but which is parsed so that a solver reports it; each theory decides which kinds it accepts.static interfaceThis interface represents an SMT-LIB lambda expression:(lambda (sorted_var+) term).static interfaceThis interface represents an SMT-LIB let-expressionstatic interfaceThis interface represents all literal (explicit constant) expressions.static interfaceThis interface represents an SMT-LIB 2.7 match expression.static interfaceThis interface represents non-negative integers of arbitrary size.static interfaceThis interface represents SMT-LIB parameterized identifiersstatic interfaceThis interface represents the value of a:patternattribute: a list of terms (a multi-pattern), written in the concrete syntax as( t1 ... tn ).static interfaceThis interface represents SMT-LIB identifiers for function ids (either ids or parameterized ids or as-type identifiers)static interfaceThis interface represents SMT-LIB string literalsstatic interfaceThis interface represents SMT-LIB ids; equal ids have equal (using .equals) values of value().static interfaceResponse type for get-assertions, carrying the list of currently asserted formulae.static interfaceResponse type for get-assignment, carrying a list of name-Boolean pairs.static interfaceResponse type for get-info, carrying a list of attribute key-value pairs.static interfaceThe interface for error responsesstatic interfaceResponse type for get-proof.static interfaceResponse type for get-unsat-assumptions, carrying the assumptions (terms, e.g.static interfaceResponse type for get-unsat-core, carrying the names of the formulae in the unsat core.static interfaceResponse type for get-value, carrying a list of expression-value pairs.Classes in org.smtlib that implement IResponseModifier and TypeClassDescriptionstatic final classThe response returned for a command sent byAbstractSolver.sendPipelined(ICommand)whose actual response has not yet been read;AbstractSolver.Pending.isReady()tells when it has (seeAbstractSolver.readPipelined(boolean)), andAbstractSolver.Pending.response()then gives it.Fields in org.smtlib declared as IResponseModifier and TypeFieldDescriptionprotected IResponseAbstractSolver.checkSatStatusThe response to the most recent check-sat or check-sat-assuming, or null if there is none.SMT.checkSatStatusThe last check-sat status seen during execution; null if no check-sat has been executed yet.SMT.lastResponseThe response from the most recently executed command; used to export results in interactive mode.Fields in org.smtlib with type parameters of type IResponseMethods in org.smtlib that return IResponseModifier and TypeMethodDescriptionAbstractSolver.assertExpr(IExpr sexpr) ISolver.assertExpr(IExpr expr) Adds the given expression to the current assertion-stack frame.AbstractSolver.check_sat()ISolver.check_sat()Checks whether the current assertion set is satisfiable under the current logic.AbstractSolver.check_sat_assuming(IExpr... exprs) ISolver.check_sat_assuming(IExpr... exprs) Checks satisfiability under the current assertion set plus the given propositional assumptions.protected IResponseAbstractSolver.checkImmediateExit(IResponse result) Called with each response parsed from the solver.AbstractSolver.checkPrintSuccess(SMT.Configuration smtConfig, IExpr.IKeyword key, IAttributeValue value) Answers a set-option of :print-success locally (it is never sent), else returns nullAbstractSolver.checkSatStatus()ISolver.checkSatStatus()Returns the result of the most recent check-sat or check-sat-assuming, or null if none has been issued since the last push/pop/assert/declare/define.protected IResponseAbstractSolver.checkShape(AbstractSolver.Shape shape, String sent, String text, IResponse r) r, if it has the given shape; else the error for a response out of step with the command sent, whose raw response was textprotected IResponseAbstractSolver.checkStatus()The response to the most recent check command, or null if there is none or the solver has accepted a command that changes the assertion stack since (after reading the responses to the pipelined commands): sat or unknown in SMT-LIB's sat mode, unsat in its unsat modeIResponse.IFactory.continued_execution()AbstractSolver.declare_const(ICommand.Ideclare_const cmd) ISolver.declare_const(ICommand.Ideclare_const cmd) Declares a new uninterpreted constant; returns success or an SMT error responseAbstractSolver.declare_datatype(ICommand.Ideclare_datatype cmd) ISolver.declare_datatype(ICommand.Ideclare_datatype cmd) Declares a new datatype sort; returns success or an SMT error responseAbstractSolver.declare_datatypes(ICommand.Ideclare_datatypes cmd) ISolver.declare_datatypes(ICommand.Ideclare_datatypes cmd) Declares mutually recursive datatype sorts; returns success or an SMT error responseAbstractSolver.declare_fun(ICommand.Ideclare_fun cmd) ISolver.declare_fun(ICommand.Ideclare_fun cmd) Declares a new uninterpreted function (or constant); returns success or an SMT error responseAbstractSolver.declare_sort(ICommand.Ideclare_sort cmd) ISolver.declare_sort(ICommand.Ideclare_sort cmd) Declares a new uninterpreted sort; returns success or an SMT error responseAbstractSolver.declare_sort_parameter(ICommand.Ideclare_sort_parameter cmd) ISolver.declare_sort_parameter(ICommand.Ideclare_sort_parameter cmd) Declares a new sort parameter (polymorphic sort variable); returns success or an SMT error responseAbstractSolver.define_const(ICommand.Idefine_const cmd) ISolver.define_const(ICommand.Idefine_const cmd) Defines a named constant — syntactic sugar fordefine-funwith no parameters; returns success or an SMT error responseAbstractSolver.define_fun(ICommand.Idefine_fun cmd) ISolver.define_fun(ICommand.Idefine_fun cmd) Defines a named function or constant; returns success or an SMT error responseAbstractSolver.define_fun_rec(ICommand.Idefine_fun_rec cmd) ISolver.define_fun_rec(ICommand.Idefine_fun_rec cmd) Defines a named recursive function; returns success or an SMT error responseAbstractSolver.define_funs_rec(ICommand.Idefine_funs_rec cmd) ISolver.define_funs_rec(ICommand.Idefine_funs_rec cmd) Defines a group of mutually recursive functions; returns success or an SMT error responseAbstractSolver.define_sort(ICommand.Idefine_sort cmd) ISolver.define_sort(ICommand.Idefine_sort cmd) Defines a sort abbreviation; returns success or an SMT error responseAbstractSolver.echo(IExpr.IStringLiteral arg) ISolver.echo(IExpr.IStringLiteral arg) Echoes the argument string back to the output channel.IResponse.IFactory.empty()Once the solver process has exited, every command but exit (and a comment, which has no response) answersAbstractSolver.exitedResponse(), including those an adapter answers itself or checks with its own queriesExecutes the command on the given solver; presumes that the command type-checked successfully.default IResponseExecutes the command on this solverAbstractSolver.executePipelined(List<ICommand> commands) Executes the commands in order, as a script does: returns the first error, or else the last command's response.AbstractSolver.exit()ISolver.exit()Terminates the solver; no further commands are permitted.AbstractSolver.exitedResponse()The response to any command once the solver process has exited: timeout if its whole-run time limit ended it, else the errorAbstractSolver.SOLVER_EXITED; null while the process runs (or has not been started)AbstractSolver.get_assertions()ISolver.get_assertions()Returns the list of formulae in the current assertion set, in the order they were asserted.AbstractSolver.get_assignment()ISolver.get_assignment()Returns the truth-value assignments for all named Boolean formulae in the current model.AbstractSolver.get_info(IExpr.IKeyword option) ISolver.get_info(IExpr.IKeyword option) Returns the value of the named info item.AbstractSolver.get_model()ISolver.get_model()Returns a satisfying model for the current assertion set.AbstractSolver.get_option(IExpr.IKeyword option) ISolver.get_option(IExpr.IKeyword option) Returns the current value of the named option.IResponse.IFactory.get_option_response(IAttributeValue v) AbstractSolver.get_proof()ISolver.get_proof()Returns a proof of unsatisfiability for the current assertion set.AbstractSolver.get_unsat_assumptions()ISolver.get_unsat_assumptions()Returns the subset of check-sat-assuming assumptions that caused the result to be unsat.AbstractSolver.get_unsat_core()ISolver.get_unsat_core()Returns the named formulae that form an unsatisfiable core of the current assertion set.Returns the values of the given expressions in the current satisfying model.IResponse.IFactory.immediate_exit()IResponse.IFactory.incomplete()Utils.loadLogic(String logicName, SymbolTable symTable, IPos pos) Finds and loads a logic into the given symbol tableUtils.loadLogic(ILogic logicExpr, SymbolTable symTable) Utils.loadTheory(String theoryName, SymbolTable symTable) Loads a theory into the given symbol table.Utils.loadTheory(ITheory theory, SymbolTable symTable) IResponse.IFactory.memout()protected IResponseAbstractSolver.modelResponse(IResponse r) The get-model response r, without the leading symbolmodelif it has one: z3 4.3 to 4.7 and yices2 2.6.5 (with --smt2-model-format) answer(model (define-fun ...) ...), where SMT-LIB has the plain list((define-fun ...) ...).IResponse.IFactory.numericLiteral(int value) protected IResponseAbstractSolver.parseResponse(String response) Parses the solver's raw response text.AbstractSolver.pop(int number) ISolver.pop(int number) Removes the given number of assertion-stack frames from the solver state.protected IResponseAbstractSolver.proofResponse(IResponse r) Wraps a parsed get-proof answer as an IProofResponse; anything else (an error, unsupported) is returned unchanged.AbstractSolver.push(int number) ISolver.push(int number) Adds the given number of empty assertion-stack frames to the solver state.protected IResponseAbstractSolver.recordChange(AbstractSolver.StackChange kind, IResponse response) Records the response to a command of the given kind that changes the assertion stack, and returns it.protected IResponseAbstractSolver.requireNoChangeSinceCheck(String commandName, Set<AbstractSolver.StackChange> answeredAfter) Returns an error response if, since a check command, the solver has accepted a command of one of the given kinds (after which the solver wrongly keeps answering the get- commands about that check, which SMT-LIB's assert mode makes errors), else nullprotected IResponseAbstractSolver.requireOptionEnabled(String commandName, String option) Returns an error response if the given option has not been enabled (perAbstractSolver.get_option(IKeyword)), else null.protected IResponseAbstractSolver.requireSatOrUnknown(String commandName) Returns an error response unlessAbstractSolver.checkStatus()is sat or unknown, else null.protected IResponseAbstractSolver.requireUnsat(String commandName, String afterWhat) Returns an error response unlessAbstractSolver.checkStatus()is unsat, else null.AbstractSolver.reset()ISolver.reset()Resets the solver to the initial state, clearing all assertions, declarations, and options.AbstractSolver.reset_assertions()ISolver.reset_assertions()Removes asserted formulae (but not global declarations when :global-declarations is true).AbstractSolver.Pending.response()The response read for the command, or null if not yet readIResponse.IFactory.sat()protected IResponseAbstractSolver.sendChange(AbstractSolver.StackChange kind, ICommand cmd) Sends a command that changes the assertion stack, recording it (see recordChange)protected IResponseAbstractSolver.sendCommand(ICommand cmd) Translates the given command and sends it to the solver process, returning the parsed response.protected IResponseAbstractSolver.sendExitCommand()Sends the exit command, tolerating the solver producing literally no response (SolverProcess.NoResponseException) as a benign, expected outcome rather than an error -- many solvers legitimately print nothing before terminating in response to exit.protected IResponseAbstractSolver.sendFailure(Exception e, IResponse otherwise) The response to a command whose sending failed with e: if the solver process has exited (waiting briefly for that), timeout if its whole-run time limit ended it, else the errorAbstractSolver.SOLVER_EXITED; otherwise otherwiseprotected IResponseAbstractSolver.sendFailure(String text, Exception e) AsAbstractSolver.sendFailure(Exception, IResponse), with an error giving text and e otherwiseAbstractSolver.sendPipelined(ICommand cmd) Executes a command for whichAbstractSolver.pipelines(ICommand)is true, sending it to the solver without waiting for the response.protected IResponseAbstractSolver.sendSeed()Passes --seed, if given, as the standard :random-seed option, for an adapter whose solver uses that option; called from start(), while :print-success is true.AbstractSolver.set_info(IExpr.IKeyword key, IAttributeValue value) ISolver.set_info(IExpr.IKeyword key, IAttributeValue value) Annotates the problem with an info attribute (e.g.A set-logic the solver accepts ends sat or unsat mode; one it rejects (as SMT-LIB requires outside start mode) changes nothing.Sets the logic the solver should use.AbstractSolver.set_option(IExpr.IKeyword key, IAttributeValue value) ISolver.set_option(IExpr.IKeyword option, IAttributeValue value) Sets an SMT-LIB option.protected IResponseAbstractSolver.set_option_impl(IExpr.IKeyword key, IAttributeValue value) Override in subclasses to handle solver-specific options.AbstractSolver.start()ISolver.start()Starts the solver; this is not an SMT-LIB command, but it is convenient in some implementations to separate the starting and initialization from the construction of the solver instance.IResponse.IFactory.stringLiteral(String value) The argument has no SMT-LIB escapes and no enclosing quotesIResponse.IFactory.success()AbstractSolver.successOrEmpty(SMT.Configuration smtConfig) protected IResponseAbstractSolver.timeLimitResponse(String rawResponse) Returns responseFactory.timeout(), recording that the solver has ended, if the raw response reports that the solver's whole-run time limit ended it; otherwise null.protected IResponseAbstractSolver.timeLimitResponseAfterExit()For when a send has found the solver process gone: the timeout response if the process left this solver's report that its whole-run time limit ended it unread (that limit runs on the wall clock, so it can end the solver between commands, and its report then answers no command), or if it ended once that limit had passed; otherwise nullIResponse.IFactory.timeout()The response when the solver's whole-run time limit (SMT.Configuration#timeoutTotal) ended it, normalized across solvers (z3 answers 'timeout' and exits; cvc5 reports the timeout on stderr and aborts); every later command to that solver gets the same response.IResponse.IFactory.unknown()IResponse.IFactory.unsat()IResponse.IFactory.unsupported()Methods in org.smtlib that return types with arguments of type IResponseModifier and TypeMethodDescriptionTypeChecker.check(SymbolTable symTable, IExpr expr) The main entry point for type-checking an IExpr (expected to be a Bool)TypeChecker.checkAssertion(SymbolTable symTable, IExpr expr) The main entry point for type-checking an assert expression (expected to be a Bool); unlikeTypeChecker.check(SymbolTable,IExpr), this checks the expression within a pushed scope that is merged into the enclosing scope on success (or popped on error).TypeChecker.checkFcn(SymbolTable symTable, IExpr.IIdentifier id, List<IExpr.IDeclaration> params, ISort result, IExpr expr) TypeChecker.checkFcn(SymbolTable symTable, IExpr.IIdentifier id, List<ISort> sorts, ISort result, IPos pos) TypeChecker.checkFcnRec(SymbolTable symTable, boolean global, IExpr.ISymbol id, List<IExpr.IDeclaration> params, ISort result, IExpr expr) Type-checks a define-fun-rec command: verifies the symbol is new, validates sorts, pre-adds the function to the symbol table so the body may call it recursively, then checks the body expression.TypeChecker.checkFcnsRec(SymbolTable symTable, boolean global, List<IExpr.IFunctionDeclaration> decls, List<IExpr> bodies) Type-checks a define-funs-rec command: for each declaration verifies the symbol is new and sorts are valid, pre-adds all functions to the symbol table for mutual recursion, then checks each body expression.TypeChecker.checkSortAbbreviation(SymbolTable symTable, IExpr.IIdentifier id, List<ISort.IParameter> params, ISort expr) TypeChecker.checkTerm(SymbolTable symTable, IExpr expr) Type-checks a term of any sort (e.g.TypeChecker.validate(SMT.Configuration smtConfig, ICommand cmd) Validates non-syntactic well-formedness of a command (user IDs, duplicate names, list sizes).TypeChecker.validateDatatypeNames(SymbolTable symTable, SMT.Configuration smtConfig, List<IExpr.ISortDeclaration> sortDecls, List<ISort.IDatatype> datatypes) Checks that constructor and selector names introduced by a datatype group are not already defined (neither in the symbol table nor duplicated within the group).Methods in org.smtlib with parameters of type IResponseModifier and TypeMethodDescriptionprotected IResponseAbstractSolver.checkImmediateExit(IResponse result) Called with each response parsed from the solver.protected IResponseAbstractSolver.checkShape(AbstractSolver.Shape shape, String sent, String text, IResponse r) r, if it has the given shape; else the error for a response out of step with the command sent, whose raw response was textprotected booleanAbstractSolver.errorStopsSolver(IResponse error) Whether, after the given error response, the solver stops processing input (whether or not its process actually exits).voidCalled when a response is logged to the normal output (it is expected that a line termination will be added); the argument is converted to text using the defaultPrinter in the smt configuration.voidPrints the argument on the regular output stream and to any listenersvoidWrites the given response to the out stream, adding line terminationprotected IResponseAbstractSolver.modelResponse(IResponse r) The get-model response r, without the leading symbolmodelif it has one: z3 4.3 to 4.7 and yices2 2.6.5 (with --smt2-model-format) answer(model (define-fun ...) ...), where SMT-LIB has the plain list((define-fun ...) ...).protected IResponseAbstractSolver.proofResponse(IResponse r) Wraps a parsed get-proof answer as an IProofResponse; anything else (an error, unsupported) is returned unchanged.protected IResponseAbstractSolver.recordChange(AbstractSolver.StackChange kind, IResponse response) Records the response to a command of the given kind that changes the assertion stack, and returns it.protected IResponseAbstractSolver.sendFailure(Exception e, IResponse otherwise) The response to a command whose sending failed with e: if the solver process has exited (waiting briefly for that), timeout if its whole-run time limit ended it, else the errorAbstractSolver.SOLVER_EXITED; otherwise otherwise -
Uses of IResponse in org.smtlib.command
Methods in org.smtlib.command that return IResponseModifier and TypeMethodDescription -
Uses of IResponse in org.smtlib.ext
Methods in org.smtlib.ext that return IResponse -
Uses of IResponse in org.smtlib.impl
Classes in org.smtlib.impl that implement IResponseModifier and TypeClassDescriptionstatic classA Printable that also implements IExpr, additionally holding the sort computed for the expression by the type checker (null if not yet, or never, computed).static classImplements the IResponse.IAssertionsResponse interfacestatic classImplements the IResponse.IAssignmentResponse interfacestatic classImplements the IResponse.IError interfacestatic classImplements the IResponse.IProofResponse interfacestatic classImplementation of IAttributeList: a list of attributes returned by get-info.static classImplements the IResponse.IUnsatAssumptionsResponse interfacestatic classImplements the IResponse.IUnsatCoreResponse interfacestatic classImplements the IResponse.IValueResponse interfaceclassThis class defines a number of subclasses that implement the SMT-LIB abstract AST; they are used by commands and expressions.static classThis class represents an SMT as-identifier ASTstatic classSMTExpr.Attribute<TT extends IAttributeValue>Represents an SMT-LIB attribute: a keyword optionally paired with a value.static classRepresents an SMT-LIB attributed expression ((! expr attrs...)).static classRepresents an SMT-LIB binary literal (e.g.static classThis class represents an SMT Decimal literal expression or syntax tokenstatic classRepresents an expression-level error node inserted during parsing to allow error recovery.static classRepresents an SMT-LIB existential quantifier expression.static classRepresents a function-application expression: a qualified identifier applied to a list of argument expressions.static classRepresents an SMT-LIB universal quantifier expression.static classRepresents an SMT-LIB hex literal (e.g.static classRepresents an SMT-LIB lambda expression (SMT-LIB 2.7ff, HO-Core theory).static classRepresents an SMT-LIB let expression: a list of bindings and a body expression.static classAbstract base class for all literal value AST nodes; holds the typed value and provides a shared implementation.static classRepresents an SMT-LIB 2.7 match expression: an expression matched against a list of cases.static classThis class represents an SMT Numeral expression or syntax tokenstatic classThis class represents an SMT parameterized-identifier AST (e.g.static classRepresents the value of a:patternattribute: a list of trigger terms.static classThis class represents an SMT String literal expression or syntax tokenstatic classThis class represents an SMT SymbolMethods in org.smtlib.impl that return IResponseModifier and TypeMethodDescriptionResponse.Factory.continued_execution()Response.Factory.empty()Executes the current listResponse.Factory.get_option_response(IAttributeValue v) Response.Factory.immediate_exit()Response.Factory.incomplete()Response.Factory.memout()Response.Factory.sat()Response.Factory.success()Response.Factory.timeout()Response.Factory.unknown()Response.Factory.unsat()Response.Factory.unsupported() -
Uses of IResponse in org.smtlib.sexpr
Subinterfaces of IResponse in org.smtlib.sexprModifier and TypeInterfaceDescriptioninterfaceThis interface represents S-expressions as used in SMT-LIB; they are used as values for attributes in the standard concrete syntax.static interfaceRepresents a sequence of S-expressionsstatic interfaceRepresents a single S-expression tokenClasses in org.smtlib.sexpr that implement IResponseModifier and TypeClassDescriptionclassThis is the root class for S-expressions in the concrete syntaxstatic classThe class corresponding to sequences of S-expressionsstatic classSexpr.Token<T>Represents a single S-expression token with intrinsic type TMethods in org.smtlib.sexpr that return IResponseMethods in org.smtlib.sexpr with parameters of type IResponse -
Uses of IResponse in org.smtlib.solvers
Fields in org.smtlib.solvers declared as IResponseModifier and TypeFieldDescriptionprotected IResponseSolver_test.checkSatStatusInternal state variable - set to sat, unsat, unknown when check-sat is run and then to null whenever an additional push, pop, assert, declare- or define- command is executed.Methods in org.smtlib.solvers that return IResponseModifier and TypeMethodDescriptionSolver_bitwuzla.assertExpr(IExpr sexpr) Solver_simplify.assertExpr(IExpr expr) Solver_test.assertExpr(IExpr expr) Solver_z3_4_3.assertExpr(IExpr sexpr) Solver_bitwuzla.check_sat()Solver_simplify.check_sat()Solver_test.check_sat()Solver_z3_4_3.check_sat()Solver_z3_recent.check_sat()Solver_bitwuzla.check_sat_assuming(IExpr... exprs) Solver_simplify.check_sat_assuming(IExpr... exprs) check-sat-assuming postdates Simplify by well over a decade (added in SMT-LIB 2.6; Simplify's protocol has no concept of it), and this class has no override for it -- without one, it silently inheritsSolver_test's stub (this class's superclass, the type-check-only pseudo-solver), which never talks to the real Simplify process at all and just echoes back whatever :status a script happened to declare (or "unknown" if none), regardless of whether the assumed literals are actually satisfiable.Solver_test.check_sat_assuming(IExpr... exprs) Solver_z3_4_3.check_sat_assuming(IExpr... exprs) z3 4.3 answers unsupported for check-sat-assuming, so it is sent as z3's legacy (check-sat a1 ...Solver_z3_recent.check_sat_assuming(IExpr... exprs) Solver_test.checkSatStatus()Solver_simplify.declare_const(ICommand.Ideclare_const cmd) Solver_test.declare_const(ICommand.Ideclare_const cmd) Solver_z3_4_3.declare_const(ICommand.Ideclare_const cmd) Solver_bitwuzla.declare_datatype(ICommand.Ideclare_datatype cmd) Not sent: Bitwuzla exits on it (see above)Solver_simplify.declare_datatype(ICommand.Ideclare_datatype cmd) Datatypes postdate Simplify (added in SMT-LIB 2.6) and its untyped translation (see the class javadoc: "Simplify has no type definitions") has no way to express a datatype's constructors/selectors.Solver_test.declare_datatype(ICommand.Ideclare_datatype cmd) Solver_bitwuzla.declare_datatypes(ICommand.Ideclare_datatypes cmd) Not sent: Bitwuzla exits on it (see above)Solver_simplify.declare_datatypes(ICommand.Ideclare_datatypes cmd) Solver_test.declare_datatypes(ICommand.Ideclare_datatypes cmd) Solver_simplify.declare_fun(ICommand.Ideclare_fun cmd) Solver_test.declare_fun(ICommand.Ideclare_fun cmd) Solver_z3_4_3.declare_fun(ICommand.Ideclare_fun cmd) Solver_simplify.declare_sort(ICommand.Ideclare_sort cmd) Solver_test.declare_sort(ICommand.Ideclare_sort cmd) Solver_z3_4_3.declare_sort(ICommand.Ideclare_sort cmd) Solver_bitwuzla.declare_sort_parameter(ICommand.Ideclare_sort_parameter cmd) Not sent: Bitwuzla exits on it (see above)Solver_simplify.declare_sort_parameter(ICommand.Ideclare_sort_parameter cmd) Solver_test.declare_sort_parameter(ICommand.Ideclare_sort_parameter cmd) Solver_simplify.define_const(ICommand.Idefine_const cmd) Solver_test.define_const(ICommand.Idefine_const cmd) Solver_simplify.define_fun(ICommand.Idefine_fun cmd) Solver_test.define_fun(ICommand.Idefine_fun cmd) Solver_z3_4_3.define_fun(ICommand.Idefine_fun cmd) Solver_bitwuzla.define_fun_rec(ICommand.Idefine_fun_rec cmd) Not sent: Bitwuzla exits on it (see above)Solver_simplify.define_fun_rec(ICommand.Idefine_fun_rec cmd) Recursive function definitions postdate Simplify (added in SMT-LIB 2.6) and its axiom-based translation (seeSolver_simplify.define_fun(org.smtlib.ICommand.Idefine_fun)/Solver_simplify.declare_fun(org.smtlib.ICommand.Ideclare_fun)) has no way to express recursion.Solver_test.define_fun_rec(ICommand.Idefine_fun_rec cmd) Solver_bitwuzla.define_funs_rec(ICommand.Idefine_funs_rec cmd) Not sent: Bitwuzla exits on it (see above)Solver_simplify.define_funs_rec(ICommand.Idefine_funs_rec cmd) Solver_test.define_funs_rec(ICommand.Idefine_funs_rec cmd) Solver_simplify.define_sort(ICommand.Idefine_sort cmd) Solver_test.define_sort(ICommand.Idefine_sort cmd) Solver_z3_4_3.define_sort(ICommand.Idefine_sort cmd) Solver_simplify.echo(IExpr.IStringLiteral arg) Solver_test.echo(IExpr.IStringLiteral arg) Solver_yices2.echo(IExpr.IStringLiteral arg) yices2 writes echo's text unquoted, so where it ends cannot be found (#136); the response to echo is its argumentSolver_z3_4_3.echo(IExpr.IStringLiteral arg) z3 4.3 writes echo's text unquoted, so where it ends cannot be found (#136); the response to echo is its argumentSolver_z3_4_5.echo(IExpr.IStringLiteral arg) Once exited, every command but exit (and a comment) answers as a process-based solver's wouldSolver_altergo.exit()Alt-Ergo is silent for exit, as for any successful command, but no echo can follow it, since the process ends; so success is answered once the process has ended.Solver_simplify.exit()Solver_test.exit()Solver_z3_4_3.exit()Solver_altergo.get_assertions()Alt-Ergo ignores get-assertions, writing nothing; answered unsupported without sending itSolver_bitwuzla.get_assertions()SeeSolver_bitwuzla.get_proof(): Bitwuzla rejects get-assertions the same way.Solver_cvc5.get_assertions()cvc5 answers get-assertions with :produce-assertions offSolver_simplify.get_assertions()Solver_test.get_assertions()Solver_z3_4_3.get_assertions()Not a correction: this adapter sends commands by its own means (z3 4.3 itself reports get-assertions without :produce-assertions, which set_option_impl sends as :interactive-mode)Solver_altergo.get_assignment()Alt-Ergo answers get-assignment in assert mode after a check.Solver_bitwuzla.get_assignment()SeeSolver_bitwuzla.get_proof(): Bitwuzla rejects get-assignment the same way.Solver_cvc5.get_assignment()cvc5 answers get-assignment with :produce-assignments off (if :produce-models is on), and in assert mode after a checkSolver_simplify.get_assignment()Solver_smtinterpol.get_assignment()SMTInterpol answers get-assignment after unsat, and in assert mode after a checkSolver_test.get_assignment()Solver_yices2.get_assignment()yices2 answers get-assignment with :produce-assignments off, and in assert mode after a checkSolver_z3_4_3.get_assignment()z3 4.3 answers get-assignment (with ()) when :produce-assignments is not enabled, which SMT-LIB makes an errorSolver_z3_recent.get_assignment()z3 answers get-assignment with :produce-assignments off, and in assert mode after a checkSolver_bitwuzla.get_info(IExpr.IKeyword key) Answered entirely client-side (never forwarded -- see class comment point 1).Solver_simplify.get_info(IExpr.IKeyword key) Simplify has no get-info; answered hereSolver_test.get_info(IExpr.IKeyword key) Solver_yices2.get_info(IExpr.IKeyword key) yices2 answers get-info :status with the last set-info :status value, but with (error "no info for :status") when none was set; SMT-LIB requires unsupported for a flag the solver does not support.Solver_z3_4_3.get_info(IExpr.IKeyword key) Not a correction: this adapter sends commands by its own means, so it scrubs run-dependent values for testing itself, as AbstractSolver.get_info doesSolver_z3_recent.get_info(IExpr.IKeyword key) z3 reports a query stopped by its per-query time limit, -t:, with :reason-unknown "canceled" in incremental mode (after a push; checked with z3 4.16.0 and 5.1.0, while 4.8.12 and 4.12.6 give up first, as incomplete), and in every mode in 4.6 and 4.7; one-shot queries in newer versions, and other solvers such as cvc5, report "timeout".Solver_altergo.get_model()Alt-Ergo answers get-model in assert mode after a checkSolver_bitwuzla.get_model()With :produce-models on, Bitwuzla writes nothing for get-model unless its last check returned sat (and crashes if a reset came since); after an assert, push, pop or reset-assertions, or with the option set after the check, it writes an ordinary error.Solver_cvc5.get_model()cvc5 answers get-model in assert mode after a checkSolver_simplify.get_model()Solver_smtinterpol.get_model()SMTInterpol answers get-model with :produce-models off, and in assert mode after a checkSolver_test.get_model()Solver_yices2.get_model()yices2 answers get-model with :produce-models off, and in assert mode after a checkSolver_z3_4_3.get_model()The :produce-models check corrects z3 4.3 answering get-model with that option at its (non-standard) default of true; z3 4.3 itself reports get-model when no model is availableSolver_z3_recent.get_model()z3 answers get-model in assert mode after a checkSolver_altergo.get_option(IExpr.IKeyword key) Alt-Ergo ignores get-option, writing nothing; answered from the values set (see set_option_impl) and the SMT-LIB defaultsSolver_bitwuzla.get_option(IExpr.IKeyword key) Answered entirely client-side (never forwarded -- see class comment point 1): from whatever this run has set viaSolver_bitwuzla.set_option_impl(org.smtlib.IExpr.IKeyword, org.smtlib.IAttributeValue), falling back to the standard SMT-LIB default for any option never set, and "unsupported" for anything not a recognized standard option at all (matching what a compliant solver would say about an option it doesn't have).Solver_cvc5.get_option(IExpr.IKeyword option) See the class Javadoc: wraps a bare-symbol answer for a string-typed option (Utils.stringOptions -- currently just :regular-output-channel and :diagnostic-output-channel) into a proper SMT-LIB string literal with the same text, working around cvc5 answering those two with an unquoted symbol instead.Solver_simplify.get_option(IExpr.IKeyword key) Simplify has no get-option; answered from the values kept by set_optionSolver_test.get_option(IExpr.IKeyword key) Solver_z3_4_3.get_option(IExpr.IKeyword key) Sent to the solver, except where z3 4.3's answer does not conform: it defaults :produce-models to true (SMT-LIB: false), writes the channel names unquoted, knows :produce-assertions only as :interactive-mode (see set_option_impl), and answers unsupported, not the default value, for a standard option it lacksSolver_altergo.get_proof()Alt-Ergo writes nothing for get-proof (it ignores it); answered unsupported without sending itSolver_bitwuzla.get_proof()Bitwuzla rejects get-proof as an unsupported command and exits (class comment point 1); a conforming solver without proofs answers unsupported.Solver_cvc5.get_proof()cvc5 answers get-proof in assert mode after a checkSolver_simplify.get_proof()Solver_smtinterpol.get_proof()SMTInterpol answers get-proof after sat, and in assert mode after a checkSolver_test.get_proof()Solver_z3_4_3.get_proof()z3 4.3 itself reports get-proof without :produce-proofs or when no proof is available; the checks here only give the same messages as the other adaptersSolver_z3_recent.get_proof()z3 answers get-proof in assert mode after a checkSolver_altergo.get_unsat_assumptions()Alt-Ergo ignores get-unsat-assumptions, writing nothing; answered unsupported without sending itSolver_bitwuzla.get_unsat_assumptions()Bitwuzla writes nothing for get-unsat-assumptions unless its last check returned unsat; then it writes a fragment and an error if the option is off or was set after the check, or an assert, push, pop, reset-assertions or reset came since.Solver_cvc5.get_unsat_assumptions()cvc5 aborts on get-unsat-assumptions in assert mode after a checkSolver_simplify.get_unsat_assumptions()Solver_smtinterpol.get_unsat_assumptions()SMTInterpol answers get-unsat-assumptions in assert mode after a checkSolver_test.get_unsat_assumptions()Solver_yices2.get_unsat_assumptions()yices2 answers get-unsat-assumptions, wrongly, in assert mode after a checkSolver_z3_recent.get_unsat_assumptions()z3 answers get-unsat-assumptions in assert mode after a checkSolver_altergo.get_unsat_core()Alt-Ergo ignores get-unsat-core, writing nothing (with --sat-solver Tableaux it writes a non-SMT-LIB core after check-sat instead); answered unsupported without sending itSolver_bitwuzla.get_unsat_core()With :produce-unsat-cores on, Bitwuzla writes nothing for get-unsat-core unless its last check returned unsat, and a fragment and an error if an assert, push, pop, reset-assertions or reset came since or the option was set after the check.Solver_cvc5.get_unsat_core()cvc5 answers get-unsat-core in assert mode after a checkSolver_simplify.get_unsat_core()Solver_smtinterpol.get_unsat_core()SMTInterpol answers get-unsat-core in assert mode after a checkSolver_test.get_unsat_core()Solver_yices2.get_unsat_core()yices2 answers get-unsat-core in assert mode after a checkSolver_z3_4_3.get_unsat_core()z3 4.3 itself reports get-unsat-core without :produce-unsat-cores or when no core is available; the checks here only give the same messages as the other adaptersSolver_z3_recent.get_unsat_core()z3 answers get-unsat-core in assert mode after a checkAlt-Ergo ignores get-value, writing nothing; answered unsupported without sending itWith :produce-models on, Bitwuzla writes nothing for get-value unless its last check returned sat, and a fragment and an error if an assert, push, pop or reset-assertions came since or the option was set after the check.cvc5 answers get-value in assert mode after a checkSMTInterpol answers get-value with :produce-models off, and in assert mode after a checkyices2 answers get-value with :produce-models off, and in assert mode after a checkSee get_model: z3 4.3 defaults :produce-models to truez3 answers get-value in assert mode after a checkprotected IResponseSolver_bitwuzla.parseResponse(String response) protected IResponseSolver_z3_4_3.parseResponse(String response) Every command this adapter sends directly to the process ends here, so the solver's report that its whole-run limit ended it is recognized for all of them (see AbstractSolver#timeLimitResponse).Solver_bitwuzla.pop(int number) Solver_simplify.pop(int number) Solver_test.pop(int number) Solver_z3_4_3.pop(int number) Solver_bitwuzla.push(int number) Solver_simplify.push(int number) Solver_test.push(int number) Solver_z3_4_3.push(int number) Solver_bitwuzla.reset()Bitwuzla's reset restores its option defaults, so the values get_option answers from are dropped too (except the output channels, which are jSMTLIB's own and stay redirected).Solver_cvc5.reset()Solver_simplify.reset()Transplanted fromSolver_test.reset(): this class has no real process operation to ask for a reset (Simplify's protocol has no such concept), so this remains an entirely local, client-side reset exactly as it was as an inherited Solver_test method -- it does not, and did not before this restructuring, reset any BG_PUSH state already accumulated in the real Simplify process itself.Solver_test.reset()Solver_z3_4_3.reset()Solver_z3_recent.reset()Solver_altergo.reset_assertions()Alt-Ergo ignores reset-assertions, writing nothing and keeping the assertions; answered unsupported without sending itSolver_bitwuzla.reset_assertions()Solver_simplify.reset_assertions()Transplanted fromSolver_test.reset_assertions().Solver_test.reset_assertions()Solver_z3_4_3.reset_assertions()z3-4.3 predates reset-assertions (added in SMT-LIB 2.5), and turns out to already handle that gracefully on its own: sent the literal, unrecognized command text, its SMT2 front-end replies with the literal token "unsupported" -- confirmed directly against a real z3-4.3.1 binary -- rather than erroring or crashing.Solver_z3_4_3.sendCommand(String cmd) Solver_z3_4_3.sendCommand(ICommand cmd) Solver_simplify.set_info(IExpr.IKeyword key, IAttributeValue value) Solver_test.set_info(IExpr.IKeyword key, IAttributeValue value) Bitwuzla (0.9.1) accepts a second set-logic, which SMT-LIB forbids outside start mode, so that is reported here (--relax allows it).Solver_simplify.set_option(IExpr.IKeyword option, IAttributeValue value) Simplify has no set-option; options are kept here, and the :produce- options answer unsupported since Simplify cannot produce models, proofs or coresSolver_test.set_option(IExpr.IKeyword key, IAttributeValue value) protected IResponseSolver_altergo.set_option_impl(IExpr.IKeyword key, IAttributeValue value) Sent to Alt-Ergo, and kept here for get_option when Alt-Ergo accepts itprotected IResponseSolver_bitwuzla.set_option_impl(IExpr.IKeyword key, IAttributeValue value) Sent to bitwuzla, and also kept here for get_option, which bitwuzla does not supportprotected IResponseSolver_cvc5.set_option_impl(IExpr.IKeyword key, IAttributeValue value) protected IResponseSolver_z3_4_3_2.set_option_impl(IExpr.IKeyword key, IAttributeValue value) Corrects a non-conformance of z3 4.3.2: set-option of an option it does not know answers an error,(error "line L column C: unknown parameter 'foo'\nLegal parameters are:\n ..."), which names the option and then lists every parameter of its module, one per line.protected IResponseSolver_z3_4_3.set_option_impl(IExpr.IKeyword key, IAttributeValue value) z3 4.3 accepts :interactive-mode, :produce-assertions and the other :produce- options after set-logic, which SMT-LIB forbids, so that is reported here; values are kept here for get_option.Solver_altergo.start()Solver_bitwuzla.start()Solver_cvc5.start()Solver_simplify.start()Solver_smt.start()Solver_smtinterpol.start()Solver_test.start()Solver_yices2.start()Solver_z3_4_3.start()Solver_z3_recent.start()Methods in org.smtlib.solvers with parameters of type IResponseModifier and TypeMethodDescriptionprotected booleanSolver_cvc5.errorStopsSolver(IResponse error) cvc5 carries on after most errors (e.g.