C# Class Microsoft.Z3.Context

Inheritance: IDisposable
Mostra file Open project: sslab-gatech/juxta Class Usage Examples

Private Properties

Property Type Description
CheckContextMatch void
InitContext void
MkSymbols Microsoft.Z3.Symbol[]
NativeErrorHandler void
ObjectInvariant void

Public Methods

Method Description
And ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value p1 and p2 evaluate to "true".

AndThen ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic

Create a tactic that applies t1 to a Goal and then t2 to every subgoal produced by t1.

BenchmarkToSMTString ( string name, string logic, string status, string attributes, BoolExpr assumptions, BoolExpr formula ) : string

Convert a benchmark into an SMT-LIB formatted string.

Cond ( Probe p, Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic

Create a tactic that applies t1 to a given goal if the probe p evaluates to true and t2 otherwise.

ConstProbe ( double val ) : Probe

Create a probe that always evaluates to val.

Context ( ) : System

Constructor.

Context ( string>.Dictionary settings ) : System

Constructor.

The following parameters can be set: - proof (Boolean) Enable proof generation - debug_ref_count (Boolean) Enable debug support for Z3_ast reference counting - trace (Boolean) Tracing support for VCC - trace_file_name (String) Trace out file for VCC traces - timeout (unsigned) default timeout (in milliseconds) used for solvers - well_sorted_check type checker - auto_config use heuristics to automatically select solver and configure it - model model generation for solvers, this parameter can be overwritten when creating a solver - model_validate validate models produced by solvers - unsat_core unsat-core generation for solvers, this parameter can be overwritten when creating a solver Note that in previous versions of Z3, this constructor was also used to set global and module parameters. For this purpose we should now use Global.SetParameter

Dispose ( ) : void

Disposes of the context.

Eq ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value returned by p1 is equal to the value returned by p2

Fail ( ) : Microsoft.Z3.Tactic

Create a tactic always fails.

FailIf ( Probe p ) : Microsoft.Z3.Tactic

Create a tactic that fails if the probe p evaluates to false.

FailIfNotDecided ( ) : Microsoft.Z3.Tactic

Create a tactic that fails if the goal is not triviall satisfiable (i.e., empty) or trivially unsatisfiable (i.e., contains `false').

Ge ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value returned by p1 is greater than or equal the value returned by p2

Gt ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value returned by p1 is greater than the value returned by p2

Interrupt ( ) : void

Interrupt the execution of a Z3 procedure.

This procedure can be used to interrupt: solvers, simplifiers and tactics.

Le ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value returned by p1 is less than or equal the value returned by p2

Lt ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value returned by p1 is less than the value returned by p2

MkAdd ( ) : ArithExpr

Create an expression representing t[0] + t[1] + ....

MkAnd ( ) : BoolExpr

Create an expression representing t[0] and t[1] and ....

MkApp ( FuncDecl f ) : Expr

Create a new function application.

MkArrayConst ( Symbol name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : ArrayExpr

Create an array constant.

MkArrayConst ( string name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : ArrayExpr

Create an array constant.

MkArraySort ( Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : ArraySort

Create a new array sort.

MkBV ( int v, uint size ) : BitVecNum

Create a bit-vector numeral.

MkBV ( long v, uint size ) : BitVecNum

Create a bit-vector numeral.

MkBV ( string v, uint size ) : BitVecNum

Create a bit-vector numeral.

MkBV ( uint v, uint size ) : BitVecNum

Create a bit-vector numeral.

MkBV ( ulong v, uint size ) : BitVecNum

Create a bit-vector numeral.

MkBV2Int ( BitVecExpr t, bool signed ) : IntExpr

Create an integer from the bit-vector argument t.

If \c is_signed is false, then the bit-vector \c t1 is treated as unsigned. So the result is non-negative and in the range [0..2^N-1], where N are the number of bits in t. If \c is_signed is true, \c t1 is treated as a signed bit-vector. NB. This function is essentially treated as uninterpreted. So you cannot expect Z3 to precisely reflect the semantics of this function when solving constraints with this function. The argument must be of bit-vector sort.

MkBVAND ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bitwise conjunction.

The arguments must have a bit-vector sort.

MkBVASHR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Arithmetic shift right

It is like logical shift right except that the most significant bits of the result always copy the most significant bit of the second argument. NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling. The arguments must have a bit-vector sort.

MkBVAdd ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Two's complement addition.

The arguments must have the same bit-vector sort.

MkBVAddNoOverflow ( BitVecExpr t1, BitVecExpr t2, bool isSigned ) : BoolExpr

Create a predicate that checks that the bit-wise addition does not overflow.

The arguments must be of bit-vector sort.

MkBVAddNoUnderflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Create a predicate that checks that the bit-wise addition does not underflow.

The arguments must be of bit-vector sort.

MkBVConst ( Symbol name, uint size ) : BitVecExpr

Creates a bit-vector constant.

MkBVConst ( string name, uint size ) : BitVecExpr

Creates a bit-vector constant.

MkBVLSHR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Logical shift right

It is equivalent to unsigned division by 2^x where \c x is the value of t2. NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling. The arguments must have a bit-vector sort.

MkBVMul ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Two's complement multiplication.

The arguments must have the same bit-vector sort.

MkBVMulNoOverflow ( BitVecExpr t1, BitVecExpr t2, bool isSigned ) : BoolExpr

Create a predicate that checks that the bit-wise multiplication does not overflow.

The arguments must be of bit-vector sort.

MkBVMulNoUnderflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Create a predicate that checks that the bit-wise multiplication does not underflow.

The arguments must be of bit-vector sort.

MkBVNAND ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bitwise NAND.

The arguments must have a bit-vector sort.

MkBVNOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bitwise NOR.

The arguments must have a bit-vector sort.

MkBVNeg ( BitVecExpr t ) : BitVecExpr

Standard two's complement unary minus.

The arguments must have a bit-vector sort.

MkBVNegNoOverflow ( BitVecExpr t ) : BoolExpr

Create a predicate that checks that the bit-wise negation does not overflow.

The arguments must be of bit-vector sort.

MkBVNot ( BitVecExpr t ) : BitVecExpr

Bitwise negation.

The argument must have a bit-vector sort.

MkBVOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bitwise disjunction.

The arguments must have a bit-vector sort.

MkBVRedAND ( BitVecExpr t ) : BitVecExpr

Take conjunction of bits in a vector, return vector of length 1.

The argument must have a bit-vector sort.

MkBVRedOR ( BitVecExpr t ) : BitVecExpr

Take disjunction of bits in a vector, return vector of length 1.

The argument must have a bit-vector sort.

MkBVRotateLeft ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Rotate Left.

Rotate bits of t1 to the left t2 times. The arguments must have the same bit-vector sort.

MkBVRotateLeft ( uint i, BitVecExpr t ) : BitVecExpr

Rotate Left.

Rotate bits of \c t to the left \c i times. The argument t must have a bit-vector sort.

MkBVRotateRight ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Rotate Right.

Rotate bits of t1 to the rightt2 times. The arguments must have the same bit-vector sort.

MkBVRotateRight ( uint i, BitVecExpr t ) : BitVecExpr

Rotate Right.

Rotate bits of \c t to the right \c i times. The argument t must have a bit-vector sort.

MkBVSDiv ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Signed division.

It is defined in the following way: - The \c floor of t1/t2 if \c t2 is different from zero, and t1*t2 >= 0. - The \c ceiling of t1/t2 if \c t2 is different from zero, and t1*t2 < 0. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

MkBVSDivNoOverflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Create a predicate that checks that the bit-wise signed division does not overflow.

The arguments must be of bit-vector sort.

MkBVSGE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Two's complement signed greater than or equal to.

The arguments must have the same bit-vector sort.

MkBVSGT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Two's complement signed greater-than.

The arguments must have the same bit-vector sort.

MkBVSHL ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Shift left.

It is equivalent to multiplication by 2^x where \c x is the value of t2. NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling. The arguments must have a bit-vector sort.

MkBVSLE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Two's complement signed less-than or equal to.

The arguments must have the same bit-vector sort.

MkBVSLT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Two's complement signed less-than

The arguments must have the same bit-vector sort.

MkBVSMod ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Two's complement signed remainder (sign follows divisor).

If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

MkBVSRem ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Signed remainder.

It is defined as t1 - (t1 /s t2) * t2, where /s represents signed division. The most significant bit (sign) of the result is equal to the most significant bit of \c t1. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

MkBVSub ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Two's complement subtraction.

The arguments must have the same bit-vector sort.

MkBVSubNoOverflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Create a predicate that checks that the bit-wise subtraction does not overflow.

The arguments must be of bit-vector sort.

MkBVSubNoUnderflow ( BitVecExpr t1, BitVecExpr t2, bool isSigned ) : BoolExpr

Create a predicate that checks that the bit-wise subtraction does not underflow.

The arguments must be of bit-vector sort.

MkBVUDiv ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Unsigned division.

It is defined as the floor of t1/t2 if \c t2 is different from zero. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

MkBVUGE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Unsigned greater than or equal to.

The arguments must have the same bit-vector sort.

MkBVUGT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Unsigned greater-than.

The arguments must have the same bit-vector sort.

MkBVULE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Unsigned less-than or equal to.

The arguments must have the same bit-vector sort.

MkBVULT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr

Unsigned less-than

The arguments must have the same bit-vector sort.

MkBVURem ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Unsigned remainder.

It is defined as t1 - (t1 /u t2) * t2, where /u represents unsigned division. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

MkBVXNOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bitwise XNOR.

The arguments must have a bit-vector sort.

MkBVXOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bitwise XOR.

The arguments must have a bit-vector sort.

MkBitVecSort ( uint size ) : BitVecSort

Create a new bit-vector sort.

MkBool ( bool value ) : BoolExpr

Creates a Boolean value.

MkBoolConst ( Symbol name ) : BoolExpr

Create a Boolean constant.

MkBoolConst ( string name ) : BoolExpr

Create a Boolean constant.

MkBoolSort ( ) : BoolSort

Create a new Boolean sort.

MkBound ( uint index, Microsoft.Z3.Sort ty ) : Expr

Creates a new bound variable.

MkConcat ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr

Bit-vector concatenation.

The arguments must have a bit-vector sort.

MkConst ( FuncDecl f ) : Expr

Creates a fresh constant from the FuncDecl f.

MkConst ( Symbol name, Microsoft.Z3.Sort range ) : Expr

Creates a new Constant of sort range and named name.

MkConst ( string name, Microsoft.Z3.Sort range ) : Expr

Creates a new Constant of sort range and named name.

MkConstArray ( Microsoft.Z3.Sort domain, Expr v ) : ArrayExpr

Create a constant array.

The resulting term is an array, such that a selecton an arbitrary index produces the value v. MkArraySort MkSelect

MkConstDecl ( Symbol name, Microsoft.Z3.Sort range ) : FuncDecl

Creates a new constant function declaration.

MkConstDecl ( string name, Microsoft.Z3.Sort range ) : FuncDecl

Creates a new constant function declaration.

MkConstructor ( Symbol name, Symbol recognizer, Symbol fieldNames = null, Microsoft.Z3.Sort sorts = null, uint sortRefs = null ) : Microsoft.Z3.Constructor

Create a datatype constructor.

MkConstructor ( string name, string recognizer, string fieldNames = null, Microsoft.Z3.Sort sorts = null, uint sortRefs = null ) : Microsoft.Z3.Constructor

Create a datatype constructor.

MkDatatypeSort ( Symbol name, Microsoft.Z3.Constructor constructors ) : DatatypeSort

Create a new datatype sort.

MkDatatypeSort ( string name, Microsoft.Z3.Constructor constructors ) : DatatypeSort

Create a new datatype sort.

MkDatatypeSorts ( Symbol names, Microsoft.Z3.Constructor c ) : Microsoft.Z3.DatatypeSort[]

Create mutually recursive datatypes.

MkDatatypeSorts ( string names, Microsoft.Z3.Constructor c ) : Microsoft.Z3.DatatypeSort[]

Create mutually recursive data-types.

MkDistinct ( ) : BoolExpr

Creates a distinct term.

MkDiv ( ArithExpr t1, ArithExpr t2 ) : ArithExpr

Create an expression representing t1 / t2.

MkEmptySet ( Microsoft.Z3.Sort domain ) : Expr

Create an empty set.

MkEnumSort ( Symbol name ) : EnumSort

Create a new enumeration sort.

MkEnumSort ( string name ) : EnumSort

Create a new enumeration sort.

MkEq ( Expr x, Expr y ) : BoolExpr

Creates the equality x = y.

MkExists ( Expr boundConstants, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier

Create an existential Quantifier.

MkExists ( Microsoft.Z3.Sort sorts, Symbol names, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier

Create an existential Quantifier.

MkExtract ( uint high, uint low, BitVecExpr t ) : BitVecExpr

Bit-vector extraction.

Extract the bits high down to low from a bitvector of size m to yield a new bitvector of size n, where n = high - low + 1. The argument t must have a bit-vector sort.

MkFalse ( ) : BoolExpr

The false Term.

MkFiniteDomainSort ( Symbol name, ulong size ) : FiniteDomainSort

Create a new finite domain sort. The result is a sort

MkFiniteDomainSort ( string name, ulong size ) : FiniteDomainSort

Create a new finite domain sort. The result is a sort Elements of the sort are created using MkNumeral(ulong, Sort), and the elements range from 0 to size-1.

MkFixedpoint ( ) : Fixedpoint

Create a Fixedpoint context.

MkForall ( Expr boundConstants, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier

Create a universal Quantifier.

MkForall ( Microsoft.Z3.Sort sorts, Symbol names, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier

Create a universal Quantifier.

Creates a forall formula, where weight is the weight, patterns is an array of patterns, sorts is an array with the sorts of the bound variables, names is an array with the 'names' of the bound variables, and body is the body of the quantifier. Quantifiers are associated with weights indicating the importance of using the quantifier during instantiation.

MkFreshConst ( string prefix, Microsoft.Z3.Sort range ) : Expr

Creates a fresh Constant of sort range and a name prefixed with prefix.

MkFreshConstDecl ( string prefix, Microsoft.Z3.Sort range ) : FuncDecl

Creates a fresh constant function declaration with a name prefixed with prefix.

MkFreshFuncDecl ( string prefix, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : FuncDecl

Creates a fresh function declaration with a name prefixed with prefix.

MkFullSet ( Microsoft.Z3.Sort domain ) : Expr

Create the full set.

MkFuncDecl ( Symbol name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : FuncDecl

Creates a new function declaration.

MkFuncDecl ( string name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : FuncDecl

Creates a new function declaration.

MkGe ( ArithExpr t1, ArithExpr t2 ) : BoolExpr

Create an expression representing t1 >= t2

MkGoal ( bool models = true, bool unsatCores = false, bool proofs = false ) : Goal

Creates a new Goal.

Note that the Context must have been created with proof generation support if proofs is set to true here.

MkGt ( ArithExpr t1, ArithExpr t2 ) : BoolExpr

Create an expression representing t1 > t2

MkITE ( BoolExpr t1, Expr t2, Expr t3 ) : Expr

Create an expression representing an if-then-else: ite(t1, t2, t3).

MkIff ( BoolExpr t1, BoolExpr t2 ) : BoolExpr

Create an expression representing t1 iff t2.

MkImplies ( BoolExpr t1, BoolExpr t2 ) : BoolExpr

Create an expression representing t1 -> t2.

MkInt ( int v ) : IntNum

Create an integer numeral.

MkInt ( long v ) : IntNum

Create an integer numeral.

MkInt ( string v ) : IntNum

Create an integer numeral.

MkInt ( uint v ) : IntNum

Create an integer numeral.

MkInt ( ulong v ) : IntNum

Create an integer numeral.

MkInt2BV ( uint n, IntExpr t ) : BitVecExpr

Create an n bit bit-vector from the integer argument t.

NB. This function is essentially treated as uninterpreted. So you cannot expect Z3 to precisely reflect the semantics of this function when solving constraints with this function. The argument must be of integer sort.

MkInt2Real ( IntExpr t ) : RealExpr

Coerce an integer to a real.

There is also a converse operation 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 k and and asserting MakeInt2Real(k) <= t1 < MkInt2Real(k)+1. The argument must be of integer sort.

MkIntConst ( Symbol name ) : IntExpr

Creates an integer constant.

MkIntConst ( string name ) : IntExpr

Creates an integer constant.

MkIntSort ( ) : IntSort

Create a new integer sort.

MkIsInteger ( RealExpr t ) : BoolExpr

Creates an expression that checks whether a real number is an integer.

MkLe ( ArithExpr t1, ArithExpr t2 ) : BoolExpr

Create an expression representing t1 <= t2

MkListSort ( Symbol name, Microsoft.Z3.Sort elemSort ) : ListSort

Create a new list sort.

MkListSort ( string name, Microsoft.Z3.Sort elemSort ) : ListSort

Create a new list sort.

MkLt ( ArithExpr t1, ArithExpr t2 ) : BoolExpr

Create an expression representing t1 < t2

MkMap ( FuncDecl f ) : ArrayExpr

Maps f on the argument arrays.

Eeach element of args must be of an array sort [domain_i -> range_i]. The function declaration f must have type range_1 .. range_n -> range. v must have sort range. The sort of the result is [domain_i -> range]. MkArraySort MkSelect MkStore

MkMod ( IntExpr t1, IntExpr t2 ) : IntExpr

Create an expression representing t1 mod t2.

The arguments must have int type.

MkMul ( ) : ArithExpr

Create an expression representing t[0] * t[1] * ....

MkNot ( BoolExpr a ) : BoolExpr

Mk an expression representing not(a).

MkNumeral ( int v, Microsoft.Z3.Sort ty ) : Expr

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.

MkNumeral ( long v, Microsoft.Z3.Sort ty ) : Expr

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.

MkNumeral ( string v, Microsoft.Z3.Sort ty ) : Expr

Create a Term of a given sort.

MkNumeral ( uint v, Microsoft.Z3.Sort ty ) : Expr

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.

MkNumeral ( ulong v, Microsoft.Z3.Sort ty ) : Expr

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.

MkOr ( ) : BoolExpr

Create an expression representing t[0] or t[1] or ....

MkParams ( ) : Params

Creates a new ParameterSet.

MkPattern ( ) : Pattern

Create a quantifier pattern.

MkPower ( ArithExpr t1, ArithExpr t2 ) : ArithExpr

Create an expression representing t1 ^ t2.

MkProbe ( string name ) : Probe

Creates a new Probe.

MkQuantifier ( bool universal, Expr boundConstants, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier

Create a Quantifier.

MkQuantifier ( bool universal, Microsoft.Z3.Sort sorts, Symbol names, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier

Create a Quantifier.

MkReal ( int v ) : RatNum

Create a real numeral.

MkReal ( int num, int den ) : RatNum

Create a real from a fraction.

MkReal ( long v ) : RatNum

Create a real numeral.

MkReal ( string v ) : RatNum

Create a real numeral.

MkReal ( uint v ) : RatNum

Create a real numeral.

MkReal ( ulong v ) : RatNum

Create a real numeral.

MkReal2Int ( RealExpr t ) : IntExpr

Coerce a real to an integer.

The semantics of this function follows the SMT-LIB standard for the function to_int. The argument must be of real sort.

MkRealConst ( Symbol name ) : RealExpr

Creates a real constant.

MkRealConst ( string name ) : RealExpr

Creates a real constant.

MkRealSort ( ) : RealSort

Create a real sort.

MkRem ( IntExpr t1, IntExpr t2 ) : IntExpr

Create an expression representing t1 rem t2.

The arguments must have int type.

MkRepeat ( uint i, BitVecExpr t ) : BitVecExpr

Bit-vector repetition.

The argument t must have a bit-vector sort.

MkSelect ( ArrayExpr a, Expr i ) : Expr

Array read.

The argument a is the array and i is the index of the array that gets read. The node a must have an array sort [domain -> range], and i must have the sort domain. The sort of the result is range. MkArraySort MkStore

MkSetAdd ( Expr set, Expr element ) : Expr

Add an element to the set.

MkSetComplement ( Expr arg ) : Expr

Take the complement of a set.

MkSetDel ( Expr set, Expr element ) : Expr

Remove an element from a set.

MkSetDifference ( Expr arg1, Expr arg2 ) : Expr

Take the difference between two sets.

MkSetIntersection ( ) : Expr

Take the intersection of a list of sets.

MkSetMembership ( Expr elem, Expr set ) : Expr

Check for set membership.

MkSetSort ( Microsoft.Z3.Sort ty ) : SetSort

Create a set type.

MkSetSubset ( Expr arg1, Expr arg2 ) : Expr

Check for subsetness of sets.

MkSetUnion ( ) : Expr

Take the union of a list of sets.

MkSignExt ( uint i, BitVecExpr t ) : BitVecExpr

Bit-vector sign extension.

Sign-extends the given bit-vector to the (signed) equivalent bitvector of size m+i, where \c m is the size of the given bit-vector. The argument t must have a bit-vector sort.

MkSimpleSolver ( ) : Solver

Creates a new (incremental) solver.

MkSolver ( Symbol logic = null ) : Solver

Creates a new (incremental) solver.

This solver also uses a set of builtin tactics for handling the first check-sat command, and check-sat commands that take more than a given number of milliseconds to be solved.

MkSolver ( Microsoft.Z3.Tactic t ) : Solver

Creates a solver that is implemented using the given tactic.

The solver supports the commands Push and Pop, but it will always solve each check from scratch.

MkSolver ( string logic ) : Solver

Creates a new (incremental) solver.

MkStore ( ArrayExpr a, Expr i, Expr v ) : ArrayExpr

Array update.

The node a must have an array sort [domain -> range], i must have sort domain, v must have sort range. The sort of the result is [domain -> range]. The semantics of this function is given by the theory of arrays described in the SMT-LIB standard. See http://smtlib.org for more details. The result of this function is an array that is equal to a (with respect to select) on all indices except for i, where it maps to v (and the select of a with respect to i may be a different value). MkArraySort MkSelect

MkSub ( ) : ArithExpr

Create an expression representing t[0] - t[1] - ....

MkSymbol ( int i ) : IntSymbol

Creates a new symbol using an integer.

Not all integers can be passed to this function. The legal range of unsigned integers is 0 to 2^30-1.

MkSymbol ( string name ) : StringSymbol

Create a symbol using a string.

MkTactic ( string name ) : Microsoft.Z3.Tactic

Creates a new Tactic.

MkTermArray ( ArrayExpr array ) : Expr

Access the array default value.

Produces the default range value, for arrays that can be represented as finite maps with a default range value.

MkTrue ( ) : BoolExpr

The true Term.

MkTupleSort ( Symbol name, Symbol fieldNames, Microsoft.Z3.Sort fieldSorts ) : TupleSort

Create a new tuple sort.

MkUnaryMinus ( ArithExpr t ) : ArithExpr

Create an expression representing -t.

MkUninterpretedSort ( Symbol s ) : UninterpretedSort

Create a new uninterpreted sort.

MkUninterpretedSort ( string str ) : UninterpretedSort

Create a new uninterpreted sort.

MkXor ( BoolExpr t1, BoolExpr t2 ) : BoolExpr

Create an expression representing t1 xor t2.

MkZeroExt ( uint i, BitVecExpr t ) : BitVecExpr

Bit-vector zero extension.

Extend the given bit-vector with zeros to the (unsigned) equivalent bitvector of size m+i, where \c m is the size of the given bit-vector. The argument t must have a bit-vector sort.

Not ( Probe p ) : Probe

Create a probe that evaluates to "true" when the value p does not evaluate to "true".

Or ( Probe p1, Probe p2 ) : Probe

Create a probe that evaluates to "true" when the value p1 or p2 evaluate to "true".

OrElse ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic

Create a tactic that first applies t1 to a Goal and if it fails then returns the result of t2 applied to the Goal.

ParAndThen ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic

Create a tactic that applies t1 to a given goal and then t2 to every subgoal produced by t1. The subgoals are processed in parallel.

ParOr ( ) : Microsoft.Z3.Tactic

Create a tactic that applies the given tactics in parallel.

ParseSMTLIB2File ( string fileName, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : BoolExpr

Parse the given file using the SMT-LIB2 parser.

ParseSMTLIB2String ( string str, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : BoolExpr

Parse the given string using the SMT-LIB2 parser.

ParseSMTLIBFile ( string fileName, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : void

Parse the given file using the SMT-LIB parser.

ParseSMTLIBString ( string str, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : void

Parse the given string using the SMT-LIB parser.

The symbol table of the parser can be initialized using the given sorts and declarations. The symbols in the arrays sortNames and declNames don't need to match the names of the sorts and declarations in the arrays sorts and decls. This is a useful feature since we can use arbitrary names to reference sorts and declarations.

ProbeDescription ( string name ) : string

Returns a string containing a description of the probe with the given name.

Repeat ( Microsoft.Z3.Tactic t, uint max = uint.MaxValue ) : Microsoft.Z3.Tactic

Create a tactic that keeps applying t until the goal is not modified anymore or the maximum number of iterations max is reached.

SimplifyHelp ( ) : string

Return a string describing all available parameters to Expr.Simplify.

Skip ( ) : Microsoft.Z3.Tactic

Create a tactic that just returns the given goal.

TacticDescription ( string name ) : string

Returns a string containing a description of the tactic with the given name.

Then ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic

Create a tactic that applies t1 to a Goal and then t2 to every subgoal produced by t1.

Shorthand for AndThen.

ToggleWarningMessages ( bool enabled ) : void

Enable/disable printing of warning messages to the console.

Note that this function is static and effects the behaviour of all contexts globally.

TryFor ( Microsoft.Z3.Tactic t, uint ms ) : Microsoft.Z3.Tactic

Create a tactic that applies t to a goal for ms milliseconds.

If t does not terminate within ms milliseconds, then it fails.

UnwrapAST ( AST a ) : IntPtr

Unwraps an AST.

This function is used for transitions between native and managed objects. It returns the native pointer to the AST. Note that AST objects are reference counted and unwrapping an AST disables automatic reference counting, i.e., all references to the IntPtr that is returned must be handled externally and through native calls (see e.g., Native.Z3_inc_ref).

UpdateParamValue ( string id, string value ) : void

Update a mutable configuration parameter.

The list of all configuration parameters can be obtained using the Z3 executable: z3.exe -p Only a few configuration parameters are mutable once the context is created. An exception is thrown when trying to modify an immutable parameter.

UsingParams ( Microsoft.Z3.Tactic t, Params p ) : Microsoft.Z3.Tactic

Create a tactic that applies t using the given set of parameters p.

When ( Probe p, Microsoft.Z3.Tactic t ) : Microsoft.Z3.Tactic

Create a tactic that applies t to a given goal if the probe p evaluates to true.

If p evaluates to false, then the new tactic behaves like the skip tactic.

With ( Microsoft.Z3.Tactic t, Params p ) : Microsoft.Z3.Tactic

Create a tactic that applies t using the given set of parameters p.

Alias for UsingParams

WrapAST ( IntPtr nativeObject ) : AST

Wraps an AST.

This function is used for transitions between native and managed objects. Note that nativeObject must be a native object obtained from Z3 (e.g., through UnwrapAST) and that it must have a correct reference count (see e.g., Native.Z3_inc_ref.

Private Methods

Method Description
CheckContextMatch ( Z3Object other ) : void
InitContext ( ) : void
MkSymbols ( string names ) : Microsoft.Z3.Symbol[]

Create an array of symbols.

NativeErrorHandler ( IntPtr ctx, Z3_error_code errorCode ) : void
ObjectInvariant ( ) : void

Method Details

And() public method

Create a probe that evaluates to "true" when the value p1 and p2 evaluate to "true".
public And ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

AndThen() public method

Create a tactic that applies t1 to a Goal and then t2 to every subgoal produced by t1.
public AndThen ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic
t1 Microsoft.Z3.Tactic
t2 Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

BenchmarkToSMTString() public method

Convert a benchmark into an SMT-LIB formatted string.
public BenchmarkToSMTString ( string name, string logic, string status, string attributes, BoolExpr assumptions, BoolExpr formula ) : string
name string Name of the benchmark. The argument is optional.
logic string The benchmark logic.
status string The status string (sat, unsat, or unknown)
attributes string Other attributes, such as source, difficulty or category.
assumptions BoolExpr Auxiliary assumptions.
formula BoolExpr Formula to be checked for consistency in conjunction with assumptions.
return string

Cond() public method

Create a tactic that applies t1 to a given goal if the probe p evaluates to true and t2 otherwise.
public Cond ( Probe p, Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic
p Probe
t1 Microsoft.Z3.Tactic
t2 Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

ConstProbe() public method

Create a probe that always evaluates to val.
public ConstProbe ( double val ) : Probe
val double
return Probe

Context() public method

Constructor.
public Context ( ) : System
return System

Context() public method

Constructor.
The following parameters can be set: - proof (Boolean) Enable proof generation - debug_ref_count (Boolean) Enable debug support for Z3_ast reference counting - trace (Boolean) Tracing support for VCC - trace_file_name (String) Trace out file for VCC traces - timeout (unsigned) default timeout (in milliseconds) used for solvers - well_sorted_check type checker - auto_config use heuristics to automatically select solver and configure it - model model generation for solvers, this parameter can be overwritten when creating a solver - model_validate validate models produced by solvers - unsat_core unsat-core generation for solvers, this parameter can be overwritten when creating a solver Note that in previous versions of Z3, this constructor was also used to set global and module parameters. For this purpose we should now use Global.SetParameter
public Context ( string>.Dictionary settings ) : System
settings string>.Dictionary
return System

Dispose() public method

Disposes of the context.
public Dispose ( ) : void
return void

Eq() public method

Create a probe that evaluates to "true" when the value returned by p1 is equal to the value returned by p2
public Eq ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

Fail() public method

Create a tactic always fails.
public Fail ( ) : Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

FailIf() public method

Create a tactic that fails if the probe p evaluates to false.
public FailIf ( Probe p ) : Microsoft.Z3.Tactic
p Probe
return Microsoft.Z3.Tactic

FailIfNotDecided() public method

Create a tactic that fails if the goal is not triviall satisfiable (i.e., empty) or trivially unsatisfiable (i.e., contains `false').
public FailIfNotDecided ( ) : Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

Ge() public method

Create a probe that evaluates to "true" when the value returned by p1 is greater than or equal the value returned by p2
public Ge ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

Gt() public method

Create a probe that evaluates to "true" when the value returned by p1 is greater than the value returned by p2
public Gt ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

Interrupt() public method

Interrupt the execution of a Z3 procedure.
This procedure can be used to interrupt: solvers, simplifiers and tactics.
public Interrupt ( ) : void
return void

Le() public method

Create a probe that evaluates to "true" when the value returned by p1 is less than or equal the value returned by p2
public Le ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

Lt() public method

Create a probe that evaluates to "true" when the value returned by p1 is less than the value returned by p2
public Lt ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

MkAdd() public method

Create an expression representing t[0] + t[1] + ....
public MkAdd ( ) : ArithExpr
return ArithExpr

MkAnd() public method

Create an expression representing t[0] and t[1] and ....
public MkAnd ( ) : BoolExpr
return BoolExpr

MkApp() public method

Create a new function application.
public MkApp ( FuncDecl f ) : Expr
f FuncDecl
return Expr

MkArrayConst() public method

Create an array constant.
public MkArrayConst ( Symbol name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : ArrayExpr
name Symbol
domain Microsoft.Z3.Sort
range Microsoft.Z3.Sort
return ArrayExpr

MkArrayConst() public method

Create an array constant.
public MkArrayConst ( string name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : ArrayExpr
name string
domain Microsoft.Z3.Sort
range Microsoft.Z3.Sort
return ArrayExpr

MkArraySort() public method

Create a new array sort.
public MkArraySort ( Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : ArraySort
domain Microsoft.Z3.Sort
range Microsoft.Z3.Sort
return ArraySort

MkBV() public method

Create a bit-vector numeral.
public MkBV ( int v, uint size ) : BitVecNum
v int value of the numeral.
size uint the size of the bit-vector
return BitVecNum

MkBV() public method

Create a bit-vector numeral.
public MkBV ( long v, uint size ) : BitVecNum
v long value of the numeral.
size uint the size of the bit-vector
return BitVecNum

MkBV() public method

Create a bit-vector numeral.
public MkBV ( string v, uint size ) : BitVecNum
v string A string representing the value in decimal notation.
size uint the size of the bit-vector
return BitVecNum

MkBV() public method

Create a bit-vector numeral.
public MkBV ( uint v, uint size ) : BitVecNum
v uint value of the numeral.
size uint the size of the bit-vector
return BitVecNum

MkBV() public method

Create a bit-vector numeral.
public MkBV ( ulong v, uint size ) : BitVecNum
v ulong value of the numeral.
size uint the size of the bit-vector
return BitVecNum

MkBV2Int() public method

Create an integer from the bit-vector argument t.
If \c is_signed is false, then the bit-vector \c t1 is treated as unsigned. So the result is non-negative and in the range [0..2^N-1], where N are the number of bits in t. If \c is_signed is true, \c t1 is treated as a signed bit-vector. NB. This function is essentially treated as uninterpreted. So you cannot expect Z3 to precisely reflect the semantics of this function when solving constraints with this function. The argument must be of bit-vector sort.
public MkBV2Int ( BitVecExpr t, bool signed ) : IntExpr
t BitVecExpr
signed bool
return IntExpr

MkBVAND() public method

Bitwise conjunction.
The arguments must have a bit-vector sort.
public MkBVAND ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVASHR() public method

Arithmetic shift right
It is like logical shift right except that the most significant bits of the result always copy the most significant bit of the second argument. NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling. The arguments must have a bit-vector sort.
public MkBVASHR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVAdd() public method

Two's complement addition.
The arguments must have the same bit-vector sort.
public MkBVAdd ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVAddNoOverflow() public method

Create a predicate that checks that the bit-wise addition does not overflow.
The arguments must be of bit-vector sort.
public MkBVAddNoOverflow ( BitVecExpr t1, BitVecExpr t2, bool isSigned ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
isSigned bool
return BoolExpr

MkBVAddNoUnderflow() public method

Create a predicate that checks that the bit-wise addition does not underflow.
The arguments must be of bit-vector sort.
public MkBVAddNoUnderflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVConst() public method

Creates a bit-vector constant.
public MkBVConst ( Symbol name, uint size ) : BitVecExpr
name Symbol
size uint
return BitVecExpr

MkBVConst() public method

Creates a bit-vector constant.
public MkBVConst ( string name, uint size ) : BitVecExpr
name string
size uint
return BitVecExpr

MkBVLSHR() public method

Logical shift right
It is equivalent to unsigned division by 2^x where \c x is the value of t2. NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling. The arguments must have a bit-vector sort.
public MkBVLSHR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVMul() public method

Two's complement multiplication.
The arguments must have the same bit-vector sort.
public MkBVMul ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVMulNoOverflow() public method

Create a predicate that checks that the bit-wise multiplication does not overflow.
The arguments must be of bit-vector sort.
public MkBVMulNoOverflow ( BitVecExpr t1, BitVecExpr t2, bool isSigned ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
isSigned bool
return BoolExpr

MkBVMulNoUnderflow() public method

Create a predicate that checks that the bit-wise multiplication does not underflow.
The arguments must be of bit-vector sort.
public MkBVMulNoUnderflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVNAND() public method

Bitwise NAND.
The arguments must have a bit-vector sort.
public MkBVNAND ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVNOR() public method

Bitwise NOR.
The arguments must have a bit-vector sort.
public MkBVNOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVNeg() public method

Standard two's complement unary minus.
The arguments must have a bit-vector sort.
public MkBVNeg ( BitVecExpr t ) : BitVecExpr
t BitVecExpr
return BitVecExpr

MkBVNegNoOverflow() public method

Create a predicate that checks that the bit-wise negation does not overflow.
The arguments must be of bit-vector sort.
public MkBVNegNoOverflow ( BitVecExpr t ) : BoolExpr
t BitVecExpr
return BoolExpr

MkBVNot() public method

Bitwise negation.
The argument must have a bit-vector sort.
public MkBVNot ( BitVecExpr t ) : BitVecExpr
t BitVecExpr
return BitVecExpr

MkBVOR() public method

Bitwise disjunction.
The arguments must have a bit-vector sort.
public MkBVOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVRedAND() public method

Take conjunction of bits in a vector, return vector of length 1.
The argument must have a bit-vector sort.
public MkBVRedAND ( BitVecExpr t ) : BitVecExpr
t BitVecExpr
return BitVecExpr

MkBVRedOR() public method

Take disjunction of bits in a vector, return vector of length 1.
The argument must have a bit-vector sort.
public MkBVRedOR ( BitVecExpr t ) : BitVecExpr
t BitVecExpr
return BitVecExpr

MkBVRotateLeft() public method

Rotate Left.
Rotate bits of t1 to the left t2 times. The arguments must have the same bit-vector sort.
public MkBVRotateLeft ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVRotateLeft() public method

Rotate Left.
Rotate bits of \c t to the left \c i times. The argument t must have a bit-vector sort.
public MkBVRotateLeft ( uint i, BitVecExpr t ) : BitVecExpr
i uint
t BitVecExpr
return BitVecExpr

MkBVRotateRight() public method

Rotate Right.
Rotate bits of t1 to the rightt2 times. The arguments must have the same bit-vector sort.
public MkBVRotateRight ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVRotateRight() public method

Rotate Right.
Rotate bits of \c t to the right \c i times. The argument t must have a bit-vector sort.
public MkBVRotateRight ( uint i, BitVecExpr t ) : BitVecExpr
i uint
t BitVecExpr
return BitVecExpr

MkBVSDiv() public method

Signed division.
It is defined in the following way: - The \c floor of t1/t2 if \c t2 is different from zero, and t1*t2 >= 0. - The \c ceiling of t1/t2 if \c t2 is different from zero, and t1*t2 < 0. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.
public MkBVSDiv ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVSDivNoOverflow() public method

Create a predicate that checks that the bit-wise signed division does not overflow.
The arguments must be of bit-vector sort.
public MkBVSDivNoOverflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVSGE() public method

Two's complement signed greater than or equal to.
The arguments must have the same bit-vector sort.
public MkBVSGE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVSGT() public method

Two's complement signed greater-than.
The arguments must have the same bit-vector sort.
public MkBVSGT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVSHL() public method

Shift left.
It is equivalent to multiplication by 2^x where \c x is the value of t2. NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling. The arguments must have a bit-vector sort.
public MkBVSHL ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVSLE() public method

Two's complement signed less-than or equal to.
The arguments must have the same bit-vector sort.
public MkBVSLE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVSLT() public method

Two's complement signed less-than
The arguments must have the same bit-vector sort.
public MkBVSLT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVSMod() public method

Two's complement signed remainder (sign follows divisor).
If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.
public MkBVSMod ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVSRem() public method

Signed remainder.
It is defined as t1 - (t1 /s t2) * t2, where /s represents signed division. The most significant bit (sign) of the result is equal to the most significant bit of \c t1. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.
public MkBVSRem ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVSub() public method

Two's complement subtraction.
The arguments must have the same bit-vector sort.
public MkBVSub ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVSubNoOverflow() public method

Create a predicate that checks that the bit-wise subtraction does not overflow.
The arguments must be of bit-vector sort.
public MkBVSubNoOverflow ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVSubNoUnderflow() public method

Create a predicate that checks that the bit-wise subtraction does not underflow.
The arguments must be of bit-vector sort.
public MkBVSubNoUnderflow ( BitVecExpr t1, BitVecExpr t2, bool isSigned ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
isSigned bool
return BoolExpr

MkBVUDiv() public method

Unsigned division.
It is defined as the floor of t1/t2 if \c t2 is different from zero. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.
public MkBVUDiv ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVUGE() public method

Unsigned greater than or equal to.
The arguments must have the same bit-vector sort.
public MkBVUGE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVUGT() public method

Unsigned greater-than.
The arguments must have the same bit-vector sort.
public MkBVUGT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVULE() public method

Unsigned less-than or equal to.
The arguments must have the same bit-vector sort.
public MkBVULE ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVULT() public method

Unsigned less-than
The arguments must have the same bit-vector sort.
public MkBVULT ( BitVecExpr t1, BitVecExpr t2 ) : BoolExpr
t1 BitVecExpr
t2 BitVecExpr
return BoolExpr

MkBVURem() public method

Unsigned remainder.
It is defined as t1 - (t1 /u t2) * t2, where /u represents unsigned division. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.
public MkBVURem ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVXNOR() public method

Bitwise XNOR.
The arguments must have a bit-vector sort.
public MkBVXNOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBVXOR() public method

Bitwise XOR.
The arguments must have a bit-vector sort.
public MkBVXOR ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkBitVecSort() public method

Create a new bit-vector sort.
public MkBitVecSort ( uint size ) : BitVecSort
size uint
return BitVecSort

MkBool() public method

Creates a Boolean value.
public MkBool ( bool value ) : BoolExpr
value bool
return BoolExpr

MkBoolConst() public method

Create a Boolean constant.
public MkBoolConst ( Symbol name ) : BoolExpr
name Symbol
return BoolExpr

MkBoolConst() public method

Create a Boolean constant.
public MkBoolConst ( string name ) : BoolExpr
name string
return BoolExpr

MkBoolSort() public method

Create a new Boolean sort.
public MkBoolSort ( ) : BoolSort
return BoolSort

MkBound() public method

Creates a new bound variable.
public MkBound ( uint index, Microsoft.Z3.Sort ty ) : Expr
index uint The de-Bruijn index of the variable
ty Microsoft.Z3.Sort The sort of the variable
return Expr

MkConcat() public method

Bit-vector concatenation.
The arguments must have a bit-vector sort.
public MkConcat ( BitVecExpr t1, BitVecExpr t2 ) : BitVecExpr
t1 BitVecExpr
t2 BitVecExpr
return BitVecExpr

MkConst() public method

Creates a fresh constant from the FuncDecl f.
public MkConst ( FuncDecl f ) : Expr
f FuncDecl A decl of a 0-arity function
return Expr

MkConst() public method

Creates a new Constant of sort range and named name.
public MkConst ( Symbol name, Microsoft.Z3.Sort range ) : Expr
name Symbol
range Microsoft.Z3.Sort
return Expr

MkConst() public method

Creates a new Constant of sort range and named name.
public MkConst ( string name, Microsoft.Z3.Sort range ) : Expr
name string
range Microsoft.Z3.Sort
return Expr

MkConstArray() public method

Create a constant array.
The resulting term is an array, such that a selecton an arbitrary index produces the value v. MkArraySort MkSelect
public MkConstArray ( Microsoft.Z3.Sort domain, Expr v ) : ArrayExpr
domain Microsoft.Z3.Sort
v Expr
return ArrayExpr

MkConstDecl() public method

Creates a new constant function declaration.
public MkConstDecl ( Symbol name, Microsoft.Z3.Sort range ) : FuncDecl
name Symbol
range Microsoft.Z3.Sort
return FuncDecl

MkConstDecl() public method

Creates a new constant function declaration.
public MkConstDecl ( string name, Microsoft.Z3.Sort range ) : FuncDecl
name string
range Microsoft.Z3.Sort
return FuncDecl

MkConstructor() public method

Create a datatype constructor.
public MkConstructor ( Symbol name, Symbol recognizer, Symbol fieldNames = null, Microsoft.Z3.Sort sorts = null, uint sortRefs = null ) : Microsoft.Z3.Constructor
name Symbol constructor name
recognizer Symbol name of recognizer function.
fieldNames Symbol names of the constructor fields.
sorts Microsoft.Z3.Sort field sorts, 0 if the field sort refers to a recursive sort.
sortRefs uint reference to datatype sort that is an argument to the constructor; /// if the corresponding sort reference is 0, then the value in sort_refs should be an index /// referring to one of the recursive datatypes that is declared.
return Microsoft.Z3.Constructor

MkConstructor() public method

Create a datatype constructor.
public MkConstructor ( string name, string recognizer, string fieldNames = null, Microsoft.Z3.Sort sorts = null, uint sortRefs = null ) : Microsoft.Z3.Constructor
name string
recognizer string
fieldNames string
sorts Microsoft.Z3.Sort
sortRefs uint
return Microsoft.Z3.Constructor

MkDatatypeSort() public method

Create a new datatype sort.
public MkDatatypeSort ( Symbol name, Microsoft.Z3.Constructor constructors ) : DatatypeSort
name Symbol
constructors Microsoft.Z3.Constructor
return DatatypeSort

MkDatatypeSort() public method

Create a new datatype sort.
public MkDatatypeSort ( string name, Microsoft.Z3.Constructor constructors ) : DatatypeSort
name string
constructors Microsoft.Z3.Constructor
return DatatypeSort

MkDatatypeSorts() public method

Create mutually recursive datatypes.
public MkDatatypeSorts ( Symbol names, Microsoft.Z3.Constructor c ) : Microsoft.Z3.DatatypeSort[]
names Symbol names of datatype sorts
c Microsoft.Z3.Constructor list of constructors, one list per sort.
return Microsoft.Z3.DatatypeSort[]

MkDatatypeSorts() public method

Create mutually recursive data-types.
public MkDatatypeSorts ( string names, Microsoft.Z3.Constructor c ) : Microsoft.Z3.DatatypeSort[]
names string
c Microsoft.Z3.Constructor
return Microsoft.Z3.DatatypeSort[]

MkDistinct() public method

Creates a distinct term.
public MkDistinct ( ) : BoolExpr
return BoolExpr

MkDiv() public method

Create an expression representing t1 / t2.
public MkDiv ( ArithExpr t1, ArithExpr t2 ) : ArithExpr
t1 ArithExpr
t2 ArithExpr
return ArithExpr

MkEmptySet() public method

Create an empty set.
public MkEmptySet ( Microsoft.Z3.Sort domain ) : Expr
domain Microsoft.Z3.Sort
return Expr

MkEnumSort() public method

Create a new enumeration sort.
public MkEnumSort ( Symbol name ) : EnumSort
name Symbol
return EnumSort

MkEnumSort() public method

Create a new enumeration sort.
public MkEnumSort ( string name ) : EnumSort
name string
return EnumSort

MkEq() public method

Creates the equality x = y.
public MkEq ( Expr x, Expr y ) : BoolExpr
x Expr
y Expr
return BoolExpr

MkExists() public method

Create an existential Quantifier.
public MkExists ( Expr boundConstants, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier
boundConstants Expr
body Expr
weight uint
patterns Pattern
noPatterns Expr
quantifierID Symbol
skolemID Symbol
return Quantifier

MkExists() public method

Create an existential Quantifier.
public MkExists ( Microsoft.Z3.Sort sorts, Symbol names, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier
sorts Microsoft.Z3.Sort
names Symbol
body Expr
weight uint
patterns Pattern
noPatterns Expr
quantifierID Symbol
skolemID Symbol
return Quantifier

MkExtract() public method

Bit-vector extraction.
Extract the bits high down to low from a bitvector of size m to yield a new bitvector of size n, where n = high - low + 1. The argument t must have a bit-vector sort.
public MkExtract ( uint high, uint low, BitVecExpr t ) : BitVecExpr
high uint
low uint
t BitVecExpr
return BitVecExpr

MkFalse() public method

The false Term.
public MkFalse ( ) : BoolExpr
return BoolExpr

MkFiniteDomainSort() public method

Create a new finite domain sort. The result is a sort
public MkFiniteDomainSort ( Symbol name, ulong size ) : FiniteDomainSort
name Symbol The name used to identify the sort
size ulong The size of the sort
return FiniteDomainSort

MkFiniteDomainSort() public method

Create a new finite domain sort. The result is a sort Elements of the sort are created using MkNumeral(ulong, Sort), and the elements range from 0 to size-1.
public MkFiniteDomainSort ( string name, ulong size ) : FiniteDomainSort
name string The name used to identify the sort
size ulong The size of the sort
return FiniteDomainSort

MkFixedpoint() public method

Create a Fixedpoint context.
public MkFixedpoint ( ) : Fixedpoint
return Fixedpoint

MkForall() public method

Create a universal Quantifier.
public MkForall ( Expr boundConstants, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier
boundConstants Expr
body Expr
weight uint
patterns Pattern
noPatterns Expr
quantifierID Symbol
skolemID Symbol
return Quantifier

MkForall() public method

Create a universal Quantifier.
Creates a forall formula, where weight is the weight, patterns is an array of patterns, sorts is an array with the sorts of the bound variables, names is an array with the 'names' of the bound variables, and body is the body of the quantifier. Quantifiers are associated with weights indicating the importance of using the quantifier during instantiation.
public MkForall ( Microsoft.Z3.Sort sorts, Symbol names, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier
sorts Microsoft.Z3.Sort the sorts of the bound variables.
names Symbol names of the bound variables
body Expr the body of the quantifier.
weight uint quantifiers are associated with weights indicating the importance of using the quantifier during instantiation. By default, pass the weight 0.
patterns Pattern array containing the patterns created using MkPattern.
noPatterns Expr array containing the anti-patterns created using MkPattern.
quantifierID Symbol optional symbol to track quantifier.
skolemID Symbol optional symbol to track skolem constants.
return Quantifier

MkFreshConst() public method

Creates a fresh Constant of sort range and a name prefixed with prefix.
public MkFreshConst ( string prefix, Microsoft.Z3.Sort range ) : Expr
prefix string
range Microsoft.Z3.Sort
return Expr

MkFreshConstDecl() public method

Creates a fresh constant function declaration with a name prefixed with prefix.
public MkFreshConstDecl ( string prefix, Microsoft.Z3.Sort range ) : FuncDecl
prefix string
range Microsoft.Z3.Sort
return FuncDecl

MkFreshFuncDecl() public method

Creates a fresh function declaration with a name prefixed with prefix.
public MkFreshFuncDecl ( string prefix, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : FuncDecl
prefix string
domain Microsoft.Z3.Sort
range Microsoft.Z3.Sort
return FuncDecl

MkFullSet() public method

Create the full set.
public MkFullSet ( Microsoft.Z3.Sort domain ) : Expr
domain Microsoft.Z3.Sort
return Expr

MkFuncDecl() public method

Creates a new function declaration.
public MkFuncDecl ( Symbol name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : FuncDecl
name Symbol
domain Microsoft.Z3.Sort
range Microsoft.Z3.Sort
return FuncDecl

MkFuncDecl() public method

Creates a new function declaration.
public MkFuncDecl ( string name, Microsoft.Z3.Sort domain, Microsoft.Z3.Sort range ) : FuncDecl
name string
domain Microsoft.Z3.Sort
range Microsoft.Z3.Sort
return FuncDecl

MkGe() public method

Create an expression representing t1 >= t2
public MkGe ( ArithExpr t1, ArithExpr t2 ) : BoolExpr
t1 ArithExpr
t2 ArithExpr
return BoolExpr

MkGoal() public method

Creates a new Goal.
Note that the Context must have been created with proof generation support if proofs is set to true here.
public MkGoal ( bool models = true, bool unsatCores = false, bool proofs = false ) : Goal
models bool Indicates whether model generation should be enabled.
unsatCores bool Indicates whether unsat core generation should be enabled.
proofs bool Indicates whether proof generation should be enabled.
return Goal

MkGt() public method

Create an expression representing t1 > t2
public MkGt ( ArithExpr t1, ArithExpr t2 ) : BoolExpr
t1 ArithExpr
t2 ArithExpr
return BoolExpr

MkITE() public method

Create an expression representing an if-then-else: ite(t1, t2, t3).
public MkITE ( BoolExpr t1, Expr t2, Expr t3 ) : Expr
t1 BoolExpr An expression with Boolean sort
t2 Expr An expression
t3 Expr An expression with the same sort as
return Expr

MkIff() public method

Create an expression representing t1 iff t2.
public MkIff ( BoolExpr t1, BoolExpr t2 ) : BoolExpr
t1 BoolExpr
t2 BoolExpr
return BoolExpr

MkImplies() public method

Create an expression representing t1 -> t2.
public MkImplies ( BoolExpr t1, BoolExpr t2 ) : BoolExpr
t1 BoolExpr
t2 BoolExpr
return BoolExpr

MkInt() public method

Create an integer numeral.
public MkInt ( int v ) : IntNum
v int value of the numeral.
return IntNum

MkInt() public method

Create an integer numeral.
public MkInt ( long v ) : IntNum
v long value of the numeral.
return IntNum

MkInt() public method

Create an integer numeral.
public MkInt ( string v ) : IntNum
v string A string representing the Term value in decimal notation.
return IntNum

MkInt() public method

Create an integer numeral.
public MkInt ( uint v ) : IntNum
v uint value of the numeral.
return IntNum

MkInt() public method

Create an integer numeral.
public MkInt ( ulong v ) : IntNum
v ulong value of the numeral.
return IntNum

MkInt2BV() public method

Create an n bit bit-vector from the integer argument t.
NB. This function is essentially treated as uninterpreted. So you cannot expect Z3 to precisely reflect the semantics of this function when solving constraints with this function. The argument must be of integer sort.
public MkInt2BV ( uint n, IntExpr t ) : BitVecExpr
n uint
t IntExpr
return BitVecExpr

MkInt2Real() public method

Coerce an integer to a real.
There is also a converse operation 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 k and and asserting MakeInt2Real(k) <= t1 < MkInt2Real(k)+1. The argument must be of integer sort.
public MkInt2Real ( IntExpr t ) : RealExpr
t IntExpr
return RealExpr

MkIntConst() public method

Creates an integer constant.
public MkIntConst ( Symbol name ) : IntExpr
name Symbol
return IntExpr

MkIntConst() public method

Creates an integer constant.
public MkIntConst ( string name ) : IntExpr
name string
return IntExpr

MkIntSort() public method

Create a new integer sort.
public MkIntSort ( ) : IntSort
return IntSort

MkIsInteger() public method

Creates an expression that checks whether a real number is an integer.
public MkIsInteger ( RealExpr t ) : BoolExpr
t RealExpr
return BoolExpr

MkLe() public method

Create an expression representing t1 <= t2
public MkLe ( ArithExpr t1, ArithExpr t2 ) : BoolExpr
t1 ArithExpr
t2 ArithExpr
return BoolExpr

MkListSort() public method

Create a new list sort.
public MkListSort ( Symbol name, Microsoft.Z3.Sort elemSort ) : ListSort
name Symbol
elemSort Microsoft.Z3.Sort
return ListSort

MkListSort() public method

Create a new list sort.
public MkListSort ( string name, Microsoft.Z3.Sort elemSort ) : ListSort
name string
elemSort Microsoft.Z3.Sort
return ListSort

MkLt() public method

Create an expression representing t1 < t2
public MkLt ( ArithExpr t1, ArithExpr t2 ) : BoolExpr
t1 ArithExpr
t2 ArithExpr
return BoolExpr

MkMap() public method

Maps f on the argument arrays.
Eeach element of args must be of an array sort [domain_i -> range_i]. The function declaration f must have type range_1 .. range_n -> range. v must have sort range. The sort of the result is [domain_i -> range]. MkArraySort MkSelect MkStore
public MkMap ( FuncDecl f ) : ArrayExpr
f FuncDecl
return ArrayExpr

MkMod() public method

Create an expression representing t1 mod t2.
The arguments must have int type.
public MkMod ( IntExpr t1, IntExpr t2 ) : IntExpr
t1 IntExpr
t2 IntExpr
return IntExpr

MkMul() public method

Create an expression representing t[0] * t[1] * ....
public MkMul ( ) : ArithExpr
return ArithExpr

MkNot() public method

Mk an expression representing not(a).
public MkNot ( BoolExpr a ) : BoolExpr
a BoolExpr
return BoolExpr

MkNumeral() public method

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.
public MkNumeral ( int v, Microsoft.Z3.Sort ty ) : Expr
v int Value of the numeral
ty Microsoft.Z3.Sort Sort of the numeral
return Expr

MkNumeral() public method

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.
public MkNumeral ( long v, Microsoft.Z3.Sort ty ) : Expr
v long Value of the numeral
ty Microsoft.Z3.Sort Sort of the numeral
return Expr

MkNumeral() public method

Create a Term of a given sort.
public MkNumeral ( string v, Microsoft.Z3.Sort ty ) : Expr
v string A string representing the Term value in decimal notation. If the given sort is a real, then the Term can be a rational, that is, a string of the form [num]* / [num]*.
ty Microsoft.Z3.Sort The sort of the numeral. In the current implementation, the given sort can be an int, real, or bit-vectors of arbitrary size.
return Expr

MkNumeral() public method

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.
public MkNumeral ( uint v, Microsoft.Z3.Sort ty ) : Expr
v uint Value of the numeral
ty Microsoft.Z3.Sort Sort of the numeral
return Expr

MkNumeral() public method

Create a Term of a given sort. This function can be use to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.
public MkNumeral ( ulong v, Microsoft.Z3.Sort ty ) : Expr
v ulong Value of the numeral
ty Microsoft.Z3.Sort Sort of the numeral
return Expr

MkOr() public method

Create an expression representing t[0] or t[1] or ....
public MkOr ( ) : BoolExpr
return BoolExpr

MkParams() public method

Creates a new ParameterSet.
public MkParams ( ) : Params
return Params

MkPattern() public method

Create a quantifier pattern.
public MkPattern ( ) : Pattern
return Pattern

MkPower() public method

Create an expression representing t1 ^ t2.
public MkPower ( ArithExpr t1, ArithExpr t2 ) : ArithExpr
t1 ArithExpr
t2 ArithExpr
return ArithExpr

MkProbe() public method

Creates a new Probe.
public MkProbe ( string name ) : Probe
name string
return Probe

MkQuantifier() public method

Create a Quantifier.
public MkQuantifier ( bool universal, Expr boundConstants, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier
universal bool
boundConstants Expr
body Expr
weight uint
patterns Pattern
noPatterns Expr
quantifierID Symbol
skolemID Symbol
return Quantifier

MkQuantifier() public method

Create a Quantifier.
public MkQuantifier ( bool universal, Microsoft.Z3.Sort sorts, Symbol names, Expr body, uint weight = 1, Pattern patterns = null, Expr noPatterns = null, Symbol quantifierID = null, Symbol skolemID = null ) : Quantifier
universal bool
sorts Microsoft.Z3.Sort
names Symbol
body Expr
weight uint
patterns Pattern
noPatterns Expr
quantifierID Symbol
skolemID Symbol
return Quantifier

MkReal() public method

Create a real numeral.
public MkReal ( int v ) : RatNum
v int value of the numeral.
return RatNum

MkReal() public method

Create a real from a fraction.
public MkReal ( int num, int den ) : RatNum
num int numerator of rational.
den int denominator of rational.
return RatNum

MkReal() public method

Create a real numeral.
public MkReal ( long v ) : RatNum
v long value of the numeral.
return RatNum

MkReal() public method

Create a real numeral.
public MkReal ( string v ) : RatNum
v string A string representing the Term value in decimal notation.
return RatNum

MkReal() public method

Create a real numeral.
public MkReal ( uint v ) : RatNum
v uint value of the numeral.
return RatNum

MkReal() public method

Create a real numeral.
public MkReal ( ulong v ) : RatNum
v ulong value of the numeral.
return RatNum

MkReal2Int() public method

Coerce a real to an integer.
The semantics of this function follows the SMT-LIB standard for the function to_int. The argument must be of real sort.
public MkReal2Int ( RealExpr t ) : IntExpr
t RealExpr
return IntExpr

MkRealConst() public method

Creates a real constant.
public MkRealConst ( Symbol name ) : RealExpr
name Symbol
return RealExpr

MkRealConst() public method

Creates a real constant.
public MkRealConst ( string name ) : RealExpr
name string
return RealExpr

MkRealSort() public method

Create a real sort.
public MkRealSort ( ) : RealSort
return RealSort

MkRem() public method

Create an expression representing t1 rem t2.
The arguments must have int type.
public MkRem ( IntExpr t1, IntExpr t2 ) : IntExpr
t1 IntExpr
t2 IntExpr
return IntExpr

MkRepeat() public method

Bit-vector repetition.
The argument t must have a bit-vector sort.
public MkRepeat ( uint i, BitVecExpr t ) : BitVecExpr
i uint
t BitVecExpr
return BitVecExpr

MkSelect() public method

Array read.
The argument a is the array and i is the index of the array that gets read. The node a must have an array sort [domain -> range], and i must have the sort domain. The sort of the result is range. MkArraySort MkStore
public MkSelect ( ArrayExpr a, Expr i ) : Expr
a ArrayExpr
i Expr
return Expr

MkSetAdd() public method

Add an element to the set.
public MkSetAdd ( Expr set, Expr element ) : Expr
set Expr
element Expr
return Expr

MkSetComplement() public method

Take the complement of a set.
public MkSetComplement ( Expr arg ) : Expr
arg Expr
return Expr

MkSetDel() public method

Remove an element from a set.
public MkSetDel ( Expr set, Expr element ) : Expr
set Expr
element Expr
return Expr

MkSetDifference() public method

Take the difference between two sets.
public MkSetDifference ( Expr arg1, Expr arg2 ) : Expr
arg1 Expr
arg2 Expr
return Expr

MkSetIntersection() public method

Take the intersection of a list of sets.
public MkSetIntersection ( ) : Expr
return Expr

MkSetMembership() public method

Check for set membership.
public MkSetMembership ( Expr elem, Expr set ) : Expr
elem Expr
set Expr
return Expr

MkSetSort() public method

Create a set type.
public MkSetSort ( Microsoft.Z3.Sort ty ) : SetSort
ty Microsoft.Z3.Sort
return SetSort

MkSetSubset() public method

Check for subsetness of sets.
public MkSetSubset ( Expr arg1, Expr arg2 ) : Expr
arg1 Expr
arg2 Expr
return Expr

MkSetUnion() public method

Take the union of a list of sets.
public MkSetUnion ( ) : Expr
return Expr

MkSignExt() public method

Bit-vector sign extension.
Sign-extends the given bit-vector to the (signed) equivalent bitvector of size m+i, where \c m is the size of the given bit-vector. The argument t must have a bit-vector sort.
public MkSignExt ( uint i, BitVecExpr t ) : BitVecExpr
i uint
t BitVecExpr
return BitVecExpr

MkSimpleSolver() public method

Creates a new (incremental) solver.
public MkSimpleSolver ( ) : Solver
return Solver

MkSolver() public method

Creates a new (incremental) solver.
This solver also uses a set of builtin tactics for handling the first check-sat command, and check-sat commands that take more than a given number of milliseconds to be solved.
public MkSolver ( Symbol logic = null ) : Solver
logic Symbol
return Solver

MkSolver() public method

Creates a solver that is implemented using the given tactic.
The solver supports the commands Push and Pop, but it will always solve each check from scratch.
public MkSolver ( Microsoft.Z3.Tactic t ) : Solver
t Microsoft.Z3.Tactic
return Solver

MkSolver() public method

Creates a new (incremental) solver.
public MkSolver ( string logic ) : Solver
logic string
return Solver

MkStore() public method

Array update.
The node a must have an array sort [domain -> range], i must have sort domain, v must have sort range. The sort of the result is [domain -> range]. The semantics of this function is given by the theory of arrays described in the SMT-LIB standard. See http://smtlib.org for more details. The result of this function is an array that is equal to a (with respect to select) on all indices except for i, where it maps to v (and the select of a with respect to i may be a different value). MkArraySort MkSelect
public MkStore ( ArrayExpr a, Expr i, Expr v ) : ArrayExpr
a ArrayExpr
i Expr
v Expr
return ArrayExpr

MkSub() public method

Create an expression representing t[0] - t[1] - ....
public MkSub ( ) : ArithExpr
return ArithExpr

MkSymbol() public method

Creates a new symbol using an integer.
Not all integers can be passed to this function. The legal range of unsigned integers is 0 to 2^30-1.
public MkSymbol ( int i ) : IntSymbol
i int
return IntSymbol

MkSymbol() public method

Create a symbol using a string.
public MkSymbol ( string name ) : StringSymbol
name string
return StringSymbol

MkTactic() public method

Creates a new Tactic.
public MkTactic ( string name ) : Microsoft.Z3.Tactic
name string
return Microsoft.Z3.Tactic

MkTermArray() public method

Access the array default value.
Produces the default range value, for arrays that can be represented as finite maps with a default range value.
public MkTermArray ( ArrayExpr array ) : Expr
array ArrayExpr
return Expr

MkTrue() public method

The true Term.
public MkTrue ( ) : BoolExpr
return BoolExpr

MkTupleSort() public method

Create a new tuple sort.
public MkTupleSort ( Symbol name, Symbol fieldNames, Microsoft.Z3.Sort fieldSorts ) : TupleSort
name Symbol
fieldNames Symbol
fieldSorts Microsoft.Z3.Sort
return TupleSort

MkUnaryMinus() public method

Create an expression representing -t.
public MkUnaryMinus ( ArithExpr t ) : ArithExpr
t ArithExpr
return ArithExpr

MkUninterpretedSort() public method

Create a new uninterpreted sort.
public MkUninterpretedSort ( Symbol s ) : UninterpretedSort
s Symbol
return UninterpretedSort

MkUninterpretedSort() public method

Create a new uninterpreted sort.
public MkUninterpretedSort ( string str ) : UninterpretedSort
str string
return UninterpretedSort

MkXor() public method

Create an expression representing t1 xor t2.
public MkXor ( BoolExpr t1, BoolExpr t2 ) : BoolExpr
t1 BoolExpr
t2 BoolExpr
return BoolExpr

MkZeroExt() public method

Bit-vector zero extension.
Extend the given bit-vector with zeros to the (unsigned) equivalent bitvector of size m+i, where \c m is the size of the given bit-vector. The argument t must have a bit-vector sort.
public MkZeroExt ( uint i, BitVecExpr t ) : BitVecExpr
i uint
t BitVecExpr
return BitVecExpr

Not() public method

Create a probe that evaluates to "true" when the value p does not evaluate to "true".
public Not ( Probe p ) : Probe
p Probe
return Probe

Or() public method

Create a probe that evaluates to "true" when the value p1 or p2 evaluate to "true".
public Or ( Probe p1, Probe p2 ) : Probe
p1 Probe
p2 Probe
return Probe

OrElse() public method

Create a tactic that first applies t1 to a Goal and if it fails then returns the result of t2 applied to the Goal.
public OrElse ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic
t1 Microsoft.Z3.Tactic
t2 Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

ParAndThen() public method

Create a tactic that applies t1 to a given goal and then t2 to every subgoal produced by t1. The subgoals are processed in parallel.
public ParAndThen ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic
t1 Microsoft.Z3.Tactic
t2 Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

ParOr() public method

Create a tactic that applies the given tactics in parallel.
public ParOr ( ) : Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

ParseSMTLIB2File() public method

Parse the given file using the SMT-LIB2 parser.
public ParseSMTLIB2File ( string fileName, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : BoolExpr
fileName string
sortNames Symbol
sorts Microsoft.Z3.Sort
declNames Symbol
decls FuncDecl
return BoolExpr

ParseSMTLIB2String() public method

Parse the given string using the SMT-LIB2 parser.
public ParseSMTLIB2String ( string str, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : BoolExpr
str string
sortNames Symbol
sorts Microsoft.Z3.Sort
declNames Symbol
decls FuncDecl
return BoolExpr

ParseSMTLIBFile() public method

Parse the given file using the SMT-LIB parser.
public ParseSMTLIBFile ( string fileName, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : void
fileName string
sortNames Symbol
sorts Microsoft.Z3.Sort
declNames Symbol
decls FuncDecl
return void

ParseSMTLIBString() public method

Parse the given string using the SMT-LIB parser.
The symbol table of the parser can be initialized using the given sorts and declarations. The symbols in the arrays sortNames and declNames don't need to match the names of the sorts and declarations in the arrays sorts and decls. This is a useful feature since we can use arbitrary names to reference sorts and declarations.
public ParseSMTLIBString ( string str, Symbol sortNames = null, Microsoft.Z3.Sort sorts = null, Symbol declNames = null, FuncDecl decls = null ) : void
str string
sortNames Symbol
sorts Microsoft.Z3.Sort
declNames Symbol
decls FuncDecl
return void

ProbeDescription() public method

Returns a string containing a description of the probe with the given name.
public ProbeDescription ( string name ) : string
name string
return string

Repeat() public method

Create a tactic that keeps applying t until the goal is not modified anymore or the maximum number of iterations max is reached.
public Repeat ( Microsoft.Z3.Tactic t, uint max = uint.MaxValue ) : Microsoft.Z3.Tactic
t Microsoft.Z3.Tactic
max uint
return Microsoft.Z3.Tactic

SimplifyHelp() public method

Return a string describing all available parameters to Expr.Simplify.
public SimplifyHelp ( ) : string
return string

Skip() public method

Create a tactic that just returns the given goal.
public Skip ( ) : Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

TacticDescription() public method

Returns a string containing a description of the tactic with the given name.
public TacticDescription ( string name ) : string
name string
return string

Then() public method

Create a tactic that applies t1 to a Goal and then t2 to every subgoal produced by t1.
Shorthand for AndThen.
public Then ( Microsoft.Z3.Tactic t1, Microsoft.Z3.Tactic t2 ) : Microsoft.Z3.Tactic
t1 Microsoft.Z3.Tactic
t2 Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

ToggleWarningMessages() public static method

Enable/disable printing of warning messages to the console.
Note that this function is static and effects the behaviour of all contexts globally.
public static ToggleWarningMessages ( bool enabled ) : void
enabled bool
return void

TryFor() public method

Create a tactic that applies t to a goal for ms milliseconds.
If t does not terminate within ms milliseconds, then it fails.
public TryFor ( Microsoft.Z3.Tactic t, uint ms ) : Microsoft.Z3.Tactic
t Microsoft.Z3.Tactic
ms uint
return Microsoft.Z3.Tactic

UnwrapAST() public method

Unwraps an AST.
This function is used for transitions between native and managed objects. It returns the native pointer to the AST. Note that AST objects are reference counted and unwrapping an AST disables automatic reference counting, i.e., all references to the IntPtr that is returned must be handled externally and through native calls (see e.g., Native.Z3_inc_ref).
public UnwrapAST ( AST a ) : IntPtr
a AST The AST to unwrap.
return System.IntPtr

UpdateParamValue() public method

Update a mutable configuration parameter.
The list of all configuration parameters can be obtained using the Z3 executable: z3.exe -p Only a few configuration parameters are mutable once the context is created. An exception is thrown when trying to modify an immutable parameter.
public UpdateParamValue ( string id, string value ) : void
id string
value string
return void

UsingParams() public method

Create a tactic that applies t using the given set of parameters p.
public UsingParams ( Microsoft.Z3.Tactic t, Params p ) : Microsoft.Z3.Tactic
t Microsoft.Z3.Tactic
p Params
return Microsoft.Z3.Tactic

When() public method

Create a tactic that applies t to a given goal if the probe p evaluates to true.
If p evaluates to false, then the new tactic behaves like the skip tactic.
public When ( Probe p, Microsoft.Z3.Tactic t ) : Microsoft.Z3.Tactic
p Probe
t Microsoft.Z3.Tactic
return Microsoft.Z3.Tactic

With() public method

Create a tactic that applies t using the given set of parameters p.
Alias for UsingParams
public With ( Microsoft.Z3.Tactic t, Params p ) : Microsoft.Z3.Tactic
t Microsoft.Z3.Tactic
p Params
return Microsoft.Z3.Tactic

WrapAST() public method

Wraps an AST.
This function is used for transitions between native and managed objects. Note that nativeObject must be a native object obtained from Z3 (e.g., through UnwrapAST) and that it must have a correct reference count (see e.g., Native.Z3_inc_ref.
public WrapAST ( IntPtr nativeObject ) : AST
nativeObject System.IntPtr The native pointer to wrap.
return AST