mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
debug emons
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
ef6fd1cf8e
commit
1ab3957eea
19 changed files with 203 additions and 196 deletions
|
@ -40,47 +40,47 @@ struct basics: common {
|
|||
-ab = a(-b)
|
||||
*/
|
||||
bool basic_sign_lemma(bool derived);
|
||||
bool basic_lemma_for_mon_zero(const signed_vars& rm, const factorization& f);
|
||||
bool basic_lemma_for_mon_zero(const smon& rm, const factorization& f);
|
||||
|
||||
void basic_lemma_for_mon_zero_model_based(const signed_vars& rm, const factorization& f);
|
||||
void basic_lemma_for_mon_zero_model_based(const smon& rm, const factorization& f);
|
||||
|
||||
void basic_lemma_for_mon_non_zero_model_based(const signed_vars& rm, const factorization& f);
|
||||
void basic_lemma_for_mon_non_zero_model_based(const smon& rm, const factorization& f);
|
||||
// x = 0 or y = 0 -> xy = 0
|
||||
void basic_lemma_for_mon_non_zero_model_based_rm(const signed_vars& rm, const factorization& f);
|
||||
void basic_lemma_for_mon_non_zero_model_based_rm(const smon& rm, const factorization& f);
|
||||
|
||||
void basic_lemma_for_mon_non_zero_model_based_mf(const factorization& f);
|
||||
// x = 0 or y = 0 -> xy = 0
|
||||
bool basic_lemma_for_mon_non_zero_derived(const signed_vars& rm, const factorization& f);
|
||||
bool basic_lemma_for_mon_non_zero_derived(const smon& rm, const factorization& f);
|
||||
|
||||
// use the fact that
|
||||
// |xabc| = |x| and x != 0 -> |a| = |b| = |c| = 1
|
||||
bool basic_lemma_for_mon_neutral_monomial_to_factor_model_based(const signed_vars& rm, const factorization& f);
|
||||
bool basic_lemma_for_mon_neutral_monomial_to_factor_model_based(const smon& rm, const factorization& f);
|
||||
// use the fact that
|
||||
// |xabc| = |x| and x != 0 -> |a| = |b| = |c| = 1
|
||||
bool basic_lemma_for_mon_neutral_monomial_to_factor_model_based_fm(const monomial& m);
|
||||
bool basic_lemma_for_mon_neutral_monomial_to_factor_derived(const signed_vars& rm, const factorization& f);
|
||||
bool basic_lemma_for_mon_neutral_monomial_to_factor_derived(const smon& rm, const factorization& f);
|
||||
|
||||
// use the fact
|
||||
// 1 * 1 ... * 1 * x * 1 ... * 1 = x
|
||||
bool basic_lemma_for_mon_neutral_from_factors_to_monomial_model_based(const signed_vars& rm, const factorization& f);
|
||||
bool basic_lemma_for_mon_neutral_from_factors_to_monomial_model_based(const smon& rm, const factorization& f);
|
||||
// use the fact
|
||||
// 1 * 1 ... * 1 * x * 1 ... * 1 = x
|
||||
bool basic_lemma_for_mon_neutral_from_factors_to_monomial_model_based_fm(const monomial& m);
|
||||
// use the fact
|
||||
// 1 * 1 ... * 1 * x * 1 ... * 1 = x
|
||||
bool basic_lemma_for_mon_neutral_from_factors_to_monomial_derived(const signed_vars& rm, const factorization& f);
|
||||
void basic_lemma_for_mon_neutral_model_based(const signed_vars& rm, const factorization& f);
|
||||
bool basic_lemma_for_mon_neutral_from_factors_to_monomial_derived(const smon& rm, const factorization& f);
|
||||
void basic_lemma_for_mon_neutral_model_based(const smon& rm, const factorization& f);
|
||||
|
||||
bool basic_lemma_for_mon_neutral_derived(const signed_vars& rm, const factorization& factorization);
|
||||
bool basic_lemma_for_mon_neutral_derived(const smon& rm, const factorization& factorization);
|
||||
|
||||
void basic_lemma_for_mon_model_based(const signed_vars& rm);
|
||||
void basic_lemma_for_mon_model_based(const smon& rm);
|
||||
|
||||
bool basic_lemma_for_mon_derived(const signed_vars& rm);
|
||||
bool basic_lemma_for_mon_derived(const smon& rm);
|
||||
|
||||
// Use basic multiplication properties to create a lemma
|
||||
// for the given monomial.
|
||||
// "derived" means derived from constraints - the alternative is model based
|
||||
void basic_lemma_for_mon(const signed_vars& rm, bool derived);
|
||||
void basic_lemma_for_mon(const smon& rm, bool derived);
|
||||
// use basic multiplication properties to create a lemma
|
||||
bool basic_lemma(bool derived);
|
||||
void generate_sign_lemma(const monomial& m, const monomial& n, const rational& sign);
|
||||
|
@ -94,14 +94,14 @@ struct basics: common {
|
|||
void add_fixed_zero_lemma(const monomial& m, lpvar j);
|
||||
void negate_strict_sign(lpvar j);
|
||||
// x != 0 or y = 0 => |xy| >= |y|
|
||||
void proportion_lemma_model_based(const signed_vars& rm, const factorization& factorization);
|
||||
void proportion_lemma_model_based(const smon& rm, const factorization& factorization);
|
||||
// x != 0 or y = 0 => |xy| >= |y|
|
||||
bool proportion_lemma_derived(const signed_vars& rm, const factorization& factorization);
|
||||
bool proportion_lemma_derived(const smon& rm, const factorization& factorization);
|
||||
// if there are no zero factors then |m| >= |m[factor_index]|
|
||||
void generate_pl_on_mon(const monomial& m, unsigned factor_index);
|
||||
|
||||
// none of the factors is zero and the product is not zero
|
||||
// -> |fc[factor_index]| <= |rm|
|
||||
void generate_pl(const signed_vars& rm, const factorization& fc, int factor_index);
|
||||
void generate_pl(const smon& rm, const factorization& fc, int factor_index);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue