CBMC
stack_decision_proceduret Class Referenceabstract

#include <stack_decision_procedure.h>

+ Inheritance diagram for stack_decision_proceduret:
+ Collaboration diagram for stack_decision_proceduret:

Public Member Functions

virtual void push (const std::vector< exprt > &assumptions)=0
 Pushes a new context on the stack that consists of the given (possibly empty vector of) assumptions. More...
 
virtual void push ()=0
 Push a new context on the stack This context becomes a child context nested in the current context. More...
 
virtual void pop ()=0
 Pop whatever is on top of the stack. More...
 
virtual ~stack_decision_proceduret ()=default
 
- Public Member Functions inherited from decision_proceduret
virtual void set_to (const exprt &expr, bool value)=0
 For a Boolean expression expr, add the constraint 'expr' if value is true, otherwise add 'not expr'. More...
 
void set_to_true (const exprt &expr)
 For a Boolean expression expr, add the constraint 'expr'. More...
 
void set_to_false (const exprt &expr)
 For a Boolean expression expr, add the constraint 'not expr'. More...
 
virtual exprt handle (const exprt &expr)=0
 Generate a handle, which is an expression that has the same value as the argument in any model that is generated; this offers an efficient way to refer to the expression in subsequent calls to get or set_to. More...
 
resultt operator() ()
 Run the decision procedure to solve the problem. More...
 
virtual exprt get (const exprt &expr) const =0
 Return expr with variables replaced by values from satisfying assignment if available. More...
 
virtual void print_assignment (std::ostream &out) const =0
 Print satisfying assignment to out. More...
 
virtual std::string decision_procedure_text () const =0
 Return a textual description of the decision procedure. More...
 
virtual std::size_t get_number_of_solver_calls () const =0
 Return the number of incremental solver calls. More...
 
virtual ~decision_proceduret ()
 

Additional Inherited Members

- Public Types inherited from decision_proceduret
enum  resultt { resultt::D_SATISFIABLE, resultt::D_UNSATISFIABLE, resultt::D_ERROR }
 Result of running the decision procedure. More...
 
- Protected Member Functions inherited from decision_proceduret
virtual resultt dec_solve ()=0
 Run the decision procedure to solve the problem. More...
 

Detailed Description

Definition at line 57 of file stack_decision_procedure.h.

Constructor & Destructor Documentation

◆ ~stack_decision_proceduret()

virtual stack_decision_proceduret::~stack_decision_proceduret ( )
virtualdefault

Member Function Documentation

◆ pop()

virtual void stack_decision_proceduret::pop ( )
pure virtual

Pop whatever is on top of the stack.

Popping from the empty stack results in an invariant violation.

Implemented in smt2_convt, prop_conv_solvert, and smt2_incremental_decision_proceduret.

◆ push() [1/2]

virtual void stack_decision_proceduret::push ( )
pure virtual

Push a new context on the stack This context becomes a child context nested in the current context.

Implemented in smt2_convt, prop_conv_solvert, and smt2_incremental_decision_proceduret.

◆ push() [2/2]

virtual void stack_decision_proceduret::push ( const std::vector< exprt > &  assumptions)
pure virtual

Pushes a new context on the stack that consists of the given (possibly empty vector of) assumptions.

This context becomes a child context nested in the current context. An assumption is usually obtained by calling decision_proceduret::handle. Thus it can be a Boolean expression or something more solver-specific such as literal_exprt. An empty vector of assumptions counts as an element on the stack (and therefore needs to be popped), but has no effect beyond that.

Implemented in prop_conv_solvert, smt2_incremental_decision_proceduret, and smt2_convt.


The documentation for this class was generated from the following file: