All Downloads are FREE. Search and download functionalities are using the official Maven repository.

z3-z3-4.13.0.src.sat.smt.pb_solver_interface.h Maven / Gradle / Ivy

The newest version!
/*++
Copyright (c) 2017 Microsoft Corporation

Module Name:

    pb_solver_interface.h

Abstract:
 
    Abstract interface for a solver,
    covers functionality exposed by the sat and lookahead solvers.

Author:

    Nikolaj Bjorner (nbjorner) 2017-01-30

Revision History:

--*/

#pragma once 

#include "sat/sat_types.h"
#include "sat/sat_solver.h"
#include "sat/smt/sat_smt.h"


namespace pb {

    typedef sat::literal literal;
    typedef sat::bool_var bool_var;
    typedef sat::literal_vector literal_vector;
    typedef std::pair wliteral;
    class constraint;

    class solver_interface {
    public:
        virtual ~solver_interface() = default;
        virtual lbool value(bool_var v) const = 0;
        virtual lbool value(literal lit) const = 0;
        virtual bool is_false(literal lit) const = 0;
        virtual unsigned lvl(literal lit) const = 0;
        virtual unsigned lvl(bool_var v) const = 0;
        virtual bool inconsistent() const = 0;
        virtual sat::watch_list& get_wlist(literal l) = 0;
        virtual sat::watch_list const& get_wlist(literal l) const = 0;
        virtual void assign(literal l, sat::justification j) = 0; 
        virtual void set_conflict(sat::justification j, literal l) = 0;
        virtual sat::config const& get_config() const = 0;
        virtual void assign(constraint& c, literal lit) = 0;
        virtual void set_conflict(constraint& c, literal lit) = 0;
    };
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy