- Main Page
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Mers::Generators::BFIG::BFIGImplicant Class Reference

`#include <BFIGImplicant.h>`

Inheritance diagram for Mers::Generators::BFIG::BFIGImplicant:

[legend]
Collaboration diagram for Mers::Generators::BFIG::BFIGImplicant:

[legend]
List of all members.

## Public Member Functions
bool | operator== (BFIGImplicant const *i) const
bool | operator== (BFIGImplicant const &i) const
bool | operator< (BFIGImplicant const &other) const
bool | operator> (BFIGImplicant const &other) const
| BFIGImplicant (const BFIGImplicant &i)
| BFIGImplicant (std::vector< BFIGAssignment const * > const &assignments_pList)
| BFIGImplicant (std::vector< BFIGConstraint const * > const &unentailedConflictsList, BFIGObjectiveFunction const *of=NULL)
| BFIGImplicant (std::vector< BFIGAssignment const * > const &assignments_pList, std::vector< BFIGConstraint const * > const &unentailedConflictsList)
| BFIGImplicant (bool noConflicts)
virtual | ~BFIGImplicant ()
std::vector< BFIGAssignment const * > | getAssignments () const
std::vector< BFIGAssignment const * > | getAssignmentsUnsorted () const
virtual void | addAssignment (BFIGAssignment const *a)
virtual double | getBestCost () const
virtual double | getTrueCost () const
bool | entailsAllConflicts () const
virtual std::vector< BFIGImplicant * > | generateChildren (std::vector< BFIGVariable * > const *varSet=NULL)
virtual BFIGImplicant * | generateSibling ()
BFIGImplicant * | extendByAssignment (BFIGAssignment const *a) const
bool | isEmpty () const
unsigned int | getLength () const
void | clear (bool noConflict=false)
void | addUnentailedConflict (BFIGConstraint const *c)
void | addUnentailedConflicts (std::vector< BFIGConstraint const * > const &cs)
virtual void | updateBestCost ()
bool | contains (BFIGAssignment const *a) const
bool | contains (BFIGVariable const *v) const
bool | compatible (BFIGAssignment const *a) const
bool | compatible (BFIGImplicant const &i) const
std::vector< BFIGConstraint const * > | getConstraints () const
void | markFeasible ()
bool | isMarkedFeasible () const
void | eliminateSiblings ()
bool | hasSiblings () const
bool | removeCurrentSibling ()
## Static Public Attributes
static bool | terse
## Protected Member Functions
| BFIGImplicant (BFIGImplicant const *i, BFIGAssignment const *extraAssignment)
| BFIGImplicant (BFIGImplicant *i, BFIGAssignment const *extraAssignment, std::vector< BFIGAssignment const * > siblingAssigns)
bool | entailsAllConflictsCheck ()
## Protected Attributes
std::vector< BFIGAssignment const * > | assignments
| Assignments that are selected as an implicant of a subset of the conflicts.
BFIGObjectiveFunction const * | objectiveFunction
| The objective function Used to determine the cost of the implicant. If objectiveFunction = NULL, the implicant will use the heritage approach of just adding the new assignment cost.
std::vector< BFIGConstraint const * > | unentailedConflicts
double | bestCost
| Best cost of the states encoded in the Implicant.
bool | essentialConflict
bool | markedFeasible
std::vector< BFIGAssignment const * > | siblingAssignments
BFIGImplicant * | siblingParent
## Static Protected Attributes
static Logger | mLogger
| The logger used to log all BFIGImplicant messages.
## Friends
std::ostream & | operator<< (std::ostream &, BFIGImplicant const &)

## Detailed Description

An implicant is a partial set of assignments of values to design variables. An implicant that does assigns a value to a proper subset of the design variables is a "partial implicant". Unassigned design variables in a partial implicant are treated as "don't cares". Partial implicants may be expanded to produce other partial implicants or full implicants (all design vars have a value assigned).

At a higher level, an implicant can be though of as a potential candidate that is ready to be presented to the SAT engine for consistency checking.

Definition at line 58 of file BFIGImplicant.h.

## Constructor & Destructor Documentation

BFIGImplicant::BFIGImplicant | ( | bool | noConflicts | ) |

This

Definition at line 175 of file BFIGImplicant.cpp.

References bestCost, and essentialConflict.

## Member Function Documentation

virtual std::vector<BFIGImplicant *> Mers::Generators::BFIG::BFIGImplicant::generateChildren | ( | std::vector< BFIGVariable * > const * | varSet = `NULL` | ) | `[virtual]`

Generates all child extensions to the implicant to cover the current conflicts. If varSet is given, it will be used to generate extensions beyond those needed to cover conflicts, should all the conflicts already be covered.

Parameters:

  | varSet | The set of variable to use to extend this implicant.

Returns:
  a vector of all of the children of this impicant which cover this impicant's conflicts.

Reimplemented in Mers::Generators::BFIG::BFIGImplicantNoMPI.

Referenced by Mers::Generators::BFIG::BFIG::insertChildren().

BFIGImplicant * BFIGImplicant::generateSibling | ( |  | ) | `[virtual]`

Generates and returns the sibling of this implicant, if any.

Returns:
  the next sibling of this implicant, if any. If there are none, then NULL is returned.

Reimplemented in Mers::Generators::BFIG::BFIGImplicantNoMPI.

Definition at line 577 of file BFIGImplicant.cpp.

References assignments, Mers::Generators::BFIG::BFIGAssignment::compatible(), siblingAssignments, and siblingParent.

Referenced by Mers::Generators::BFIG::BFIG::insertSiblings().

Here is the call graph for this function:

BFIGImplicant * BFIGImplicant::extendByAssignment | ( | BFIGAssignment const * | a | ) | const

Generates a new implicant that is an extension of this implicate, created by adding a to this implicant.

Parameters:

  | a | The assignment being added to this implicant.

Returns:
  a new implicant that is an extension of this implicant with the single assignment added.

Definition at line 656 of file BFIGImplicant.cpp.

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

- /Users/fpy/titan-1-5-MBARI/Mers/Generators/BFIG/BFIGImplicant.h
- /Users/fpy/titan-1-5-MBARI/Mers/Generators/BFIG/BFIGImplicant.cpp