mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 11:25:51 +00:00
mv util/lp to math/lp
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
b6513b8e2d
commit
33cbd29ed0
150 changed files with 524 additions and 479 deletions
96
src/math/lp/nla_common.h
Normal file
96
src/math/lp/nla_common.h
Normal file
|
@ -0,0 +1,96 @@
|
|||
/*++
|
||||
Copyright (c) 2017 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
<name>
|
||||
|
||||
Abstract:
|
||||
|
||||
<abstract>
|
||||
|
||||
Author:
|
||||
Nikolaj Bjorner (nbjorner)
|
||||
Lev Nachmanson (levnach)
|
||||
|
||||
Revision History:
|
||||
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
#include "util/rational.h"
|
||||
#include "math/lp/nla_defs.h"
|
||||
#include "math/lp/lar_term.h"
|
||||
#include "math/lp/monomial.h"
|
||||
#include "math/lp/emonomials.h"
|
||||
#include "math/lp/factorization.h"
|
||||
namespace nla {
|
||||
|
||||
|
||||
inline llc negate(llc cmp) {
|
||||
switch(cmp) {
|
||||
case llc::LE: return llc::GT;
|
||||
case llc::LT: return llc::GE;
|
||||
case llc::GE: return llc::LT;
|
||||
case llc::GT: return llc::LE;
|
||||
case llc::EQ: return llc::NE;
|
||||
case llc::NE: return llc::EQ;
|
||||
default: SASSERT(false);
|
||||
};
|
||||
return cmp; // not reachable
|
||||
}
|
||||
|
||||
class core;
|
||||
struct common {
|
||||
core* m_core;
|
||||
common(core* c): m_core(c) {}
|
||||
core& c() { return *m_core; }
|
||||
const core& c() const { return *m_core; }
|
||||
core& _() { return *m_core; }
|
||||
const core& _() const { return *m_core; }
|
||||
|
||||
template <typename T> rational val(T const& t) const;
|
||||
rational val(lpvar) const;
|
||||
rational rval(const monomial&) const;
|
||||
template <typename T> lpvar var(T const& t) const;
|
||||
bool done() const;
|
||||
template <typename T> void explain(const T&);
|
||||
void explain(lpvar);
|
||||
void add_empty_lemma();
|
||||
template <typename T> bool canonize_sign(const T&) const;
|
||||
void mk_ineq(lp::lar_term& t, llc cmp, const rational& rs);
|
||||
void mk_ineq(const rational& a, lpvar j, const rational& b, lpvar k, llc cmp, const rational& rs);
|
||||
|
||||
void mk_ineq(lpvar j, const rational& b, lpvar k, llc cmp, const rational& rs);
|
||||
|
||||
void mk_ineq(lpvar j, const rational& b, lpvar k, llc cmp);
|
||||
|
||||
void mk_ineq(const rational& a, lpvar j, const rational& b, lpvar k, llc cmp);
|
||||
void mk_ineq(bool a, lpvar j, bool b, lpvar k, llc cmp);
|
||||
|
||||
void mk_ineq(const rational& a ,lpvar j, lpvar k, llc cmp, const rational& rs);
|
||||
|
||||
void mk_ineq(lpvar j, lpvar k, llc cmp, const rational& rs);
|
||||
|
||||
void mk_ineq(lpvar j, llc cmp, const rational& rs);
|
||||
|
||||
void mk_ineq(const rational& a, lpvar j, llc cmp, const rational& rs);
|
||||
void mk_ineq(const rational& a, lpvar j, llc cmp);
|
||||
|
||||
void mk_ineq(lpvar j, llc cmp);
|
||||
|
||||
std::ostream& print_lemma(std::ostream&) const;
|
||||
|
||||
template <typename T>
|
||||
std::ostream& print_product(const T & m, std::ostream& out) const;
|
||||
|
||||
std::ostream& print_factor(const factor &, std::ostream& out) const;
|
||||
std::ostream& print_var(lpvar, std::ostream& out) const;
|
||||
|
||||
std::ostream& print_monomial(const monomial & m, std::ostream& out) const;
|
||||
std::ostream& print_rooted_monomial(const monomial &, std::ostream& out) const;
|
||||
std::ostream& print_rooted_monomial_with_vars(const monomial&, std::ostream& out) const;
|
||||
bool check_monomial(const monomial&) const;
|
||||
unsigned random();
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue