mirror of
https://github.com/Z3Prover/z3
synced 2025-04-26 02:25:32 +00:00
merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
commit
c513f3ca09
883 changed files with 13979 additions and 16480 deletions
|
@ -934,7 +934,7 @@ public class Context implements AutoCloseable {
|
|||
* exposed. It follows the semantics prescribed by the SMT-LIB standard.
|
||||
*
|
||||
* You can take the floor of a real by creating an auxiliary integer Term
|
||||
* {@code k} and and asserting
|
||||
* {@code k} and asserting
|
||||
* {@code MakeInt2Real(k) <= t1 < MkInt2Real(k)+1}. The argument
|
||||
* must be of integer sort.
|
||||
**/
|
||||
|
@ -1978,7 +1978,7 @@ public class Context implements AutoCloseable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Concatentate sequences.
|
||||
* Concatenate sequences.
|
||||
*/
|
||||
public SeqExpr mkConcat(SeqExpr... t)
|
||||
{
|
||||
|
@ -2234,7 +2234,7 @@ public class Context implements AutoCloseable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Create a Term of a given sort. This function can be use to create
|
||||
* Create a Term of a given sort. This function can be used to create
|
||||
* numerals that fit in a machine integer. It is slightly faster than
|
||||
* {@code MakeNumeral} since it is not necessary to parse a string.
|
||||
*
|
||||
|
@ -2250,7 +2250,7 @@ public class Context implements AutoCloseable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Create a Term of a given sort. This function can be use to create
|
||||
* Create a Term of a given sort. This function can be used to create
|
||||
* numerals that fit in a machine integer. It is slightly faster than
|
||||
* {@code MakeNumeral} since it is not necessary to parse a string.
|
||||
*
|
||||
|
@ -2438,7 +2438,7 @@ public class Context implements AutoCloseable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates an existential quantifier using de-Brujin indexed variables.
|
||||
* Creates an existential quantifier using de-Bruijn indexed variables.
|
||||
* @see #mkForall(Sort[],Symbol[],Expr,int,Pattern[],Expr[],Symbol,Symbol)
|
||||
**/
|
||||
public Quantifier mkExists(Sort[] sorts, Symbol[] names, Expr body,
|
||||
|
@ -2540,156 +2540,24 @@ public class Context implements AutoCloseable {
|
|||
AST.arrayToNative(assumptions), formula.getNativeObject());
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the given string using the SMT-LIB parser.
|
||||
* Remarks: The symbol
|
||||
* table of the parser can be initialized using the given sorts and
|
||||
* declarations. The symbols in the arrays {@code sortNames} and
|
||||
* {@code declNames} don't need to match the names of the sorts
|
||||
* and declarations in the arrays {@code sorts} and {@code decls}. This is a useful feature since we can use arbitrary names
|
||||
* to reference sorts and declarations.
|
||||
**/
|
||||
public void parseSMTLIBString(String str, Symbol[] sortNames, Sort[] sorts,
|
||||
Symbol[] declNames, FuncDecl[] decls)
|
||||
{
|
||||
int csn = Symbol.arrayLength(sortNames);
|
||||
int cs = Sort.arrayLength(sorts);
|
||||
int cdn = Symbol.arrayLength(declNames);
|
||||
int cd = AST.arrayLength(decls);
|
||||
if (csn != cs || cdn != cd)
|
||||
throw new Z3Exception("Argument size mismatch");
|
||||
Native.parseSmtlibString(nCtx(), str, AST.arrayLength(sorts),
|
||||
Symbol.arrayToNative(sortNames), AST.arrayToNative(sorts),
|
||||
AST.arrayLength(decls), Symbol.arrayToNative(declNames),
|
||||
AST.arrayToNative(decls));
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the given file using the SMT-LIB parser.
|
||||
* @see #parseSMTLIBString
|
||||
**/
|
||||
public void parseSMTLIBFile(String fileName, Symbol[] sortNames,
|
||||
Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
|
||||
|
||||
{
|
||||
int csn = Symbol.arrayLength(sortNames);
|
||||
int cs = Sort.arrayLength(sorts);
|
||||
int cdn = Symbol.arrayLength(declNames);
|
||||
int cd = AST.arrayLength(decls);
|
||||
if (csn != cs || cdn != cd)
|
||||
throw new Z3Exception("Argument size mismatch");
|
||||
Native.parseSmtlibFile(nCtx(), fileName, AST.arrayLength(sorts),
|
||||
Symbol.arrayToNative(sortNames), AST.arrayToNative(sorts),
|
||||
AST.arrayLength(decls), Symbol.arrayToNative(declNames),
|
||||
AST.arrayToNative(decls));
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of SMTLIB formulas parsed by the last call to
|
||||
* {@code ParseSMTLIBString} or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public int getNumSMTLIBFormulas()
|
||||
{
|
||||
return Native.getSmtlibNumFormulas(nCtx());
|
||||
}
|
||||
|
||||
/**
|
||||
* The formulas parsed by the last call to {@code ParseSMTLIBString} or
|
||||
* {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public BoolExpr[] getSMTLIBFormulas()
|
||||
{
|
||||
|
||||
int n = getNumSMTLIBFormulas();
|
||||
BoolExpr[] res = new BoolExpr[n];
|
||||
for (int i = 0; i < n; i++)
|
||||
res[i] = (BoolExpr) Expr.create(this,
|
||||
Native.getSmtlibFormula(nCtx(), i));
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of SMTLIB assumptions parsed by the last call to
|
||||
* {@code ParseSMTLIBString} or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public int getNumSMTLIBAssumptions()
|
||||
{
|
||||
return Native.getSmtlibNumAssumptions(nCtx());
|
||||
}
|
||||
|
||||
/**
|
||||
* The assumptions parsed by the last call to {@code ParseSMTLIBString}
|
||||
* or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public BoolExpr[] getSMTLIBAssumptions()
|
||||
{
|
||||
|
||||
int n = getNumSMTLIBAssumptions();
|
||||
BoolExpr[] res = new BoolExpr[n];
|
||||
for (int i = 0; i < n; i++)
|
||||
res[i] = (BoolExpr) Expr.create(this,
|
||||
Native.getSmtlibAssumption(nCtx(), i));
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of SMTLIB declarations parsed by the last call to
|
||||
* {@code ParseSMTLIBString} or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public int getNumSMTLIBDecls()
|
||||
{
|
||||
return Native.getSmtlibNumDecls(nCtx());
|
||||
}
|
||||
|
||||
/**
|
||||
* The declarations parsed by the last call to
|
||||
* {@code ParseSMTLIBString} or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public FuncDecl[] getSMTLIBDecls()
|
||||
{
|
||||
|
||||
int n = getNumSMTLIBDecls();
|
||||
FuncDecl[] res = new FuncDecl[n];
|
||||
for (int i = 0; i < n; i++)
|
||||
res[i] = new FuncDecl(this, Native.getSmtlibDecl(nCtx(), i));
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of SMTLIB sorts parsed by the last call to
|
||||
* {@code ParseSMTLIBString} or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public int getNumSMTLIBSorts()
|
||||
{
|
||||
return Native.getSmtlibNumSorts(nCtx());
|
||||
}
|
||||
|
||||
/**
|
||||
* The declarations parsed by the last call to
|
||||
* {@code ParseSMTLIBString} or {@code ParseSMTLIBFile}.
|
||||
**/
|
||||
public Sort[] getSMTLIBSorts()
|
||||
{
|
||||
|
||||
int n = getNumSMTLIBSorts();
|
||||
Sort[] res = new Sort[n];
|
||||
for (int i = 0; i < n; i++)
|
||||
res[i] = Sort.create(this, Native.getSmtlibSort(nCtx(), i));
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the given string using the SMT-LIB2 parser.
|
||||
* @see #parseSMTLIBString
|
||||
*
|
||||
* @return A conjunction of assertions in the scope (up to push/pop) at the
|
||||
* end of the string.
|
||||
* @return A conjunction of assertions.
|
||||
*
|
||||
* If the string contains push/pop commands, the
|
||||
* set of assertions returned are the ones in the
|
||||
* last scope level.
|
||||
**/
|
||||
<<<<<<< HEAD
|
||||
public BoolExpr[] parseSMTLIB2String(String str, Symbol[] sortNames,
|
||||
Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
|
||||
|
||||
=======
|
||||
public BoolExpr parseSMTLIB2String(String str, Symbol[] sortNames,
|
||||
Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
|
||||
>>>>>>> fc719a5ee82361ffedb9ef46793e3401fdc32cc5
|
||||
{
|
||||
|
||||
int csn = Symbol.arrayLength(sortNames);
|
||||
int cs = Sort.arrayLength(sorts);
|
||||
int cdn = Symbol.arrayLength(declNames);
|
||||
|
@ -2922,7 +2790,7 @@ public class Context implements AutoCloseable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Create a tactic that fails if the goal is not triviall satisfiable (i.e.,
|
||||
* Create a tactic that fails if the goal is not trivially satisfiable (i.e.,
|
||||
* empty) or trivially unsatisfiable (i.e., contains `false').
|
||||
**/
|
||||
public Tactic failIfNotDecided()
|
||||
|
@ -3910,7 +3778,7 @@ public class Context implements AutoCloseable {
|
|||
* @param sz Size of the resulting bit-vector.
|
||||
* @param signed Indicates whether the result is a signed or unsigned bit-vector.
|
||||
* Remarks:
|
||||
* Produces a term that represents the conversion of the floating-poiunt term t into a
|
||||
* Produces a term that represents the conversion of the floating-point term t into a
|
||||
* bit-vector term of size sz in 2's complement format (signed when signed==true). If necessary,
|
||||
* the result will be rounded according to rounding mode rm.
|
||||
* @throws Z3Exception
|
||||
|
@ -3927,7 +3795,7 @@ public class Context implements AutoCloseable {
|
|||
* Conversion of a floating-point term into a real-numbered term.
|
||||
* @param t FloatingPoint term
|
||||
* Remarks:
|
||||
* Produces a term that represents the conversion of the floating-poiunt term t into a
|
||||
* Produces a term that represents the conversion of the floating-point term t into a
|
||||
* real number. Note that this type of conversion will often result in non-linear
|
||||
* constraints over real terms.
|
||||
* @throws Z3Exception
|
||||
|
@ -3943,7 +3811,7 @@ public class Context implements AutoCloseable {
|
|||
* Remarks:
|
||||
* The size of the resulting bit-vector is automatically determined. Note that
|
||||
* IEEE 754-2008 allows multiple different representations of NaN. This conversion
|
||||
* knows only one NaN and it will always produce the same bit-vector represenatation of
|
||||
* knows only one NaN and it will always produce the same bit-vector representation of
|
||||
* that NaN.
|
||||
* @throws Z3Exception
|
||||
**/
|
||||
|
|
|
@ -1398,8 +1398,7 @@ public class Expr extends AST
|
|||
/**
|
||||
* Indicates whether the term is a proof by condensed transitivity of a
|
||||
* relation
|
||||
* Remarks: Condensed transitivity proof. This proof object is
|
||||
* only used if the parameter PROOF_MODE is 1. It combines several symmetry
|
||||
* Remarks: Condensed transitivity proof. It combines several symmetry
|
||||
* and transitivity proofs. Example: T1: (R a b) T2: (R c b) T3: (R c d)
|
||||
* [trans* T1 T2 T3]: (R a d) R must be a symmetric and transitive relation.
|
||||
*
|
||||
|
@ -1421,7 +1420,7 @@ public class Expr extends AST
|
|||
* Remarks: T1:
|
||||
* (R t_1 s_1) ... Tn: (R t_n s_n) [monotonicity T1 ... Tn]: (R (f t_1 ...
|
||||
* t_n) (f s_1 ... s_n)) Remark: if t_i == s_i, then the antecedent Ti is
|
||||
* suppressed. That is, reflexivity proofs are supressed to save space.
|
||||
* suppressed. That is, reflexivity proofs are suppressed to save space.
|
||||
*
|
||||
* @throws Z3Exception on error
|
||||
* @return a boolean
|
||||
|
@ -1473,7 +1472,7 @@ public class Expr extends AST
|
|||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a proof by eliminiation of not-or
|
||||
* Indicates whether the term is a proof by elimination of not-or
|
||||
* Remarks: * Given a proof for (not (or l_1 ... l_n)), produces a proof for (not l_i). * T1: (not (or l_1 ... l_n)) [not-or-elim T1]: (not l_i)
|
||||
* @throws Z3Exception on error
|
||||
* @return a boolean
|
||||
|
@ -1506,14 +1505,11 @@ public class Expr extends AST
|
|||
/**
|
||||
* Indicates whether the term is a proof by rewriting
|
||||
* Remarks: A proof for
|
||||
* rewriting an expression t into an expression s. This proof object is used
|
||||
* if the parameter PROOF_MODE is 1. This proof object can have n
|
||||
* rewriting an expression t into an expression s. This proof object can have n
|
||||
* antecedents. The antecedents are proofs for equalities used as
|
||||
* substitution rules. The object is also used in a few cases if the
|
||||
* parameter PROOF_MODE is 2. The cases are: - When applying contextual
|
||||
* substitution rules. The object is used in a few cases . The cases are: - When applying contextual
|
||||
* simplification (CONTEXT_SIMPLIFIER=true) - When converting bit-vectors to
|
||||
* Booleans (BIT2BOOL=true) - When pulling ite expression up
|
||||
* (PULL_CHEAP_ITE_TREES=true)
|
||||
* Booleans (BIT2BOOL=true)
|
||||
* @throws Z3Exception on error
|
||||
* @return a boolean
|
||||
**/
|
||||
|
@ -1534,17 +1530,6 @@ public class Expr extends AST
|
|||
return isApp() && getFuncDecl().getDeclKind() == Z3_decl_kind.Z3_OP_PR_PULL_QUANT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a proof for pulling quantifiers out.
|
||||
*
|
||||
* Remarks: A proof for (iff P Q) where Q is in prenex normal form. This * proof object is only used if the parameter PROOF_MODE is 1. This proof * object has no antecedents
|
||||
* @throws Z3Exception on error
|
||||
* @return a boolean
|
||||
**/
|
||||
public boolean isProofPullQuantStar()
|
||||
{
|
||||
return isApp() && getFuncDecl().getDeclKind() == Z3_decl_kind.Z3_OP_PR_PULL_QUANT_STAR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a proof for pushing quantifiers in.
|
||||
|
@ -1605,7 +1590,7 @@ public class Expr extends AST
|
|||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a hypthesis marker.
|
||||
* Indicates whether the term is a hypothesis marker.
|
||||
* Remarks: Mark a
|
||||
* hypothesis in a natural deduction style proof.
|
||||
* @throws Z3Exception on error
|
||||
|
@ -1804,38 +1789,6 @@ public class Expr extends AST
|
|||
return isApp() && getFuncDecl().getDeclKind() == Z3_decl_kind.Z3_OP_PR_NNF_NEG;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a proof for (~ P Q) here Q is in negation
|
||||
* normal form.
|
||||
* Remarks: A proof for (~ P Q) where Q is in negation normal
|
||||
* form.
|
||||
*
|
||||
* This proof object is only used if the parameter PROOF_MODE is 1.
|
||||
*
|
||||
* This proof object may have n antecedents. Each antecedent is a
|
||||
* PR_DEF_INTRO.
|
||||
* @throws Z3Exception on error
|
||||
* @return a boolean
|
||||
**/
|
||||
public boolean isProofNNFStar()
|
||||
{
|
||||
return isApp() && getFuncDecl().getDeclKind() == Z3_decl_kind.Z3_OP_PR_NNF_STAR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a proof for (~ P Q) where Q is in
|
||||
* conjunctive normal form.
|
||||
* Remarks: A proof for (~ P Q) where Q is in
|
||||
* conjunctive normal form. This proof object is only used if the parameter
|
||||
* PROOF_MODE is 1. This proof object may have n antecedents. Each
|
||||
* antecedent is a PR_DEF_INTRO.
|
||||
* @throws Z3Exception on error
|
||||
* @return a boolean
|
||||
**/
|
||||
public boolean isProofCNFStar()
|
||||
{
|
||||
return isApp() && getFuncDecl().getDeclKind() == Z3_decl_kind.Z3_OP_PR_CNF_STAR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the term is a proof for a Skolemization step
|
||||
|
@ -1987,7 +1940,7 @@ public class Expr extends AST
|
|||
* Indicates whether the term is a relation filter
|
||||
* Remarks: Filter
|
||||
* (restrict) a relation with respect to a predicate. The first argument is
|
||||
* a relation. The second argument is a predicate with free de-Brujin
|
||||
* a relation. The second argument is a predicate with free de-Bruijn
|
||||
* indices corresponding to the columns of the relation. So the first column
|
||||
* in the relation has index 0.
|
||||
* @throws Z3Exception on error
|
||||
|
@ -2094,7 +2047,7 @@ public class Expr extends AST
|
|||
}
|
||||
|
||||
/**
|
||||
* The de-Burijn index of a bound variable.
|
||||
* The de-Bruijn index of a bound variable.
|
||||
* Remarks: Bound variables are
|
||||
* indexed by de-Bruijn indices. It is perhaps easiest to explain the
|
||||
* meaning of de-Bruijn indices by indicating the compilation process from
|
||||
|
|
|
@ -239,7 +239,7 @@ public class Model extends Z3Object {
|
|||
|
||||
/**
|
||||
* The uninterpreted sorts that the model has an interpretation for.
|
||||
* Remarks: Z3 also provides an intepretation for uninterpreted sorts used
|
||||
* Remarks: Z3 also provides an interpretation for uninterpreted sorts used
|
||||
* in a formula. The interpretation for a sort is a finite set of distinct
|
||||
* values. We say this finite set is the "universe" of the sort.
|
||||
*
|
||||
|
|
|
@ -89,7 +89,7 @@ public class Optimize extends Z3Object {
|
|||
/**
|
||||
* Retrieve a lower bound for the objective handle.
|
||||
**/
|
||||
public ArithExpr getLower()
|
||||
public Expr getLower()
|
||||
{
|
||||
return opt.GetLower(handle);
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ public class Optimize extends Z3Object {
|
|||
/**
|
||||
* Retrieve an upper bound for the objective handle.
|
||||
**/
|
||||
public ArithExpr getUpper()
|
||||
public Expr getUpper()
|
||||
{
|
||||
return opt.GetUpper(handle);
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ public class Optimize extends Z3Object {
|
|||
* and otherwise is represented by the expression {@code value + eps * EPSILON},
|
||||
* where {@code EPSILON} is an arbitrarily small real number.
|
||||
*/
|
||||
public ArithExpr[] getUpperAsVector()
|
||||
public Expr[] getUpperAsVector()
|
||||
{
|
||||
return opt.GetUpperAsVector(handle);
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ public class Optimize extends Z3Object {
|
|||
*
|
||||
* <p>See {@link #getUpperAsVector()} for triple semantics.
|
||||
*/
|
||||
public ArithExpr[] getLowerAsVector()
|
||||
public Expr[] getLowerAsVector()
|
||||
{
|
||||
return opt.GetLowerAsVector(handle);
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ public class Optimize extends Z3Object {
|
|||
/**
|
||||
* Retrieve the value of an objective.
|
||||
**/
|
||||
public ArithExpr getValue()
|
||||
public Expr getValue()
|
||||
{
|
||||
return getLower();
|
||||
}
|
||||
|
@ -214,7 +214,7 @@ public class Optimize extends Z3Object {
|
|||
* Return a handle to the objective. The handle is used as
|
||||
* to retrieve the values of objectives after calling Check.
|
||||
**/
|
||||
public Handle MkMaximize(ArithExpr e)
|
||||
public Handle MkMaximize(Expr e)
|
||||
{
|
||||
return new Handle(this, Native.optimizeMaximize(getContext().nCtx(), getNativeObject(), e.getNativeObject()));
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ public class Optimize extends Z3Object {
|
|||
* Declare an arithmetical minimization objective.
|
||||
* Similar to MkMaximize.
|
||||
**/
|
||||
public Handle MkMinimize(ArithExpr e)
|
||||
public Handle MkMinimize(Expr e)
|
||||
{
|
||||
return new Handle(this, Native.optimizeMinimize(getContext().nCtx(), getNativeObject(), e.getNativeObject()));
|
||||
}
|
||||
|
@ -231,17 +231,17 @@ public class Optimize extends Z3Object {
|
|||
/**
|
||||
* Retrieve a lower bound for the objective handle.
|
||||
**/
|
||||
private ArithExpr GetLower(int index)
|
||||
private Expr GetLower(int index)
|
||||
{
|
||||
return (ArithExpr)Expr.create(getContext(), Native.optimizeGetLower(getContext().nCtx(), getNativeObject(), index));
|
||||
return Expr.create(getContext(), Native.optimizeGetLower(getContext().nCtx(), getNativeObject(), index));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve an upper bound for the objective handle.
|
||||
**/
|
||||
private ArithExpr GetUpper(int index)
|
||||
private Expr GetUpper(int index)
|
||||
{
|
||||
return (ArithExpr)Expr.create(getContext(), Native.optimizeGetUpper(getContext().nCtx(), getNativeObject(), index));
|
||||
return Expr.create(getContext(), Native.optimizeGetUpper(getContext().nCtx(), getNativeObject(), index));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -249,7 +249,7 @@ public class Optimize extends Z3Object {
|
|||
*
|
||||
* <p>See {@link Handle#getUpperAsVector}.
|
||||
*/
|
||||
private ArithExpr[] GetUpperAsVector(int index) {
|
||||
private Expr[] GetUpperAsVector(int index) {
|
||||
return unpackObjectiveValueVector(
|
||||
Native.optimizeGetUpperAsVector(
|
||||
getContext().nCtx(), getNativeObject(), index
|
||||
|
@ -262,7 +262,7 @@ public class Optimize extends Z3Object {
|
|||
*
|
||||
* <p>See {@link Handle#getLowerAsVector}.
|
||||
*/
|
||||
private ArithExpr[] GetLowerAsVector(int index) {
|
||||
private Expr[] GetLowerAsVector(int index) {
|
||||
return unpackObjectiveValueVector(
|
||||
Native.optimizeGetLowerAsVector(
|
||||
getContext().nCtx(), getNativeObject(), index
|
||||
|
@ -270,12 +270,12 @@ public class Optimize extends Z3Object {
|
|||
);
|
||||
}
|
||||
|
||||
private ArithExpr[] unpackObjectiveValueVector(long nativeVec) {
|
||||
private Expr[] unpackObjectiveValueVector(long nativeVec) {
|
||||
ASTVector vec = new ASTVector(
|
||||
getContext(), nativeVec
|
||||
);
|
||||
return new ArithExpr[] {
|
||||
(ArithExpr) vec.get(0), (ArithExpr) vec.get(1), (ArithExpr) vec.get(2)
|
||||
return new Expr[] {
|
||||
(Expr) vec.get(0), (Expr) vec.get(1), (Expr) vec.get(2)
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
/**
|
||||
Copyright (c) 2012-2014 Microsoft Corporation
|
||||
|
||||
|
@ -120,6 +121,23 @@ public class Solver extends Z3Object {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load solver assertions from a file.
|
||||
*/
|
||||
public void fromFile(String file)
|
||||
{
|
||||
Native.solverFromFile(getContext().nCtx(), getNativeObject(), file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load solver assertions from a string.
|
||||
*/
|
||||
public void fromString(String str)
|
||||
{
|
||||
Native.solverFromString(getContext().nCtx(), getNativeObject(), str);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Assert multiple constraints into the solver, and track them (in the
|
||||
* unsat) core
|
||||
|
|
|
@ -65,7 +65,7 @@ public class Statistics extends Z3Object {
|
|||
}
|
||||
|
||||
/**
|
||||
* The string representation of the the entry's value.
|
||||
* The string representation of the entry's value.
|
||||
*
|
||||
* @throws Z3Exception
|
||||
**/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue