3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-18 16:09:30 +00:00

Debugging

This commit is contained in:
CEisenhofer 2026-04-08 18:48:47 +02:00
parent 86dc9d3268
commit 513f49f39c
4 changed files with 39 additions and 20 deletions

View file

@ -1328,7 +1328,7 @@ namespace seq {
if (m_max_nodes > 0 && m_stats.m_num_dfs_nodes > m_max_nodes)
return search_result::unknown;
// revisit detection: if already visited this run, return cached status.
// revisit detection: if already visited this run (e.g., iterative deepening), return cached status.
// mirrors ZIPT's NielsenNode.GraphExpansion() evalIdx check.
if (node->eval_idx() == m_run_idx) {
if (node->is_satisfied()) {
@ -3678,8 +3678,6 @@ namespace seq {
// We enumerate all nodes rather than having a "todo"-list, as
// hypothetically the graph could contain cycles in the future
for (nielsen_node const* n : m_nodes) {
if (n->eval_idx() != m_run_idx)
continue;
if (n->reason() == backtrack_reason::children_failed)
continue;
@ -3687,6 +3685,7 @@ namespace seq {
if (n->m_conflict_external_literal != sat::null_literal) {
// We know from the outer solver that this literal is assigned false
deps = m_dep_mgr.mk_join(deps, m_dep_mgr.mk_leaf(n->m_conflict_external_literal));
std::cout << "External literal: " << n->m_conflict_external_literal << std::endl;
if (n->m_conflict_internal)
deps = m_dep_mgr.mk_join(deps, n->m_conflict_internal);
continue;

View file

@ -244,7 +244,7 @@ Author:
#include "ast/euf/euf_sgraph.h"
#include <map>
#include "model/model.h"
#include "sat/smt/arith_solver.h"
namespace smt {
class enode;
@ -575,6 +575,8 @@ namespace seq {
vector<constraint> const& constraints() const { return m_constraints; }
vector<constraint>& constraints() { return m_constraints; }
sat::literal get_external_conflict_literal() const { return m_conflict_external_literal; }
// Query current bounds for a variable from the arithmetic subsolver.
// Falls der Subsolver keinen Bound liefert, werden konservative Defaults
// 0 / UINT_MAX verwendet.

View file

@ -580,8 +580,10 @@ namespace seq {
<< n->id() << ": ";
n->to_html(out, names, next_id, m);
// append conflict reason if this is a direct conflict
if (is_actual_conflict(n->reason()))
if (n->is_currently_conflict())
out << "<br/>" << reason_to_str(n->reason());
if (n->reason() == backtrack_reason::external)
out << "<br/>" << n->get_external_conflict_literal();
out << ">";
// colour