pumpkin-solver 0.2.2

The Pumpkin combinatorial optimisation solver library.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.2]https://github.com/ConSol-Lab/Pumpkin/compare/pumpkin-solver-v0.2.1...pumpkin-solver-v0.2.2 (2025-11-10)


### Features

* Adding logging of brancher statistics on completion ([#257]https://github.com/ConSol-Lab/Pumpkin/issues/257) ([9d26842]https://github.com/ConSol-Lab/Pumpkin/commit/9d268429bc29fecb4070d6680d4f83a74c7c895f)
* Allow unbounded integers in FlatZinc models ([#285]https://github.com/ConSol-Lab/Pumpkin/issues/285) ([826fe58]https://github.com/ConSol-Lab/Pumpkin/commit/826fe58fdba2b81c47a64953b2308cff8275fc23)
* **pumpkin-solver:** Adding edge-finding for the disjunctive constraint ([#275]https://github.com/ConSol-Lab/Pumpkin/issues/275) ([606a7d8]https://github.com/ConSol-Lab/Pumpkin/commit/606a7d8eb36edf0b2a059c44a4f50f5ca40fc572)
* **pumpkin-solver:** Write proofs with gzip encoding ([#264]https://github.com/ConSol-Lab/Pumpkin/issues/264) ([83f76da]https://github.com/ConSol-Lab/Pumpkin/commit/83f76da17efc4a5ba1904dd144b89f0ff41cf326)
* Remove unnecessary variables introduced by bool2int ([#232]https://github.com/ConSol-Lab/Pumpkin/issues/232) ([cf0b2fe]https://github.com/ConSol-Lab/Pumpkin/commit/cf0b2fe3831db904345e96266ae41b6836b8057f)
* Update to `pumpkin-core` 0.2.2


### Bug Fixes

* Allow bool in int search strategy ([#308]https://github.com/ConSol-Lab/Pumpkin/issues/308) ([a3fb929]https://github.com/ConSol-Lab/Pumpkin/commit/a3fb9291285664dfefd9380638c4f4baf75c7d16)
* Correctly reporting unknown solution in optimisation and solution enumeration ([#247]https://github.com/ConSol-Lab/Pumpkin/issues/247) ([8c0f27c]https://github.com/ConSol-Lab/Pumpkin/commit/8c0f27c7cb298329ac637294c2e0cd9f680f82f4)
* **pumpkin-solver:** Only compile solution checkers for integration tests ([#278]https://github.com/ConSol-Lab/Pumpkin/issues/278) ([a5e4c2c]https://github.com/ConSol-Lab/Pumpkin/commit/a5e4c2c95fcce96463f3e684267bd458092d2cfc)
* **pumpkin-solver:** Pass  between pumpkin-solver and pumpkin-core ([#276]https://github.com/ConSol-Lab/Pumpkin/issues/276) ([270c179]https://github.com/ConSol-Lab/Pumpkin/commit/270c1790908fb6b1beed6d590e94f6de7e557213)
* **pumpkin-solver:** Remove the terms with zero coefficients from linear constraints ([#269]https://github.com/ConSol-Lab/Pumpkin/issues/269) ([576887e]https://github.com/ConSol-Lab/Pumpkin/commit/576887e10116787372d293afb618c02e3a7df03c)
* Reduce cost of predicate notification ([#259]https://github.com/ConSol-Lab/Pumpkin/issues/259) ([d38e990]https://github.com/ConSol-Lab/Pumpkin/commit/d38e990dd42dd81f5d22200e8d6bff7ff688ad64)
* Removing leading number from statistics ([#261]https://github.com/ConSol-Lab/Pumpkin/issues/261) ([f9b996b]https://github.com/ConSol-Lab/Pumpkin/commit/f9b996b7725d200228f31f5eb1c0a54f569cdea9)
* Support warm_start and ignore constraint_name search annotations ([#235]https://github.com/ConSol-Lab/Pumpkin/issues/235) ([d7e8bb0]https://github.com/ConSol-Lab/Pumpkin/commit/d7e8bb028c04fc7cbf21400ef422c4c82673806e)


## [0.2.1]https://github.com/ConSol-Lab/Pumpkin/compare/pumpkin-solver-v0.2.0...pumpkin-solver-v0.2.1 (2025-07-10)


### Features

* Branch on objective variable first if not everything is assigned after the FlatZinc search strategy ([#230]https://github.com/ConSol-Lab/Pumpkin/issues/230) ([d676430]https://github.com/ConSol-Lab/Pumpkin/commit/d67643031e5ef7144953885608c15d94c10223e8)
* Arena allocation for the Nogood propagator ([#212]https://github.com/ConSol-Lab/Pumpkin/issues/212) ([6f647e8]https://github.com/ConSol-Lab/Pumpkin/commit/6f647e80eae28862b78cf05d99449241ae50e25b)
* Enforce constraint ID and inference label are provided in propagators ([#179]https://github.com/ConSol-Lab/Pumpkin/issues/179) ([74126a1]https://github.com/ConSol-Lab/Pumpkin/commit/74126a13adf08fdaca3f56bea4ee9c0d3098f5ce)
* Expose a timeout flag in the Python API ([#195]https://github.com/ConSol-Lab/Pumpkin/issues/195) ([7d4a74f]https://github.com/ConSol-Lab/Pumpkin/commit/7d4a74fe14b7f26e53d3dacd9729780574318ac8)
* Implement *_imp FlatZinc constraints for linear arithmetic ([#219]https://github.com/ConSol-Lab/Pumpkin/issues/219) ([c00050f]https://github.com/ConSol-Lab/Pumpkin/commit/c00050f963a1b07b1018b7808f297560c16a16aa)
* Implement the table and negative table constraints ([#194]https://github.com/ConSol-Lab/Pumpkin/issues/194) ([49344d6]https://github.com/ConSol-Lab/Pumpkin/commit/49344d6c10d2489b8cabcc5e9abcbb241e1490ec)
* Improving notification system for nogood propagator ([#190]https://github.com/ConSol-Lab/Pumpkin/issues/190) ([b04ac58]https://github.com/ConSol-Lab/Pumpkin/commit/b04ac587089e26c49b8e0cd299145fad50600469)
* Merge equivalence classes of variables in int_eq as a preprocessing step ([#221]https://github.com/ConSol-Lab/Pumpkin/issues/221) ([9b5c1cc]https://github.com/ConSol-Lab/Pumpkin/commit/9b5c1ccc85a4a8f3c7551d53f37951a0aa846afa)
* Propagator for binary arithmetic constraints `int_ne` and `int_eq` ([#223]https://github.com/ConSol-Lab/Pumpkin/issues/223) ([00a16e0]https://github.com/ConSol-Lab/Pumpkin/commit/00a16e06f934a808413ac869f5392027f1301a8a)
* Remove unused variables from the FlatZinc AST ([#222]https://github.com/ConSol-Lab/Pumpkin/issues/222) ([223a26a]https://github.com/ConSol-Lab/Pumpkin/commit/223a26ad33b5cff250afe20d87798004e902ba54)
* Rewrite `int_lin_eq` and `int_lin_ne` over two variables into their binary equivalents ([#240]https://github.com/ConSol-Lab/Pumpkin/issues/240) ([a370866]https://github.com/ConSol-Lab/Pumpkin/commit/a370866149683befbf8d529a54064cadeee20738)


### Bug Fixes

* Create sparse domains properly for a sparse FlatZinc domain ([#243]https://github.com/ConSol-Lab/Pumpkin/issues/243) ([6225ff5]https://github.com/ConSol-Lab/Pumpkin/commit/6225ff5406f35960827c1b68f44180c0b6589b0d)
* Disable recursive minimisation when logging the full proof ([#215]https://github.com/ConSol-Lab/Pumpkin/issues/215) ([7a0a08e]https://github.com/ConSol-Lab/Pumpkin/commit/7a0a08e4080221682438adf478f105d1d291b9ae)
* Don't log same domain inference multiple times per deduction ([#227]https://github.com/ConSol-Lab/Pumpkin/issues/227) ([30a7b53]https://github.com/ConSol-Lab/Pumpkin/commit/30a7b53dd8e0a540317539dc9f2b8a804ff34e28)
* Fix lazy explanations for the element propagator ([#191]https://github.com/ConSol-Lab/Pumpkin/issues/191) ([60e2bea]https://github.com/ConSol-Lab/Pumpkin/commit/60e2bea7ba403990b147a0b3a27546fccd27ee73)
* Log the correct proofs when optimising ([#216]https://github.com/ConSol-Lab/Pumpkin/issues/216) ([ca6e452]https://github.com/ConSol-Lab/Pumpkin/commit/ca6e4528d341d14060868d3135fa365586ea63d2)
* Log the initial bounds in the full proof as inferences ([#211]https://github.com/ConSol-Lab/Pumpkin/issues/211) ([7624035]https://github.com/ConSol-Lab/Pumpkin/commit/7624035b39c3b5a10b99ad3f3ae7a3a37afbdb43)
* Properly explain root-level explanations that are not considered during conflict analysis ([#176]https://github.com/ConSol-Lab/Pumpkin/issues/176) ([d237293]https://github.com/ConSol-Lab/Pumpkin/commit/d237293fddb8970df8ad0e5b89eaf98b19d4013b)
* Update outdated documentation from before the v0.2 release ([#177]https://github.com/ConSol-Lab/Pumpkin/issues/177) ([8e4009f]https://github.com/ConSol-Lab/Pumpkin/commit/8e4009fe45838f244e130ff4f6e4d3aa1f75ea5e)

## [0.2.0]https://github.com/ConSol-Lab/Pumpkin/compare/pumpkin-solver-v0.1.4...pumpkin-solver-v0.2.0 (2025-04-11)


### Features

* Add logging for branchers ([#135]https://github.com/ConSol-Lab/Pumpkin/issues/135) ([d8814f1]https://github.com/ConSol-Lab/Pumpkin/commit/d8814f12fe7e8bd38ccdfc02bdb049ee84d7fe16)
* Add method for retrieving relevant brancher events ([#138]https://github.com/ConSol-Lab/Pumpkin/issues/138) ([8253580]https://github.com/ConSol-Lab/Pumpkin/commit/8253580ef0a5e222abb8d81fa88a5e1d2e66bf89)
* Adding lower-bounding search to the solver ([#132]https://github.com/ConSol-Lab/Pumpkin/issues/132) ([57bde78]https://github.com/ConSol-Lab/Pumpkin/commit/57bde7879c20e02d2d59eeae627178eecd02460e)
* Adding random variable selector + sparse_set fixes ([#139]https://github.com/ConSol-Lab/Pumpkin/issues/139) ([1c4b85f]https://github.com/ConSol-Lab/Pumpkin/commit/1c4b85fe9fb802c9409df52741c0dff8c6b68d4a)
* Debug clone does not synchronise at level 0 + random splitter edge cases ([#146]https://github.com/ConSol-Lab/Pumpkin/issues/146) ([bba1abb]https://github.com/ConSol-Lab/Pumpkin/commit/bba1abbd1a24f4dd6fc9d09f387383aa2fd36eb1)
* Enable proof logging in appropriate test cases ([#154]https://github.com/ConSol-Lab/Pumpkin/issues/154) ([914f1bc]https://github.com/ConSol-Lab/Pumpkin/commit/914f1bc37cead8a6d8945b715af4551e4c11437b)
* Expose the optimisation API in the python wrapper ([#148]https://github.com/ConSol-Lab/Pumpkin/issues/148) ([ab9a463]https://github.com/ConSol-Lab/Pumpkin/commit/ab9a4632d08343ef685bf0223f400cdfe666a829)
* Flatzinc parse boolean & negative int arrays as well ([#142]https://github.com/ConSol-Lab/Pumpkin/issues/142) ([68aef75]https://github.com/ConSol-Lab/Pumpkin/commit/68aef7575a2316d24d3652618fe630f135cb028b)
* Improve element propagator ([#140]https://github.com/ConSol-Lab/Pumpkin/issues/140) ([b9bcfd3]https://github.com/ConSol-Lab/Pumpkin/commit/b9bcfd318c44725df0b90661ac7da1e1ca8fe07c)
* Lazy explanation context ([#123]https://github.com/ConSol-Lab/Pumpkin/issues/123) ([0781357]https://github.com/ConSol-Lab/Pumpkin/commit/0781357aae2fc4753df67d469056e397ecc46dd6)
* No additional variables during constraint construction ([#131]https://github.com/ConSol-Lab/Pumpkin/issues/131) ([19dd45b]https://github.com/ConSol-Lab/Pumpkin/commit/19dd45b97ab7cffb08f61500ff80c8e270145eab)
* Nemove explicit literals ([#115]https://github.com/ConSol-Lab/Pumpkin/issues/115) ([ab74e20]https://github.com/ConSol-Lab/Pumpkin/commit/ab74e20d511856dea3469aea067902db1d6a1d1f)
* Stateful integer ([#125]https://github.com/ConSol-Lab/Pumpkin/issues/125) ([eb01ed3]https://github.com/ConSol-Lab/Pumpkin/commit/eb01ed34fd0a62a3b34060a7f9f7418390c7e26c)


### Bug Fixes

* Addressing clippy warnings ([#143]https://github.com/ConSol-Lab/Pumpkin/issues/143) ([20c76bb]https://github.com/ConSol-Lab/Pumpkin/commit/20c76bb551588cff776c8c7154da8bcac4f2497c)
* Allow reification of lazy reasons ([#152]https://github.com/ConSol-Lab/Pumpkin/issues/152) ([c7418ec]https://github.com/ConSol-Lab/Pumpkin/commit/c7418ec1669050d78bea3f79dd7770f004f22593)
* Also log the inference that led to an empty domain ([#165]https://github.com/ConSol-Lab/Pumpkin/issues/165) ([7799119]https://github.com/ConSol-Lab/Pumpkin/commit/7799119a4ab65635636dac69bec50373b2e76494)
* Alternating brancher did not call the methods correctly ([#128]https://github.com/ConSol-Lab/Pumpkin/issues/128) ([6019d86]https://github.com/ConSol-Lab/Pumpkin/commit/6019d8606478625d40e225c8dab2bf19a8160b15)
* Disjunctive scheduling example had incorrect negation constraint ([#114]https://github.com/ConSol-Lab/Pumpkin/issues/114) ([fd007a0]https://github.com/ConSol-Lab/Pumpkin/commit/fd007a0af37d1674e42741eed97eb22e2a8ef3aa)
* Don't debug propagate deleted nogoods ([#147]https://github.com/ConSol-Lab/Pumpkin/issues/147) ([e3a6527]https://github.com/ConSol-Lab/Pumpkin/commit/e3a65279389f731dcd856325353b6d5d0167648b)
* Explain root-level assignments in the proof log during conflict analysis ([#163]https://github.com/ConSol-Lab/Pumpkin/issues/163) ([c877b06]https://github.com/ConSol-Lab/Pumpkin/commit/c877b0663fc9140ba55fd75e4dd7bc018d16bfa5)
* Fixing erronous conflict check when using incrementality ([#137]https://github.com/ConSol-Lab/Pumpkin/issues/137) ([07c253f]https://github.com/ConSol-Lab/Pumpkin/commit/07c253f568bce25cba9bc15e44656a7df1a95753)
* Give reason to root-level propagation in nogood propagator ([#124]https://github.com/ConSol-Lab/Pumpkin/issues/124) ([14868d5]https://github.com/ConSol-Lab/Pumpkin/commit/14868d5f69e159a528e881a78efdbb4e33449bca)
* Identify more places where root-level facts need to be logged to the proof ([#153]https://github.com/ConSol-Lab/Pumpkin/issues/153) ([3ac5019]https://github.com/ConSol-Lab/Pumpkin/commit/3ac50196d50314b268cf1ef2b178a64aa71a1b5f)
* Issue with integer multiplication + correct path in msc file ([#117]https://github.com/ConSol-Lab/Pumpkin/issues/117) ([ce25710]https://github.com/ConSol-Lab/Pumpkin/commit/ce25710071e58af84b6cdd0925b4099ab0d924a9)
* Post process new domain ([#129]https://github.com/ConSol-Lab/Pumpkin/issues/129) ([26a3b46]https://github.com/ConSol-Lab/Pumpkin/commit/26a3b46d45164b62ec5b58941065f956c9801c4f)
* Print statistics at the end of solving process + make pumpkin-solver default bin ([#162]https://github.com/ConSol-Lab/Pumpkin/issues/162) ([7d30ac8]https://github.com/ConSol-Lab/Pumpkin/commit/7d30ac83e55c07143f7afec20ce82ac00e014d71)
* Remove paste dependency ([#159]https://github.com/ConSol-Lab/Pumpkin/issues/159) ([ea53fed]https://github.com/ConSol-Lab/Pumpkin/commit/ea53fed1ee19fe8b902a407fea1fd2500ae4ae13)
* Root level assignments are properly explained in the proof when logging inferences ([#158]https://github.com/ConSol-Lab/Pumpkin/issues/158) ([857f84c]https://github.com/ConSol-Lab/Pumpkin/commit/857f84cbb39ab896bcbb36238fef29757d7536f3), closes [#118]https://github.com/ConSol-Lab/Pumpkin/issues/118 [#119]https://github.com/ConSol-Lab/Pumpkin/issues/119 [#156]https://github.com/ConSol-Lab/Pumpkin/issues/156

## [0.1.4]https://github.com/ConSol-Lab/Pumpkin/compare/pumpkin-solver-v0.1.3...pumpkin-solver-v0.1.4 (2024-11-07)


### Features

* allow logging of statistics to arbitrary writers ([#73]https://github.com/ConSol-Lab/Pumpkin/issues/73) ([136e03a]https://github.com/ConSol-Lab/Pumpkin/commit/136e03a6440f7e07e24e0e2f4e79ceb837c67a2d)
* introduce inference-nogoods in drcp-format ([#98]https://github.com/ConSol-Lab/Pumpkin/issues/98) ([e5ae6c2]https://github.com/ConSol-Lab/Pumpkin/commit/e5ae6c25ac6d9e5407d3b1ed963c20ef25e88d18)
* update to drcp-format v0.2.0 ([#101]https://github.com/ConSol-Lab/Pumpkin/issues/101) ([2f6df0c]https://github.com/ConSol-Lab/Pumpkin/commit/2f6df0c403bce7951c41ee0e275b9bdbef1cf9c4)

### Bug Fixes

* cumulative holes in domain incorrectly used cached profile ([#109]https://github.com/ConSol-Lab/Pumpkin/issues/109) ([4c86a8b]https://github.com/ConSol-Lab/Pumpkin/commit/4c86a8ba5a6b291c21da62be3fc4ed0e8321eda9)
* cumulative sequence generation found less profiles than it should + fixing issues with debug propagation ([#110]https://github.com/ConSol-Lab/Pumpkin/issues/110) ([f17222d]https://github.com/ConSol-Lab/Pumpkin/commit/f17222db5dd2e8fd01a1c55c1c08e4c557de50e6)
* use propagate for "<=" constraint + using solution reference from solution rather than solver  ([#108]https://github.com/ConSol-Lab/Pumpkin/issues/108) ([668bd0d]https://github.com/ConSol-Lab/Pumpkin/commit/668bd0df2b5856d7f74b8f58a280660bd93daebc)
* wrong profile found for over-interval conflict explanation ([#111]https://github.com/ConSol-Lab/Pumpkin/issues/111) ([4ba1d50]https://github.com/ConSol-Lab/Pumpkin/commit/4ba1d50276c4b189380e5a2072570297a5bfff0b)

## [0.1.3]https://github.com/ConSol-Lab/Pumpkin/compare/pumpkin-solver-v0.1.2...pumpkin-solver-v0.1.3 (2024-10-31)


### Features

* adding synchronisation for the cumulative constraint ([#86]https://github.com/ConSol-Lab/Pumpkin/issues/86) ([5ef9d56]https://github.com/ConSol-Lab/Pumpkin/commit/5ef9d56f34e5d77cc3ccb753070f09cae93e7311)
* implement consistency check interface in linear less than propagator ([#87]https://github.com/ConSol-Lab/Pumpkin/issues/87) ([089a083]https://github.com/ConSol-Lab/Pumpkin/commit/089a083432a064c5eb001e6b78293eac85d0e0f1)

## [0.1.2]https://github.com/ConSol-Lab/Pumpkin/compare/pumpkin-solver-v0.1.1...pumpkin-solver-v0.1.2 - 2024-10-30

### Added

- incremental backtracking for the cumulative constraint ([#60]https://github.com/ConSol-Lab/Pumpkin/pull/60)

### Fixed

- do not print intermediate solution when flag is not set + solution callback for satisfaction problems ([#77]https://github.com/ConSol-Lab/Pumpkin/pull/77)
- issue with time-point ending up between profiles for pointwise sequence explanation ([#78]https://github.com/ConSol-Lab/Pumpkin/pull/78)
- take ownership of the propagation context in propagators ([#85]https://github.com/ConSol-Lab/Pumpkin/pull/85)
- complete proof when propagator initialization identifies root-level conflict ([#80]https://github.com/ConSol-Lab/Pumpkin/pull/80)
- float stat into one line ([#83]https://github.com/ConSol-Lab/Pumpkin/pull/83)

## [0.1.1] - 2024-10-17

### Added

- Documentation to the containers module.
- Installation instructions through cargo to the README.

### Fixed

- Link to crates.io in README.

## [0.1.0] - 2024-10-17

### Added

- Lazy clause generation with eager SAT literals for all integer domains.
- VSIDS variable selection with solution-guided/phase-saving value selection.
- Support for the FlatZinc builtins for integer and boolean variables.
- Support for the `cumulative` global constraint through time-table filtering.
- Support for MiniZinc search annotations.
- Example model for disjunctive scheduling using the Rust API.
- Logging of various solver statistics.
- Start of a programmable search API.