public ExplorationState(Path path, CallSiteStack callSiteStack, SmtSolverHandler solverHandler) { Contract.Requires(path != null); Contract.Requires(solverHandler != null); this.Path = path; this.CallSiteStack = callSiteStack; this.SolverHandler = solverHandler; }
public SmtSolverHandler Clone() { var cloned = new SmtSolverHandler(this.contextHandler, this.smtSolver, this.pathConditionHandler); cloned.lastResult = this.lastResult; cloned.LastResultKind = this.LastResultKind; // TODO: Clone the underlying SMT solver and path condition handler! // TODO: Clone the variable versions of the latter! (we need to make the overlay cloneable/enumerable) // TODO: Clone the symbolic heap! throw new NotImplementedException(); }
public void Merge(ExplorationState state, SmtSolverHandler solverHandler) { Contract.Requires(state != null); Contract.Requires(solverHandler != null); Contract.Requires(state.Path.Node == this.Path.Node); Contract.Requires(state.CallSiteStack.Equals(this.CallSiteStack)); this.Path = new Path( this.Path.Preceeding.AddRange(state.Path.Preceeding), Math.Max(this.Path.Depth, state.Path.Depth), this.Path.Node, this.Path.LeadingEdges.AddRange(state.Path.LeadingEdges)); this.SolverHandler = solverHandler; }
public SolverSymbolicHeapContext(SmtSolverHandler owner) { this.owner = owner; }