cprover
aig_prop_solvert Class Reference

#include <aig_prop.h>

Inheritance diagram for aig_prop_solvert:
[legend]
Collaboration diagram for aig_prop_solvert:
[legend]

Public Member Functions

 aig_prop_solvert (propt &_solver)
 
const std::string solver_text () override
 
tvt l_get (literalt a) const override
 
resultt prop_solve () override
 
void set_message_handler (message_handlert &m) override
 
- Public Member Functions inherited from aig_prop_constraintt
 aig_prop_constraintt (aig_plus_constraintst &_dest)
 
bool has_set_to () const override
 
void lcnf (const bvt &clause) override
 
void l_set_to (literalt a, bool value) override
 
- Public Member Functions inherited from aig_prop_baset
 aig_prop_baset (aigt &_dest)
 
bool cnf_handled_well () const override
 
literalt land (literalt a, literalt b) override
 
literalt lor (literalt a, literalt b) override
 
literalt land (const bvt &bv) override
 
literalt lor (const bvt &bv) override
 
literalt lxor (literalt a, literalt b) override
 
literalt lxor (const bvt &bv) override
 
literalt lnand (literalt a, literalt b) override
 
literalt lnor (literalt a, literalt b) override
 
literalt lequal (literalt a, literalt b) override
 
literalt limplies (literalt a, literalt b) override
 
literalt lselect (literalt a, literalt b, literalt c) override
 
void set_equal (literalt a, literalt b) override
 asserts a==b in the propositional formula More...
 
literalt new_variable () override
 
size_t no_variables () const override
 
- Public Member Functions inherited from propt
 propt ()
 
virtual ~propt ()
 
void l_set_to_true (literalt a)
 
void l_set_to_false (literalt a)
 
void lcnf (literalt l0, literalt l1)
 
void lcnf (literalt l0, literalt l1, literalt l2)
 
void lcnf (literalt l0, literalt l1, literalt l2, literalt l3)
 
virtual void set_assumptions (const bvt &_assumptions)
 
virtual bool has_set_assumptions () const
 
virtual void set_variable_name (literalt a, const std::string &name)
 
bvt new_variables (std::size_t width)
 generates a bitvector of given width with new variables More...
 
virtual void set_assignment (literalt a, bool value)
 
virtual void copy_assignment_from (const propt &prop)
 
virtual bool is_in_conflict (literalt l) const
 
virtual bool has_is_in_conflict () const
 
virtual void set_frozen (literalt a)
 
- Public Member Functions inherited from messaget
message_handlertget_message_handler ()
 
 messaget ()
 
 messaget (const messaget &other)
 
 messaget (message_handlert &_message_handler)
 
virtual ~messaget ()
 
mstreamtget_mstream (unsigned message_level)
 
mstreamterror ()
 
mstreamtwarning ()
 
mstreamtresult ()
 
mstreamtstatus ()
 
mstreamtstatistics ()
 
mstreamtprogress ()
 
mstreamtdebug ()
 
- Public Member Functions inherited from prop_assignmentt
virtual ~prop_assignmentt ()
 

Public Attributes

aig_plus_constraintst aig
 
- Public Attributes inherited from aig_prop_constraintt
aig_plus_constraintstdest
 

Protected Member Functions

void convert_aig ()
 
void usage_count (std::vector< unsigned > &p_usage_count, std::vector< unsigned > &n_usage_count)
 Compact encoding for single usage variable. More...
 
void compute_phase (std::vector< bool > &n_pos, std::vector< bool > &n_neg)
 Compute the phase information needed for Plaisted-Greenbaum encoding. More...
 
void convert_node (unsigned n, const aigt::nodet &node, bool n_pos, bool n_neg, std::vector< unsigned > &p_usage_count, std::vector< unsigned > &n_usage_count)
 Convert one AIG node, including special handling of a couple of cases. More...
 

Protected Attributes

proptsolver
 
- Protected Attributes inherited from aig_prop_baset
aigtdest
 
- Protected Attributes inherited from propt
bvt lcnf_bv
 
- Protected Attributes inherited from messaget
message_handlertmessage_handler
 
mstreamt mstream
 

Additional Inherited Members

- Public Types inherited from propt
enum  resultt { resultt::P_SATISFIABLE, resultt::P_UNSATISFIABLE, resultt::P_ERROR }
 
