class QBF_Literal;

#ifndef __QBF_QPC_H__
#define __QBF_QPC_H__
#include "qbf.hpp"
#include <list>
#include <string>
#include <boost/logic/tribool.hpp>
#include "variable.hpp"

class QBF_Literal : public QBF
{
public:
    /* member */
    Literal* literal;

    /* constructor */
    QBF_Literal(Literal* p);
    ~QBF_Literal(void);
    
    /* method */
    virtual std::string toString();
    virtual void update();
    virtual bool eval();
    virtual void propagate(unsigned long assigner_id, bool b); //
    virtual void reset_status(); //

private:
    // method
    virtual void update_prob();
    virtual void update_size();
    virtual void update_child_cost();
};
#endif
