3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-08-03 04:33:28 +00:00
z3/src/math
Nikolaj Bjorner ad063580dc theory_lra: eagerly propagate offset equalities x=y (fixes #10065)
When a term column x - y is fixed to 0 (e.g. from t <= ca and t >= ca),
theory_lra previously discovered the implied equality x = y only lazily via
assume_eqs() during final_check. On the FP fuel-recursive axiom in issue #10065
this discovery is starved by E-matching, which unfolds the recursion and
bit-blasts an exploding FP subproblem before the branch closes.

Add propagate_offset_eq() to detect a fixed 2-variable offset term with opposite
unit-scaled coefficients and propagate the operand equality x = y directly to the
core, so congruence closure merges dependent terms immediately. This mirrors the
offset-row propagation performed by theory_arith (propagate_cheap_eq) and matches
its behavior on this benchmark (timeout -> unsat 0.06s, 2 quant-instantiations).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 726c4e71-03ff-45f6-8322-5253254e1d7e
2026-07-14 22:46:06 -07:00
..
dd Remove unused swap() methods (#8538) 2026-02-08 18:53:43 +00:00
grobner Remove unnecessary semicolons (Attempt 2) (#10020) 2026-07-02 12:47:29 -07:00
hilbert Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
interval Fix 13 compiler warnings: sign-comparison and unused parameters (#8215) 2026-01-16 16:00:42 -08:00
lp theory_lra: eagerly propagate offset equalities x=y (fixes #10065) 2026-07-14 22:46:06 -07:00
polynomial Fix SIGSEGV in nlsat from incorrect algebraic number comparison (#10129) 2026-07-14 17:08:08 -07:00
realclosure Remove unnecessary semicolons (Attempt 2) (#10020) 2026-07-02 12:47:29 -07:00
simplex Remove unnecessary semicolons (Attempt 2) (#10020) 2026-07-02 12:47:29 -07:00
subpaving Remove unnecessary semicolons (Attempt 2) (#10020) 2026-07-02 12:47:29 -07:00