- Public Types inherited from messaget
enum  message_levelt {
  M_ERROR =1, M_WARNING =2, M_RESULT =4, M_STATUS =6,
  M_STATISTICS =8, M_PROGRESS =9, M_DEBUG =10
}
 
- Static Public Member Functions inherited from messaget
static mstreamteom (mstreamt &m)
 
static mstreamtendl (mstreamt &m)
 

Detailed Description

Definition at line 90 of file aig_prop.h.

Constructor & Destructor Documentation

◆ aig_prop_solvert()

aig_prop_solvert::aig_prop_solvert ( propt _solver)
inlineexplicit

Definition at line 93 of file aig_prop.h.

Member Function Documentation

◆ compute_phase()

void aig_prop_solvert::compute_phase ( std::vector< bool > &  n_pos,
std::vector< bool > &  n_neg 
)
protected

Compute the phase information needed for Plaisted-Greenbaum encoding.

parameters: Two vectors of bools of size aig.nodes.size()
Returns
These vectors filled in with per node phase information

Definition at line 164 of file aig_prop.cpp.

References aig_nodet::a, aig, aig_nodet::b, aig_plus_constraintst::constraints, messaget::eom(), aig_nodet::is_and(), literalt::is_constant(), aigt::nodes, literalt::sign(), messaget::statistics(), and literalt::var_no().

Referenced by convert_aig().

◆ convert_aig()

void aig_prop_solvert::convert_aig ( )
protected

◆ convert_node()

void aig_prop_solvert::convert_node ( unsigned  n,
const aigt::nodet node,
bool  n_pos,
bool  n_neg,
std::vector< unsigned > &  p_usage_count,
std::vector< unsigned > &  n_usage_count 
)
protected

Convert one AIG node, including special handling of a couple of cases.

parameters: The node to convert, the phases required and the usage
counts.
Returns
The node converted to CNF in the solver object.

Definition at line 340 of file aig_prop.cpp.

References aig_nodet::a, aig, aig_nodet::b, forall_literals, aig_nodet::is_and(), propt::lcnf(), neg(), aigt::nodes, pos(), literalt::sign(), size_type(), solver, and literalt::var_no().

Referenced by convert_aig().

◆ l_get()

tvt aig_prop_solvert::l_get ( literalt  a) const
overridevirtual

Reimplemented from aig_prop_baset.

Definition at line 147 of file aig_prop.cpp.

References propt::l_get(), and solver.

◆ prop_solve()

propt::resultt aig_prop_solvert::prop_solve ( )
overridevirtual

Reimplemented from aig_prop_baset.

Definition at line 152 of file aig_prop.cpp.

References aig, convert_aig(), messaget::eom(), aigt::nodes, propt::prop_solve(), solver, and messaget::status().

◆ set_message_handler()

void aig_prop_solvert::set_message_handler ( message_handlert m)
inlineoverridevirtual

Reimplemented from messaget.

Definition at line 111 of file aig_prop.h.

References messaget::set_message_handler(), and solver.

◆ solver_text()

const std::string aig_prop_solvert::solver_text ( )
inlineoverridevirtual

Reimplemented from aig_prop_baset.

Definition at line 101 of file aig_prop.h.

References solver, and propt::solver_text().

◆ usage_count()

void aig_prop_solvert::usage_count ( std::vector< unsigned > &  p_usage_count,
std::vector< unsigned > &  n_usage_count 
)
protected

Compact encoding for single usage variable.

parameters: Two vectors of unsigned of size aig.nodes.size()
Returns
These vectors filled in with per node usage information

Definition at line 229 of file aig_prop.cpp.

References aig_nodet::a, aig, aig_nodet::b, aig_plus_constraintst::constraints, messaget::eom(), aig_nodet::is_and(), aigt::nodes, literalt::sign(), messaget::statistics(), and literalt::var_no().

Referenced by convert_aig().

Member Data Documentation

◆ aig

aig_plus_constraintst aig_prop_solvert::aig

Definition at line 99 of file aig_prop.h.

Referenced by compute_phase(), convert_aig(), convert_node(), prop_solve(), and usage_count().

◆ solver

propt& aig_prop_solvert::solver
protected

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