z3-z3-4.13.0.src.muz.spacer.spacer_farkas_learner.h Maven / Gradle / Ivy
The newest version!
/*++
Copyright (c) 2011 Microsoft Corporation
Module Name:
spacer_farkas_learner.h
Abstract:
SMT2 interface for the datalog SPACER
Author:
Krystof Hoder (t-khoder) 2011-11-1.
Revision History:
--*/
#pragma once
#include "ast/ast.h"
namespace spacer {
class farkas_learner {
typedef obj_hashtable expr_set;
bool m_split_literals;
void combine_constraints(unsigned cnt, app * const * constrs, rational const * coeffs, expr_ref& res);
bool is_farkas_lemma(ast_manager& m, expr* e);
void get_asserted(proof* p, expr_set const& bs, ast_mark& b_closed, obj_hashtable& lemma_set, expr_ref_vector& lemmas);
bool is_pure_expr(func_decl_set const& symbs, expr* e, ast_manager& m) const;
public:
farkas_learner(): m_split_literals(false) {}
/**
Traverse a proof and retrieve lemmas using the vocabulary from bs.
*/
void get_lemmas(proof* root, expr_set const& bs, expr_ref_vector& lemmas);
void collect_statistics(statistics& st) const {}
void reset_statistics() {}
/** \brief see smt::farkas_util::set_split_literals */
void set_split_literals(bool v) {m_split_literals = v;}
};
}