Home Docs Download Mail FAQ Awards Status MSR

Z3 An Efficient SMT Solver

Managed (.NET) API


Data Structures

class  Symbol
 Symbol. More...
class  Z3Error
 Z3 error exceptions contain an ErrorCode. More...
interface  IErrorHandler
 IErrorHandler is an abstract (interface) class for passing an error handler. More...
class  LabeledLiterals
 Container for labeled literals. More...
class  Constructor
 Container for constructor declarations. More...
class  Config
 Configuration. More...
interface  IRawParameter
 Z3 Parameter values. More...
class  RawArrayValue
 Z3 Array Value object. More...
class  RawFunctionEntry
 Z3 Function entry object. More...
class  RawFunctionGraph
 Z3 Function graph object. More...
class  RawModel
 Z3 RawModel object. More...
class  RawContext
 Z3 API object. More...
class  Context
 Type safe contexts. More...

Enumerations

enum  LBool
 Lifted Booleans. More...
enum  ErrorCode
 Z3 error codes. More...
enum  PrintMode
 Z3 pretty printing modes used when pretty printing terms. More...
enum  SymbolKind
 In Z3, a symbol can be represented using integers and strings (See GetSymbolKind). More...
enum  SortKind
 The different kinds of Z3 sorts (See GetSortKind). More...
enum  SearchFailureExplanation
 Different failure kinds. More...
enum  TermKind
 The different kinds of Z3 Terms. More...
enum  DeclKind
 Different kinds of Z3 built-in declarations (See GetDeclKind). More...

Enumeration Type Documentation

enum DeclKind

Different kinds of Z3 built-in declarations (See GetDeclKind).

Definition at line 266 of file Microsoft.Z3.h.

00267     {
00268         // Basic operators
00269         True,
00270         False,
00271         Eq,
00272         Distinct,
00273         Ite,
00274         And,
00275         Or,
00276         Iff,
00277         Xor,
00278         Not,
00279         Implies,
00280         // Arithmetic
00281         ArithNum,
00282         Le,
00283         Ge,
00284         Lt,
00285         Gt,
00286         Add,
00287         Sub,
00288         Uminus,
00289         Mul,
00290         Div,
00291         IDiv,
00292         Rem,
00293         Mod,
00294         // Arrays
00295         Store,
00296         Select,
00297         ConstArray,
00298         DefaultArray,
00299         MapArray,
00300         Union,
00301         Intersect,
00302         Difference,
00303         Complement,
00304         Subset,
00305         // Bit-vectors.            
00306 
00307         BitNum,
00308         Bit1,
00309         Bit0,
00310         BNeg,
00311         BAdd,
00312         BSub,
00313         BMul,
00314         BSDiv,
00315         BUDiv,
00316         BSRem,
00317         BURem,
00318         BSMod,
00319 
00320         BSDiv0,
00321         BUDiv0,
00322         BSRem0,
00323         BURem0,
00324         BSMod0,
00325         BULeq,
00326         BSLeq,
00327         BUGeq,
00328         BSGeq,
00329         BULt,
00330         BSLt,
00331         BUGt,
00332         BSGt,
00333         BAnd,
00334         BOr,
00335         BNot,
00336         BXor,
00337         BNand,
00338         BNor,
00339         BXnor,
00340         BConcat,
00341         BSignExt,
00342         BZeroExt,
00343         BExtract,
00344         BRepeat,
00345         BRedOr,
00346         BRedAnd,
00347         BComp,
00348 
00349         BShl,
00350         BLShr,
00351         BAShr,
00352         BRotateLeft,
00353         BRotateRight,
00354         BInt2Bv,
00355         BBv2Int,
00356 
00357         PrAsserted,
00358         PrGoal,
00359         PrModusPonens,
00360         PrReflexivity,
00361         PrTransitivity,
00362         PrTransitivityStar,
00363         PrSymmetry,
00364         PrMonotonicity,
00365         PrQuantIntro,
00366         PrDistributivity,
00367         PrAndElim,
00368         PrNotOrElim,
00369         PrRewrite,
00370         PrRewriteStar,
00371         PrPullQuant,
00372         PrPullQuantStar,
00373         PrPushQuant,
00374         PrElimUnusedVars,
00375         PrDer,
00376         PrQuantInst,
00377         PrHypothesis,
00378         PrLemma,
00379         PrUnitResolution,
00380         PrIffTrue,
00381         PrIffFalse,
00382         PrCommutativity,
00383         PrDefAxiom,
00384         PrDefIntro,
00385         PrApplyDef,
00386         PrIffOeq,            
00387         PrNnfPos,
00388         PrNnfNeg,
00389         PrNnfStar,
00390         PrSkolemize,
00391         PrCnfStar,
00392         PrModusPonensOeq,
00393         PrThLemma,
00394         Uninterpreted            
00395     };

enum ErrorCode

Z3 error codes.

  • Ok,
  • TypeError: User tried to build an invalid (type incorrect) AST.
  • IndexOutOfBounds: Index out of bounds
  • InvalidArgument:: Invalid argument was provided
  • ParserError: An error occurred when parsing a string or file.
  • NoParser: Parser output is not available, that is, user didn't invoke ParseSmtlibString or ParseSmtlibFile.
  • InvalidPattern: An invalid pattern was used to build a quantifier.
  • InternalFatal: An internal fatal error was encountered.
  • FileAccessError: File access failed for an inaccessible file.
  • NonDisposedConfig A configuration was not disposed explictly.
  • NonDisposedContext: A context was not disposed explictly.
  • NonDisposedLiterals: A conflict literal set was not disposed explicitly.
  • NonDisposedModel: A model was not disposed of explicitly.

There is no error code for out of memory errors. Z3 will throw the library exception OutOfMemoryException if memory allocation fails. Users should call ResetMemory() to reclaim all allocated resources.

Definition at line 104 of file Microsoft.Z3.h.

00105     {
00106         Ok,
00107         TypeError,
00108         IndexOutOfBounds,
00109         InvalidArgument,
00110         ParserError,
00111         NoParser,
00112         InvalidPattern,
00113         InternalFatal,
00114         FileAccessError,
00115         NonDisposedConfig,
00116         NonDisposedContext,
00117         NonDisposedLiterals,
00118         NonDisposedModel
00119     };

enum LBool

Lifted Booleans.

The result of m_context->Check() is a lifted Boolean. When Z3 is unable to decide whether the result is satisfiable or unsatisfiable it returns Undef.

Definition at line 73 of file Microsoft.Z3.h.

00074     {
00075         True,
00076         False,
00077         Undef
00078     };

enum PrintMode

Z3 pretty printing modes used when pretty printing terms.

  • SmtlibFull: Print AST nodes in SMTLIB verbose format.
  • LowLevel: Print AST nodes using a low-level format.

Definition at line 127 of file Microsoft.Z3.h.

00128     {
00129         SmtlibFull,
00130         LowLevel
00131     };

enum SearchFailureExplanation

Different failure kinds.

  • NoFailure
  • Unknown:
  • TimeOut:
  • MemOut:
  • UserCanceled:
  • MaxConflicts:
  • Theory:
  • Quantifiers:

Definition at line 232 of file Microsoft.Z3.h.

00233     {
00234         NoFailure,
00235         Unknown,
00236         TimeOut,
00237         MemOut,
00238         UserCanceled,
00239         MaxConflicts,
00240         Theory,
00241         Quantifiers
00242     };

enum SortKind

The different kinds of Z3 sorts (See GetSortKind).

Definition at line 207 of file Microsoft.Z3.h.

00208     {
00209         Uninterpreted,
00210         Bool,
00211         Int,
00212         Real,
00213         BitVector,
00214         Array,
00215         Datatype,
00216         Unknown
00217     };

enum SymbolKind

In Z3, a symbol can be represented using integers and strings (See GetSymbolKind).

See also:
MkIntSymbol

MkStringSymbol

Definition at line 198 of file Microsoft.Z3.h.

00199     {
00200         Int, 
00201         String
00202     };

enum TermKind

The different kinds of Z3 Terms.

  • Numeral: numerals
  • App: constant and applications
  • Var: bound variables
  • Quantifier: quantifiers
  • Unknown: internal

Definition at line 253 of file Microsoft.Z3.h.

00254     {
00255         Numeral,
00256         App,
00257         Var,
00258         Quantifier,
00259         Unknown
00260     };

Last modified Thu Nov 12 16:35:56 2009