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

z3-z3-4.12.6.src.sat.smt.q_clause.cpp Maven / Gradle / Ivy

There is a newer version: 4.13.0.1
Show newest version
/*++
Copyright (c) 2020 Microsoft Corporation

Module Name:

    q_clause.cpp

Abstract:

    Clause and literals

Author:

    Nikolaj Bjorner (nbjorner) 2021-01-24

--*/

#include "sat/smt/q_clause.h"


namespace q {

    std::ostream& lit::display(std::ostream& out) const {
        ast_manager& m = lhs.m();
        if (m.is_true(rhs) && !sign) 
            return out << lhs;
        if (m.is_false(rhs) && !sign) 
            return out << "(not " << lhs << ")";
        return 
            out << mk_bounded_pp(lhs, m, 2) 
                << (sign ? " != " : " == ") 
                << mk_bounded_pp(rhs, m, 2);
    }

    std::ostream& binding::display(euf::solver& ctx, std::ostream& out) const {
        for (unsigned i = 0; i < size(); ++i) 
            out << ctx.bpp((*this)[i]) << " ";
        return out;
    }

    std::ostream& clause::display(euf::solver& ctx, std::ostream& out) const {
        out << "clause:\n";
        for (auto const& lit : m_lits)
            lit.display(out) << "\n";
        binding* b = m_bindings;
        if (!b)
            return out;
        do {
            b->display(ctx, out) << "\n";
            b = b->next();
        } 
        while (b != m_bindings);
        return out;
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy