mirror of
https://github.com/Z3Prover/z3
synced 2025-06-13 17:36:15 +00:00
parent
6366f8f6b2
commit
33c35b0c31
3 changed files with 9 additions and 10 deletions
|
@ -30,13 +30,12 @@ struct factorization_factory;
|
||||||
enum class factor_type { VAR, MON };
|
enum class factor_type { VAR, MON };
|
||||||
|
|
||||||
class factor {
|
class factor {
|
||||||
lpvar m_var{ UINT_MAX };
|
lpvar m_var = UINT_MAX;
|
||||||
factor_type m_type{ factor_type::VAR };
|
factor_type m_type = factor_type::VAR;
|
||||||
bool m_sign{ false };
|
bool m_sign = false;
|
||||||
public:
|
public:
|
||||||
factor(): factor(false) {}
|
factor() { }
|
||||||
explicit factor(lpvar var): m_var(var), m_type(factor_type::VAR), m_sign(false) {}
|
explicit factor(lpvar v, factor_type t) : m_var(v), m_type(t) {}
|
||||||
explicit factor(lpvar v, factor_type t) : m_var(v), m_type(t), m_sign(false) {}
|
|
||||||
unsigned var() const { return m_var; }
|
unsigned var() const { return m_var; }
|
||||||
factor_type type() const { return m_type; }
|
factor_type type() const { return m_type; }
|
||||||
void set(lpvar v, factor_type t) { m_var = v; m_type = t; }
|
void set(lpvar v, factor_type t) { m_var = v; m_type = t; }
|
||||||
|
|
|
@ -116,7 +116,7 @@ void order::order_lemma_on_factor_binomial_rm(const monic& ac, bool k, const mon
|
||||||
tout << "bd=" << pp_mon_with_vars(_(), bd) << "\n";
|
tout << "bd=" << pp_mon_with_vars(_(), bd) << "\n";
|
||||||
);
|
);
|
||||||
factor d(_().m_evars.find(ac.vars()[k]).var(), factor_type::VAR);
|
factor d(_().m_evars.find(ac.vars()[k]).var(), factor_type::VAR);
|
||||||
factor b(false);
|
factor b;
|
||||||
if (c().divide(bd, d, b)) {
|
if (c().divide(bd, d, b)) {
|
||||||
order_lemma_on_binomial_ac_bd(ac, k, bd, b, d.var());
|
order_lemma_on_binomial_ac_bd(ac, k, bd, b, d.var());
|
||||||
}
|
}
|
||||||
|
@ -192,7 +192,7 @@ bool order::order_lemma_on_ac_and_bc(const monic& rm_ac,
|
||||||
tout << "rm_bd = " << pp_mon_with_vars(_(), rm_bd) << "\n";
|
tout << "rm_bd = " << pp_mon_with_vars(_(), rm_bd) << "\n";
|
||||||
tout << "ac_f[k] = ";
|
tout << "ac_f[k] = ";
|
||||||
c().print_factor_with_vars(ac_f[k], tout););
|
c().print_factor_with_vars(ac_f[k], tout););
|
||||||
factor b(false);
|
factor b;
|
||||||
return
|
return
|
||||||
c().divide(rm_bd, ac_f[k], b) &&
|
c().divide(rm_bd, ac_f[k], b) &&
|
||||||
order_lemma_on_ac_and_bc_and_factors(rm_ac, ac_f[!k], ac_f[k], rm_bd, b);
|
order_lemma_on_ac_and_bc_and_factors(rm_ac, ac_f[!k], ac_f[k], rm_bd, b);
|
||||||
|
|
|
@ -444,7 +444,7 @@ struct purify_arith_proc {
|
||||||
expr * x = args[0];
|
expr * x = args[0];
|
||||||
bool is_int = u().is_int(x);
|
bool is_int = u().is_int(x);
|
||||||
|
|
||||||
expr * k = mk_fresh_var(is_int);
|
expr * k = mk_fresh_var(false);
|
||||||
result = k;
|
result = k;
|
||||||
mk_def_proof(k, t, result_pr);
|
mk_def_proof(k, t, result_pr);
|
||||||
cache_result(t, result, result_pr);
|
cache_result(t, result, result_pr);
|
||||||
|
@ -454,7 +454,7 @@ struct purify_arith_proc {
|
||||||
if (y.is_zero()) {
|
if (y.is_zero()) {
|
||||||
expr* p0;
|
expr* p0;
|
||||||
if (is_int) {
|
if (is_int) {
|
||||||
if (!m_ipower0) m_ipower0 = mk_fresh_var(true);
|
if (!m_ipower0) m_ipower0 = mk_fresh_var(false);
|
||||||
p0 = m_ipower0;
|
p0 = m_ipower0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue