Skip to content

Add minimum-distance constraints with single and decomposed propagation - #249

Draft
zayenz wants to merge 3 commits into
mainfrom
feature/min-distance
Draft

zayenz wants to merge 3 commits into
mainfrom
feature/min-distance

Conversation

@zayenz

@zayenz zayenz commented Oct 5, 2026

Copy link
Copy Markdown
Member

Add exact minimum-distance constraints over selected site indices: z = min(d(x[i], x[j])). Distances use a shared validated matrix or a shared callable evaluated on demand, and optional inclusive requirements apply to selected-position pairs.

Forward propagation is available as MDP_SINGLE, the default advisor-based organization with cached pair maxima, or MDP_DECOMPOSED, with one actor per pair and a finalizer. The single organization avoids the quadratic actor count. Optional arguments place ipl before the organization. A separate greedy conflict-matching upper bound is enabled by default and disabled with IPL_BASIC. Propagation is intentionally incomplete; repeated sites and variable aliases are supported.

The algorithms follow M. Z. Lagerkvist, Propagation Algorithms for the Minimum-Distance Constraint over Selected Points, ModRef 2026. See the paper implementation and paper discussion and evidence. Public documentation and the changelog credit the paper.

Validation:

  • All 42 focused minimum-distance tests passed twice, covering both organizations, matrix/callable distances, pair requirements, aliases, cloning, zero witnesses, matching certificates and shared callback lifetime.
  • Release build and configured check target passed; the configured check was rerun after the independent readiness review.
  • Independent zdev branch review found no substantive defects. Changelog tidy and git diff --check passed.
  • Local performance tests compared the organizations and distance representations. Benchmarks and result artifacts are excluded from this branch.
  • Cross-platform CI remains to be checked. Windows, Autotools and sanitizer execution were not verified locally.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant