Skip to content

dev-0.18.0 (2026 version)#300

Merged
shnarazk merged 27 commits into
mainfrom
dev-0.18.0-trial2026
Mar 14, 2026
Merged

dev-0.18.0 (2026 version)#300
shnarazk merged 27 commits into
mainfrom
dev-0.18.0-trial2026

Conversation

@shnarazk
Copy link
Copy Markdown
Owner

@shnarazk shnarazk commented Feb 28, 2026

  • reorganize primitive types 20250202 refactor primitive types #288
  • chrono_BT
  • BT_drift
  • Rust Edition2024
  • ditch the old-style progress report used by C++ implementations
  • $O(1)$ Luby implementation ➡️ set to the next release
# ~/.cargo/bin/splr (0.17.4) @ 2026-03-01T17:18:55
solver,       num,                       target,     time
"splr",         1,                 "UF250(100)",   45.518
"splr",         2,                "UUF250(100)",  142.412
"splr",         3,   "3SAT/360  S722433227-030",   52.188
"splr",         4,   "3SAT/360 S2032263657-035",    0.628
"splr",         5,   "3SAT/360  S368632549-051",    6.118
"splr",         6,   "3SAT/360 S1684547485-073",    1.451
"splr",         7,   "3SAT/360 S1711406314-093",    2.070
"splr",         8,   "3UNS/360 S1369720750-015",   61.691
"splr",         9,   "3UNS/360  S367138237-029",  201.586
"splr",        10,   "3UNS/360  S680239195-053",   97.981
"splr",        11,   "3UNS/360  S253750560-086",   97.285
"splr",        12,   "3UNS/360 S1028159446-096",   93.208
"splr",        13,   "[SAT] SR2015/m283,  3553",   16.547
"splr",        14,   "[SAT] SR2015/38b,    448",   12.094
"splr",        15,   "[SAT] SR2015/44b,    609",   28.800
"splr",        16,   "[SAT] SC21/b04_s_unknown",   84.779
"splr",        17,   "[SAT] SC21/quad_r21_m22 ",   33.862
"splr",        18,   "[SAT] SC21/toughsat_895s",  303.083
"splr",        19,   "[UNS] SC21/assoc_mult_e3",   77.013
"splr",        20,   "[UNS] SC21/dist4.c      ",  134.252
"splr",        21,   "[UNS] SC21/p01_lb_05    ",   46.317
"splr",        22,   "[UNS] SC21/shift1add    ",    9.462
med:    49.252, max:   303.083,           total: 1548.345

The best so far

# 0.16.1, timeout:2000 on localhost @ 2024-08-15T16:27:32
# ~/.cargo/bin/splr-0.17.3 (0.18.0-dev0) @ 2024-04-27T01:23:06
solver,       num,                       target,     time
"splr-0.17.3",  1,                 "UF250(100)",   33.543
"splr-0.17.3",  2,                "UUF250(100)",  126.195
"splr-0.17.3",  3,   "3SAT/360  S722433227-030",   13.189
"splr-0.17.3",  4,   "3SAT/360 S2032263657-035",    6.483
"splr-0.17.3",  5,   "3SAT/360  S368632549-051",    8.475
"splr-0.17.3",  6,   "3SAT/360 S1684547485-073",    0.600
"splr-0.17.3",  7,   "3SAT/360 S1711406314-093",   11.929
"splr-0.17.3",  8,   "3UNS/360 S1369720750-015",   67.939
"splr-0.17.3",  9,   "3UNS/360  S367138237-029",  172.283
"splr-0.17.3", 10,   "3UNS/360  S680239195-053",   94.397
"splr-0.17.3", 11,   "3UNS/360  S253750560-086",   69.033
"splr-0.17.3", 12,   "3UNS/360 S1028159446-096",   86.342
"splr-0.17.3", 13,   "[SAT] SR2015/m283,  3553",   24.382
"splr-0.17.3", 14,   "[SAT] SR2015/38b,    448",    6.913
"splr-0.17.3", 15,   "[SAT] SR2015/44b,    609",   10.248
"splr-0.17.3", 16,   "[SAT] SC21/b04_s_unknown",   38.712
"splr-0.17.3", 17,   "[SAT] SC21/quad_r21_m22 ",    6.976
"splr-0.17.3", 18,   "[SAT] SC21/toughsat_895s",   72.302
"splr-0.17.3", 19,   "[UNS] SC21/assoc_mult_e3",   75.138
"splr-0.17.3", 20,   "[UNS] SC21/dist4.c      ",  134.452
"splr-0.17.3", 21,   "[UNS] SC21/p01_lb_05    ",   36.283
"splr-0.17.3", 22,   "[UNS] SC21/shift1add    ",   92.997
med:    37.498, max:   172.283,           total: 1188.811

the best of this branch

22f8937

# ~/.cargo/bin/splr (0.18.0-dev2) @ 2026-03-12T11:55:04
solver,       num,                       target,     time
"splr",         1,                 "UF250(100)",   30.834
"splr",         2,                "UUF250(100)",  128.621
"splr",         3,   "3SAT/360  S722433227-030",    6.151
"splr",         4,   "3SAT/360 S2032263657-035",    0.531
"splr",         5,   "3SAT/360  S368632549-051",   22.162
"splr",         6,   "3SAT/360 S1684547485-073",    0.321
"splr",         7,   "3SAT/360 S1711406314-093",    0.516
"splr",         8,   "3UNS/360 S1369720750-015",   48.176
"splr",         9,   "3UNS/360  S367138237-029",  114.181
"splr",        10,   "3UNS/360  S680239195-053",   77.349
"splr",        11,   "3UNS/360  S253750560-086",   64.790
"splr",        12,   "3UNS/360 S1028159446-096",   60.731
"splr",        13,   "[SAT] SR2015/m283,  3553",   14.112
"splr",        14,   "[SAT] SR2015/38b,    448",    1.360
"splr",        15,   "[SAT] SR2015/44b,    609",   86.578
"splr",        16,   "[SAT] SC21/b04_s_unknown",   18.526
"splr",        17,   "[SAT] SC21/quad_r21_m22 ",   36.685
"splr",        18,   "[SAT] SC21/toughsat_895s",   36.352
"splr",        19,   "[UNS] SC21/assoc_mult_e3",  111.140
"splr",        20,   "[UNS] SC21/dist4.c      ",  162.955
"splr",        21,   "[UNS] SC21/p01_lb_05    ",   64.547
"splr",        22,   "[UNS] SC21/shift1add    ",   33.779
med:    36.519, max:   162.955,           total: 1120.397

without BT_drift

# ~/.cargo/bin/splr (0.18.0-dev2) @ 2026-03-12T23:41:40
solver,       num,                       target,     time
"splr",         1,                 "UF250(100)",   32.668
"splr",         2,                "UUF250(100)",  128.590
"splr",         3,   "3SAT/360  S722433227-030",  106.508
"splr",         4,   "3SAT/360 S2032263657-035",    0.218
"splr",         5,   "3SAT/360  S368632549-051",  161.539
"splr",         6,   "3SAT/360 S1684547485-073",    0.843
"splr",         7,   "3SAT/360 S1711406314-093",    0.421
"splr",         8,   "3UNS/360 S1369720750-015",   55.515
"splr",         9,   "3UNS/360  S367138237-029",  132.974
"splr",        10,   "3UNS/360  S680239195-053",   79.477
"splr",        11,   "3UNS/360  S253750560-086",   62.549
"splr",        12,   "3UNS/360 S1028159446-096",   65.640
"splr",        13,   "[SAT] SR2015/m283,  3553",   20.309
"splr",        14,   "[SAT] SR2015/38b,    448",   11.617
"splr",        15,   "[SAT] SR2015/44b,    609",   62.549
"splr",        16,   "[SAT] SC21/b04_s_unknown",   11.825
"splr",        17,   "[SAT] SC21/quad_r21_m22 ",   92.435
"splr",        18,   "[SAT] SC21/toughsat_895s",   55.441
"splr",        19,   "[UNS] SC21/assoc_mult_e3",   92.654
"splr",        20,   "[UNS] SC21/dist4.c      ",  156.319
"splr",        21,   "[UNS] SC21/p01_lb_05    ",   66.782
"splr",        22,   "[UNS] SC21/shift1add    ",   33.569
med:    62.549, max:   161.539,           total: 1430.442

So BT_drift is effective!

# ~/.cargo/bin/splr (0.18.0-dev2) @ 2026-03-09T18:14:36
solver,       num,                       target,     time
"splr",         1,                 "UF250(100)",   39.947
"splr",         2,                "UUF250(100)",  127.532
"splr",         3,   "3SAT/360  S722433227-030",    7.263
"splr",         4,   "3SAT/360 S2032263657-035",    0.946
"splr",         5,   "3SAT/360  S368632549-051",   69.754
"splr",         6,   "3SAT/360 S1684547485-073",    4.590
"splr",         7,   "3SAT/360 S1711406314-093",    1.769
"splr",         8,   "3UNS/360 S1369720750-015",   67.665
"splr",         9,   "3UNS/360  S367138237-029",  139.712
"splr",        10,   "3UNS/360  S680239195-053",   94.980
"splr",        11,   "3UNS/360  S253750560-086",   79.145
"splr",        12,   "3UNS/360 S1028159446-096",   71.414
"splr",        13,   "[SAT] SR2015/m283,  3553",    7.931
"splr",        14,   "[SAT] SR2015/38b,    448",    6.902
"splr",        15,   "[SAT] SR2015/44b,    609",   85.640
"splr",        16,   "[SAT] SC21/b04_s_unknown",   52.424
"splr",        17,   "[SAT] SC21/quad_r21_m22 ",   46.178
"splr",        18,   "[SAT] SC21/toughsat_895s",   61.429
"splr",        19,   "[UNS] SC21/assoc_mult_e3",   80.324
"splr",        20,   "[UNS] SC21/dist4.c      ",  104.906
"splr",        21,   "[UNS] SC21/p01_lb_05    ",   51.738
"splr",        22,   "[UNS] SC21/shift1add    ",   40.961
med:    56.927, max:   139.712,           total: 1243.150

@shnarazk shnarazk self-assigned this Feb 28, 2026
@shnarazk shnarazk added the enhancement New feature or request label Feb 28, 2026
This was linked to issues Feb 28, 2026
shnarazk added 5 commits March 6, 2026 10:34
* Bump version to 0.18.0-dev0

* Remove feature 'incremental_solver'

* modified:   Cargo.toml

* Fix f64 ordering (401fa3c)

* Fix `Ord::cmp` for `OrderedProxy<T>` (see #277)

* Fix bugs in an unused function

* 20250202 refactor primitive types (#288)

* Bump version to 0.18.0-dev1
* Reorganize types/*

* modified:   Cargo.lock

* cargo cllipy: replace args().last() with args().next_back()

* Activate "chrono_BT"

* modified:   Cargo.toml

* Fix accesing level
-	modified:   src/assign/propagate.rs
-	modified:   src/assign/stack.rs
-	modified:   src/solver/conflict.rs

* Comment out debug_assert! calls

* Lower CBT threshold to force chrono backtracking

Change default c_cbt_thr from 100 to 4
Force chronobt to true when chrono_BT feature is enabled by removing
original conditional check

* WIP(debug) Simplify chrono_BT conflict handling with if let

* Add debug assertion for decision level consistency

* tiny changes

* Simplify assign_by_implication signature and logic

* Better message for assertion errors.

* Support BinaryLink in conflict resolution

Match on AssignReason to handle BinaryLink and Implication cases
separately. Introduce a `chbt` flag to track chrono_BT cancellation
logic and enhance debug assertions for the l0 assignment.

* Add debug logging for propagation and conflicts

* Simplify conflict logic

Comment out conflicting_level assignment and cancel_until call in handle_conflict,
using a direct assert for level equality. In conflict_analyze, filter out
assigned literals when inspecting clauses, simplify the validate_vi! invocation,
and clarify the panic println message.

* Allow dead code for is_empty and ignore cid

* Compute conflicting_level from correct literal

Remove redundant conflicting_level reset and adjust its assignment in
BinaryLink and Implication to use the higher decision level.
Comment out stale debug asserts in conflict_analyze, add doc comments
for macros, and simplify literal mapping by dropping unused fields.

* Correct spelling errors in comments

* Apply implication logic in BinaryLink case

Comment out the assert_eq! comparing decision levels and add a note
to align with the Implication case logic

* cargo clippy (1.87)

* WIP: (conflict_analyze)
handle cases on biclause.
Add debug logs and ANSI color constants

* Push negated literal for chrono-BT

Ensure that during conflict analysis for chronological
backtracking, the negated literal (!l) is pushed to the learnt clause rather than l

* Disable hardcoded debug prints and add debug panic

Clear magic var-index filters to suppress conditional debug
prints in propagation. Comment out leftover printlns in
handle_conflict and add panic with debug output on unexpected
assignment.

* Remove commented code in conflict handler

* Inline chrono_BT checks and remove chronobt

Remove chronobt definitions and the assert in handle_conflict,
using compile-time cfg!(feature = "chrono_BT") checks instead.

* Simplify cancel_until logic and remove chbt

Inline conditional in cancel_until call to choose the rollback
level and remove the chbt flag and its associated debug assertion.

* Inline cancel_until logic and remove chbt flag

* Track and report chronological backtrack rate

* Raise CBT threshold and use exp backtrack check

* Add chronological backtrack percentage to status

Replace the exploration rate metric with chronological backtrack
percentage (cbt%) in the status output.
Compute cbt% as 100 * num_chrono_bt / num_conflicts and add a new
LogF64Id::ChronologicalBacktrackPercentage variant.

* Use tb_lits_ema to control chrono backtracking

Add a tb_lits_ema field to State and initialize it in Default. In
handle_conflict compute num_bt_lits as the difference in assigned
literals, update the EMA, and replace the old chrono_BT threshold
check with a condition comparing num_bt_lits against 3×tb_lits_ema.

* Use a new counter for STM stage checks

Compute stage_counter as the difference between total learnt and
chronological backtracks, and use it for stage_ended and
prepare_new_stage calls to ensure correct stage management.

* (Exp) Refine conflict backtracking and stage counter

Import cdb and compute cfl_lvl_lits via asg.stack_len(). Update
chrono_BT backtracking to use CDB entanglement EMA and c_lvl, and
enforce assign_level+8 < conflicting_level. Simplify stage_counter by
removing subtraction of num_chrono_bt.

* parameter tuning

* cargo clippy

* Add Zed debug task for building and running splr

* add an alternative chronoBT threshold as comment

* clean up debug code

* chore: add `.cargo` to .gitignore

* a new implementation of chronoBT threshold

* optimize (chronoBT): set threshold to 1.6

* optimize (chronoBT): set threshold to 1.65

* optimize(chronoBT): set to 1.6 back

* chore: cargo update

* feat(chronoBT): revise implementation

* a snapshot

* feat(chronoBT): implement valid propgation after (current - 1) jump and implement (assign - 1) jump

* chore(trail_saving): fix compile errors

* chore: cargo clippy

* optimize(chrono_BT): tune bt_drift condition

* ditto

* ditto

* optimize(chronoBT): use the number of vars instead of the level gap

* optimize(chronoBT): got 1270.409

* optimize(bt_drift): use code in bt-drift-20260301

* optimize(chronoBT): remove idling time

* fix: cargo test

* And revise vivification 20260304 (#302)

* exp: use vivification to reduce redundant *small* clauses
* feat(clause): substitute rank_old and DERIVE20 with a counter
* fix(trail_saving): give a valid livel to assign_by_implication
* refactor(BT_drift): add as feature
* chore: use trail_saving feature
@shnarazk
Copy link
Copy Markdown
Owner Author

shnarazk commented Mar 6, 2026

@copilot
Do you know how to implement DPR (see #303)?

Copy link
Copy Markdown

Copilot AI commented Mar 6, 2026

@shnarazk I've opened a new pull request, #304, to work on those changes. Once the pull request is ready, I'll request review from you.

@shnarazk shnarazk marked this pull request as ready for review March 12, 2026 14:55
@shnarazk shnarazk added the new scheme import some idea on papers label Mar 12, 2026
@shnarazk shnarazk force-pushed the dev-0.18.0-trial2026 branch from 1dc89df to 5b0144e Compare March 14, 2026 08:59
@shnarazk shnarazk force-pushed the dev-0.18.0-trial2026 branch from a0649b5 to fc3ef27 Compare March 14, 2026 10:04
@shnarazk shnarazk merged commit ae976c7 into main Mar 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request new scheme import some idea on papers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ROADMAP Reactivate chrono_BT

2 participants