Lev Nachmanson
17de82a963
lp: rename cut_period_random to random_period
...
The toggle also gates the cube heuristics (find_cube, lcube), not just
cuts, so 'cut' in the name was misleading. random_period covers all the
periodic integer heuristic gates (find_cube, lcube, hnf, gomory, dio).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 07:43:36 -07:00
Lev Nachmanson
74899eeb93
lp: rename random_cut_period to cut_period_random
...
Rename the toggle so it sits beside lp.cut_period and reads as a
modifier on it (cut_period + random) rather than burying "cut" in the
middle of the name.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 07:42:04 -07:00
Lev Nachmanson
30dc804d25
lp: add lp.random_cut_period to toggle randomized cut/cube gates
...
Introduce the boolean lp.random_cut_period parameter (default true).
When enabled, the periodic integer heuristic gates (find_cube, lcube,
hnf, gomory, dio) fire at random with the same 1/period expected rate;
when disabled they fall back to the deterministic every-k-th-call
modulus on m_number_of_calls. The shared hit_period() helper centralizes
this decision, and m_number_of_calls is restored for the deterministic
path.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 07:38:06 -07:00
Lev Nachmanson
f508854fe5
Lcube ( #9858 )
...
Implemented the largest cube heuristic from Bromberger and Weidenbach's
paper on cubes. Also fixes an overflow bug in mzp.
Use vswhere to find the visual studio version on windows in the build's ymls.
---------
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-14 16:25:21 -07:00
Copilot
20fef3f449
Eliminate unnecessary copy operations in function parameters and range-based loops ( #8589 )
2026-02-11 21:14:32 +00:00
Lev Nachmanson
f5b8dfc2f1
Revert "optionally throttle patch_basic_columns() especially useful in unsat cases"
...
This reverts commit bee2b45743 .
2026-02-07 10:45:15 -10:00
Lev Nachmanson
73696725e4
Revert "try fixed int patch period"
...
This reverts commit 3e2027ec11 .
2026-02-07 10:45:15 -10:00
Lev Nachmanson
3e2027ec11
try fixed int patch period
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2026-02-06 14:40:04 -10:00
Lev Nachmanson
bee2b45743
optionally throttle patch_basic_columns() especially useful in unsat cases
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2026-02-06 10:14:39 -10:00
Copilot
2436943794
Standardize for-loop increments to prefix form (++i) ( #8199 )
...
* Initial plan
* Convert postfix to prefix increment in for loops
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Fix member variable increment conversion bug
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update API generator to produce prefix increments
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-01-14 19:55:31 -08:00
Nikolaj Bjorner
2517b5a40a
port improvements from ilana branch to master regarding nla
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2025-09-19 12:28:31 -07:00
Nikolaj Bjorner
91b4873b79
categorize lp stats
2025-08-29 17:06:13 -07:00
Nikolaj Bjorner
c75b8ec752
add option to control epsilon #7791
...
#7791 reports on using model values during lex optimization that break soft constraints.
This is an artifact of using optimization where optimal values can be arbitrarily close to a rational.
In a way it is by design, but we give the user now an option to control the starting point for epsilon when converting infinitesimals into rationals.
2025-08-17 16:51:00 -07:00
Lev Nachmanson
2b6c73af82
add stats for throttling
2025-06-26 16:33:16 -07:00
Lev Nachmanson
a1673f2bdd
fallback to Gomory cuts and gcd conflicts if dio fails
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-04-21 17:10:32 -07:00
Lev Nachmanson
17af18fe31
make gcd call in dio optional
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-04-18 18:24:50 -07:00
Lev Nachmanson
87e2ce8948
Update lp_settings.h - m_dio_calls_period = 4
2025-04-18 18:24:50 -07:00
Lev Nachmanson
8db9f52386
add parameter m_dio_calls_period
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-04-18 18:24:50 -07:00
Lev Nachmanson
972f80188a
throttle dio for big numbers
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-04-18 18:24:50 -07:00
Nikolaj Bjorner
8035edbe65
remove lp_assert
2025-04-14 11:10:26 -07:00
Lev Nachmanson
dee3cf8de4
remove an unused field
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-03-24 07:44:13 -10:00
Nikolaj Bjorner
29c5c20267
use more descriptive functions than casting comparisons
2025-03-24 07:44:13 -10:00
Lev Nachmanson
6f7b749ff9
improved dio handler
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-03-24 07:44:13 -10:00
Lev Nachmanson
a7310462df
throttle down cuts from proofs
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-23 19:38:35 -08:00
Nikolaj Bjorner
1a3d1ad69d
add base line bounds tightening utility
2025-02-21 12:46:51 -08:00
Lev Nachmanson
bd3d288a08
tighten only core constrants
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-20 08:40:16 -08:00
Lev Nachmanson
e920291393
fixing the default parameters of dio and rename m_gomory_cuts to m_cuts
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
134bed826a
throttle the branching in dio
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
7e02dfe484
add stats on m_dio_branching_conflicts
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
a19e10912f
make dio less aggressive, allow other cuts
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
174185582a
collect the explanation correctly
2025-02-11 12:23:00 -10:00
Lev Nachmanson
e4f3b5753f
solving regressions/smt2/b1.smt2
2025-02-11 12:23:00 -10:00
Lev Nachmanson
71c433908c
work on incremental version
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
392c24a145
throttle dioph equalities
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
9e8b17b5f8
do not use conflicts with fresh vars to create branches
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
ea50208ad6
prepare using fresh vars in cuts
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
2ebb957cc8
enable cuts from proofs
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Lev Nachmanson
a1a01b9da6
move some functionality from int_solver to int_solver::imp
2025-02-11 12:23:00 -10:00
Lev Nachmanson
3d6cc64e2e
prepare for calling diophantine equations
2025-02-11 12:23:00 -10:00
Lev Nachmanson
097a25ebfe
add parameter to control calling diophantine equations
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-02-11 12:23:00 -10:00
Nikolaj Bjorner
648cf9602e
fix uninitialized variable warnings
2025-01-14 13:54:05 -08:00
David Seifert
2ce89e5f49
Gcc 15 two phase ( #7313 )
...
* Fix `-Wclass-memaccess`
* Fix for GCC 15 two-phase lookup
* GCC 15 is more aggressive about checking dependent names:
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=r15-2117-g313afcfdabeab3
Bug: https://bugs.gentoo.org/936634
2024-07-29 11:07:10 -07:00
Nikolaj Bjorner
8fe357f1f2
Nlsat simplify ( #7227 )
...
* dev branch for simplification
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* bug fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* bugfixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix factorization
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* separate out simplification functionality
* reorder initialization
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* reorder initialization
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* Update README.md
* initial warppers for seq-map/seq-fold
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* expose fold as well
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add C++ bindings for sequence operations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add abs function to API
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add parameter validation to ternary and 4-ary functions for API #7219
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add pre-processing and reorder
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add pre-processing and reorder
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2024-05-14 22:19:33 -07:00
Nikolaj Bjorner
bdb9106f99
Api ( #7097 )
...
* rename ul_pair to column
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* t
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* simple test passed
* remove an assert
* relax an assertion
* remove an obsolete function
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* access a term by the term column
* remove the column index from colunm.h
* remove an unused method
* remove debug code
* fix the build of lp_tst
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
---------
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
2024-01-24 16:05:18 -08:00
Lev Nachmanson
2934618c50
remove simplify_inequality from gomory.cpp
2024-01-04 11:40:57 -10:00
Lev Nachmanson
53c95e3627
cleanup
2023-12-28 06:00:57 -10:00
Lev Nachmanson
0728b81e9e
add parameter lp_settings.m_gomory_simplify
2023-12-28 06:00:57 -10:00
Nikolaj Bjorner
77dab53e9e
track number of Gomory cuts
2023-11-07 19:57:49 +01:00
Lev Nachmanson
ca6cb0af95
add changes in lp with validate_bound and maximize_term
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-11-02 09:59:03 -07:00
Nikolaj Bjorner
4a870966ad
add code to enable unit propagation of bounds
...
set UNIT_PROPAGATE_BOUNDS 1 to use the unit propagation version. It applies unit propagation eagerly (does not depend on checking LIA consistency before final check) and avoid creating new literals in most cases
2023-10-09 16:04:39 +09:00