Conversation
zayenz
marked this pull request as ready for review
October 4, 2026 11:48
zayenz
commented
Oct 4, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add native inter-distance constraints for fixed and variable separation. The public overloads enforce
|x[i] - x[j]| >= pand accept an integer constant orIntVardistance.IPL_BASICuses the O(n log n), linear-space feasibility algorithm and binary search to tighten a variable distance's upper bound.IPL_DEF,IPL_ADVANCED, andIPL_BASIC_ADVANCEDschedule quadratic bounds(Z) filtering after that stage. Distance one rewrites to the existing bounds-consistent distinct propagator. Domains with holes use interval supports.Feasibility uses sorted Region arrays and Fenwick trees for task loads and active residue groups. Residue removal and reactivation reuse the same scratch storage. Filtering separates forbidden-region construction, completion tables, and internal and external adjustment sweeps. The propagator uses Gecode views, subscriptions, cloning, disposal, and temporary region storage. Wide arithmetic covers deadlines, reflected bounds, and assigned gaps.
The tests use the integer test harness for assignment, cloning, search, and consistency, with custom Base tests for heterogeneous domains and posting contracts. The independent tuple oracle checks feasibility, supported bounds, and maximum distance, and records complete inputs on failure. Public documentation, paper references, the changelog, and both build systems are included.
Validation
gecode-test -test InterDistance -iter 1.075e07ef3e, including every Windows build and test job.git diff --checkpassed.Algorithm references: Garey et al., SIAM Journal on Computing 1981, Quimper, Lopez-Ortiz, and Pesant, AAAI 2006, and the CPL 2008 extension, Section 5 for variable distance.