3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-31 19:24:00 +00:00
z3/src/smt
Arie 58ad1f0918
Fix scaled_min test failure from #9235 mod-factor-propagation (#9260)
The is_mod handler in theory_lra called ensure_nla(), which
unnecessarily created the NLA solver for pure linear problems, causing
the optimizer to return a finite value instead of -infinity.

Fix: check `m_nla` instead of calling `ensure_nla()`, matching the
pattern used by the is_idiv handler. The mod division is only registered
when NLA is already active due to nonlinear terms.

Update mod_factor tests to use QF_NIA logic and assert the mul term
before the mod term so that internalize_mul triggers ensure_nla() before
mod internalization.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:52:42 -07:00
..
proto_model Remove copies (#8583) 2026-02-18 21:02:22 -08:00
tactic Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
arith_eq_adapter.cpp Refactor SMT equality handlers to use C++17 structured bindings (#8321) 2026-02-18 20:57:54 -08:00
arith_eq_adapter.h
arith_eq_solver.cpp
arith_eq_solver.h Remove redundant non-virtual destructors with = default (#8462) 2026-02-18 20:58:01 -08:00
CMakeLists.txt remove lattice component 2026-02-19 15:49:45 -08:00
database.h
database.smt
diff_logic.h Replace fall-through comments with Z3_fallthrough macro (#8219) 2026-02-18 20:57:31 -08:00
dyn_ack.cpp Add initializer_list overloads and update all call sites 2026-02-18 21:02:26 -08:00
dyn_ack.h
expr_context_simplifier.cpp
expr_context_simplifier.h
fingerprints.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
fingerprints.h
mam.cpp Fix null pointer dereferences and uninitialized variables from discussion #8891 2026-03-09 16:51:12 +00:00
mam.h
old_interval.cpp
old_interval.h
qi_queue.cpp Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
qi_queue.h
seq_axioms.cpp
seq_axioms.h
seq_eq_solver.cpp Refactor SMT core: use structured bindings for enode_pair access (#8427) 2026-02-18 20:57:59 -08:00
seq_ne_solver.cpp Adopt C++17 structured bindings for map/pair iteration (#8159) 2026-02-18 20:57:09 -08:00
seq_offset_eq.cpp Refactor seq_offset_eq::find to use std::optional (#8300) 2026-02-18 20:57:53 -08:00
seq_offset_eq.h Refactor seq_offset_eq::find to use std::optional (#8300) 2026-02-18 20:57:53 -08:00
seq_regex.cpp
seq_regex.h
smt2_extra_cmds.cpp
smt2_extra_cmds.h
smt_almost_cg_table.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_almost_cg_table.h
smt_arith_value.cpp remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
smt_arith_value.h Merge branch 'master' into finite-sets 2026-02-18 21:11:44 -08:00
smt_b_justification.h
smt_bool_var_data.h
smt_case_split_queue.cpp Fix 13 compiler warnings: sign-comparison and unused parameters (#8215) 2026-02-18 20:57:31 -08:00
smt_case_split_queue.h
smt_cg_table.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_cg_table.h
smt_checker.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_checker.h
smt_clause.cpp Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
smt_clause.h
smt_clause_proof.cpp
smt_clause_proof.h
smt_conflict_resolution.cpp Restore defensive SASSERT in smt_conflict_resolution 2026-02-18 21:02:26 -08:00
smt_conflict_resolution.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_consequences.cpp fix crash 2026-02-18 21:02:17 -08:00
smt_context.cpp Fix all build warnings with surgical changes 2026-02-18 20:58:05 -08:00
smt_context.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_context_inv.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_context_pp.cpp Refactor SMT core: use structured bindings for enode_pair access (#8427) 2026-02-18 20:57:59 -08:00
smt_context_stat.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_enode.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_enode.h
smt_eq_justification.h
smt_failure.h
smt_farkas_util.cpp
smt_farkas_util.h
smt_for_each_relevant_expr.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_for_each_relevant_expr.h
smt_implied_equalities.cpp Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
smt_implied_equalities.h
smt_induction.cpp.disabled
smt_induction.h.disabled
smt_internalizer.cpp Add initializer_list overloads and update all call sites 2026-02-18 21:02:26 -08:00
smt_justification.cpp fix build 2026-02-18 20:58:00 -08:00
smt_justification.h
smt_kernel.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_kernel.h
smt_literal.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_literal.h
smt_lookahead.cpp
smt_lookahead.h
smt_model_checker.cpp Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
smt_model_checker.h
smt_model_finder.cpp fix #8563 - align indices for flat quantifiers with sks vector layout, and also guard creating instantiation equalities with sort checks 2026-02-18 21:02:29 -08:00
smt_model_finder.h
smt_model_generator.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_model_generator.h
smt_parallel.cpp SMTS tree algorithms (#9250) 2026-04-09 09:46:47 -07:00
smt_parallel.h SMTS tree algorithms (#9250) 2026-04-09 09:46:47 -07:00
smt_quantifier.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_quantifier.h
smt_quantifier_instances.h
smt_quick_checker.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_quick_checker.h
smt_relevancy.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_relevancy.h
smt_setup.cpp fix indentation 2026-02-18 20:57:01 -08:00
smt_setup.h
smt_solver.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_solver.h
smt_statistics.cpp
smt_statistics.h
smt_theory.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_theory.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
smt_types.h
smt_value_sort.cpp
smt_value_sort.h
spanning_tree.h
spanning_tree_base.h
spanning_tree_def.h
theory_arith.cpp
theory_arith.h Remove redundant default constructors when they're the only constructor (#8461) 2026-02-18 20:58:01 -08:00
theory_arith_aux.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_arith_core.h Fix 13 compiler warnings: sign-comparison and unused parameters (#8215) 2026-02-18 20:57:31 -08:00
theory_arith_def.h
theory_arith_eq.h
theory_arith_int.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_arith_inv.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_arith_nl.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_arith_pp.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_array.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_array.h fixes to finite domain arrays 2026-02-18 20:57:03 -08:00
theory_array_base.cpp Refactor theory_array_base to use structured bindings for enode pairs (#8405) 2026-02-18 20:57:58 -08:00
theory_array_base.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_array_full.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
theory_array_full.h fixes to finite domain arrays 2026-02-18 20:57:03 -08:00
theory_bv.cpp fix #9254 2026-04-09 09:19:40 -07:00
theory_bv.h Remove redundant default constructors when they're the only constructor (#8461) 2026-02-18 20:58:01 -08:00
theory_char.cpp Refactor theory_char::get_char_value to use std::optional (#8302) 2026-02-18 20:57:53 -08:00
theory_char.h Refactor theory_char::get_char_value to use std::optional (#8302) 2026-02-18 20:57:53 -08:00
theory_datatype.cpp Use structured bindings for stack entries in theory_datatype (#8442) 2026-02-18 20:58:01 -08:00
theory_datatype.h update iterator pattern 2026-02-18 20:57:12 -08:00
theory_dense_diff_logic.cpp
theory_dense_diff_logic.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_dense_diff_logic_def.h fix: reduce verbose lock contention in theory_diff_logic (issue #8019) 2026-03-17 13:07:20 -10:00
theory_diff_logic.cpp
theory_diff_logic.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_diff_logic_def.h fix: reduce verbose lock contention in theory_diff_logic (issue #8019) 2026-03-17 13:07:20 -10:00
theory_dl.cpp Adopt std::optional for try_get_value and try_get_size functions (#8268) 2026-02-18 20:57:50 -08:00
theory_dl.h
theory_dummy.cpp remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_dummy.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_finite_set.cpp remove lattice component 2026-02-19 15:49:45 -08:00
theory_finite_set.h remove lattice component 2026-02-19 15:49:45 -08:00
theory_finite_set_size.cpp add sketch for incremental algorithm 2026-02-18 21:10:17 -08:00
theory_finite_set_size.h add functions that create unique sets for model construction based on solving cardinality constraints 2025-12-29 11:57:48 -08:00
theory_fpa.cpp Fix FPA soundness issue: reset rewriter cache in pop_scope_eh (issue #8345) 2026-02-21 03:35:47 +00:00
theory_fpa.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_intblast.cpp Fix intblast ubv_to_int bug: add bv2int axioms for compound expressions 2026-02-25 00:46:13 +00:00
theory_intblast.h Fix intblast ubv_to_int bug: add bv2int axioms for compound expressions 2026-02-25 00:46:13 +00:00
theory_lra.cpp Fix scaled_min test failure from #9235 mod-factor-propagation (#9260) 2026-04-10 12:52:42 -07:00
theory_lra.h enable post setup parameter tweaking in theory solvers, update azure-pipeline 2026-02-18 21:08:24 -08:00
theory_opt.cpp
theory_opt.h
theory_pb.cpp Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
theory_pb.h Remove redundant default constructors when they're the only constructor (#8461) 2026-02-18 20:58:01 -08:00
theory_polymorphism.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_recfun.cpp Eliminate unnecessary copies with std::move for ref-counted types (#8591) 2026-02-18 21:02:24 -08:00
theory_recfun.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_seq.cpp fix #9254 2026-04-09 09:19:40 -07:00
theory_seq.h Refactor theory_seq::find_fst_non_empty_var to use std::optional (#8315) 2026-02-18 20:57:54 -08:00
theory_seq_empty.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_sls.cpp remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_sls.h Remove redundant overridden default destructors (#8191) 2026-02-18 20:57:13 -08:00
theory_special_relations.cpp remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_special_relations.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_user_propagator.cpp remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_user_propagator.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_utvpi.cpp
theory_utvpi.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_utvpi_def.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
theory_wmaxsat.cpp Refactor mk_and/mk_or call sites to use vector overloads (#8286) 2026-02-18 20:57:52 -08:00
theory_wmaxsat.h remove set cardinality operators from array theory. Make final-check use priority levels 2026-02-18 20:56:51 -08:00
uses_theory.cpp AIX compat (#8113) 2026-02-18 20:57:04 -08:00
uses_theory.h
watch_list.cpp
watch_list.h