mirror of
https://github.com/Z3Prover/z3
synced 2025-04-13 04:28:17 +00:00
* remove level of indirection for context and ast_manager in smt_theory Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add request by #4252 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * move to def Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * int Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4251 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4255 * fix #4257 * add code to debug #4246 * restore new solver as default * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4246 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
86 lines
2.8 KiB
C++
86 lines
2.8 KiB
C++
/*++
|
|
Copyright (c) 2017 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
<name>
|
|
|
|
Abstract:
|
|
|
|
<abstract>
|
|
|
|
Author:
|
|
Nikolaj Bjorner (nbjorner)
|
|
Lev Nachmanson (levnach)
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
#pragma once
|
|
#include "math/lp/factorization.h"
|
|
#include "math/lp/nla_common.h"
|
|
|
|
namespace nla {
|
|
class core;
|
|
class new_lemma;
|
|
class order: common {
|
|
public:
|
|
order(core *c) : common(c) {}
|
|
void order_lemma();
|
|
|
|
private:
|
|
|
|
bool order_lemma_on_ac_and_bc_and_factors(const monic& ac,
|
|
const factor& a,
|
|
const factor& c,
|
|
const monic& bc,
|
|
const factor& b);
|
|
|
|
// a >< b && c > 0 => ac >< bc
|
|
// a >< b && c < 0 => ac <> bc
|
|
// ac[k] plays the role of c
|
|
bool order_lemma_on_ac_and_bc(const monic& rm_ac,
|
|
const factorization& ac_f,
|
|
bool k,
|
|
const monic& rm_bd);
|
|
|
|
bool order_lemma_on_ac_explore(const monic& rm, const factorization& ac, bool k);
|
|
|
|
void order_lemma_on_factorization(const monic& rm, const factorization& ab);
|
|
|
|
|
|
void order_lemma_on_ab_gt(new_lemma& lemma, const monic& m, const rational& sign, lpvar a, lpvar b);
|
|
void order_lemma_on_ab_lt(new_lemma& lemma, const monic& m, const rational& sign, lpvar a, lpvar b);
|
|
void order_lemma_on_ab(new_lemma& lemma, const monic& m, const rational& sign, lpvar a, lpvar b, bool gt);
|
|
void order_lemma_on_factor_binomial_explore(const monic& m, bool k);
|
|
void order_lemma_on_factor_binomial_rm(const monic& ac, bool k, const monic& bd);
|
|
void order_lemma_on_binomial_ac_bd(const monic& ac, bool k, const monic& bd, const factor& b, lpvar d);
|
|
void order_lemma_on_binomial_sign(const monic& ac, lpvar x, lpvar y, int sign);
|
|
void order_lemma_on_binomial(const monic& ac);
|
|
void order_lemma_on_monic(const monic& rm);
|
|
|
|
void generate_ol(const monic& ac,
|
|
const factor& a,
|
|
const factor& c,
|
|
const monic& bc,
|
|
const factor& b);
|
|
|
|
void generate_ol_eq(const monic& ac,
|
|
const factor& a,
|
|
const factor& c,
|
|
const monic& bc,
|
|
const factor& b);
|
|
|
|
void generate_mon_ol(const monic& ac,
|
|
lpvar a,
|
|
const rational& c_sign,
|
|
lpvar c,
|
|
const monic& bd,
|
|
const factor& b,
|
|
const rational& d_sign,
|
|
lpvar d,
|
|
llc ab_cmp);
|
|
};
|
|
}
|