Repository navigation
Conversation
zayenz
added this pull request to stack #254
October 10, 2026 18:20
zayenz
force-pushed
the
feature/minizinc-registry
branch
from
October 12, 2026 16:22
7ff1853 to
f1cea6c
Compare
zayenz
force-pushed
the
feature/minizinc-registry
branch
from
October 13, 2026 21:12
e7d9334 to
f70f5f9
Compare
zayenz
marked this pull request as ready for review
October 14, 2026 03:01
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.
The Gecode MiniZinc library exposes missing native propagators through standard
fzn_hooks and additional modelling predicates ingecode.mzn.The standard hooks cover count inequalities, conditionals, nondeterministic regular constraints, optional distinctness and scheduling, and set intersection. MiniZinc retains responsibility for public overloads, assertions, index handling and optional values. Builtin expressions also use native implementations for extrema, supported float powers, set matrix element and scalar implication.
The Gecode-specific predicates provide inter-distance and minimum distance, arithmetic constraints including array-wide and modular products, offset distinctness and matching counts, optional rectangle non-overlap, and additional array, channeling and set relations. These interfaces reach native propagators that standard MiniZinc formulations do not reach, or avoid auxiliary variables through views.
Public predicates lower to typed bindings in
gecode_fzn.mzn, with documented semantics and reification support. Propagation strength is selected through annotations. Fixed-base floating-point powers and inverse logarithms use explicit MPFR rounding.Validation includes all 135 FlatZinc regressions, 131 MiniZinc integration cases, and predicate documentation generation.
Fixed-value conditional hooks delegate to their variable-value counterparts. The regular posters use concrete integer arguments, Boolean extrema preserve shared inputs directly, and the annotation test checks the exact propagation flags. The conditional library files follow modern upstream MiniZinc formatting.
The simplifications passed a release build, all 135 FlatZinc regressions and 16 shared-Boolean extrema tests with five iterations, 16 conditional compilation comparisons and executions, and four direct shared-Boolean registry cases.