mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
add special procedures for UTVPI and horn arithmetic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e6d6c55df0
commit
be64e4b238
2 changed files with 7 additions and 23 deletions
|
@ -6,30 +6,16 @@ Module Name:
|
|||
theory_horn_ineq.h
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
A*x <= b + D*x, coefficients to A and D are non-negative,
|
||||
A*x <= weight + D*x, coefficients to A and D are non-negative,
|
||||
D is a diagonal matrix.
|
||||
Coefficients to b may have both signs.
|
||||
|
||||
Coefficients to weight may have both signs.
|
||||
|
||||
Ford-Fulkerson variant:
|
||||
Label variables by weight.
|
||||
Select inequality that is not satisfied.
|
||||
Set gamma(LHS) := 0
|
||||
Set gamma(RHS(x)) := weight(x) - b
|
||||
Propagate gamma through inequalities.
|
||||
Gamma is the increment.
|
||||
Maintain Heap of variables weighted by gamma.
|
||||
When processing inequality,
|
||||
then update gamma of variables by gamma := A(gamma + weight) - b
|
||||
If some variable in the premise of the original rule gets
|
||||
relabeled (assignment is increased), then the set of
|
||||
inequalities is unsatisfiable.
|
||||
|
||||
Propagation updates lower bounds on gamma by taking into
|
||||
account integer inequalities. The greatest lower bound
|
||||
is computable by taking integer floor/ceilings.
|
||||
Set delta(LHS) := 0
|
||||
Set delta(RHS(x)) := weight(x) - b
|
||||
Propagate weight increment through inequalities.
|
||||
|
||||
Author:
|
||||
|
||||
|
|
|
@ -937,10 +937,8 @@ namespace smt {
|
|||
|
||||
template<typename Ext>
|
||||
void theory_horn_ineq<Ext>::collect_statistics(::statistics& st) const {
|
||||
st.update("hi conflicts", m_stats.m_num_conflicts);
|
||||
// st.update("hi propagations", m_stats.m_num_th2core_prop);
|
||||
// st.update("hi asserts", m_stats.m_num_assertions);
|
||||
// st.update("core->hi eqs", m_stats.m_num_core2th_eqs);
|
||||
st.update("horn ineq conflicts", m_stats.m_num_conflicts);
|
||||
st.update("horn ineq assertions", m_stats.m_num_assertions);
|
||||
m_arith_eq_adapter.collect_statistics(st);
|
||||
m_graph->collect_statistics(st);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue