v1.9.0 (FEAT-016 slice-3, AC-011): octagon Miné strong closure#44
Merged
Conversation
Closes the referenced-paper precision item AC-011 — the final refinement of the octagon arc. Pure algebra; NO analyzer output change (FEAT-016's AC was already met in v1.8.0). scry-octagon: - strong_close: Floyd-Warshall close + the Miné tightening m[i][j] := min(m[i][j], floor((m[i][î] + m[ĵ][j]) / 2)) + re-close. Derives a difference bound between two variables from their UNARY bounds (x≤10 ∧ y≥0 ⟹ x-y≤10) that plain Floyd-Warshall cannot. Sound for integers via the floor. - bound_of now projects through strong_close. - 3 γ-sweep tests: precision win (derives x_0-x_1≤10 where close gives INF), concretization-preservation over a grid, bottom-preservation. Proof (proofs/rocq/OctagonStrongClose.v, strong_close_step_sound): from -2·vi≤a and 2·vj≤b the tightened bound floor((a+b)/2) over-approximates vj-vi — the step drops no concrete integer point. Admit-free; verified locally with Coq 9.0.1 and wired into the rocq-proofs CI job. HONEST SCOPE: the analyzer output is byte-identical to v1.8.0. Strong closure tightens difference/sum bounds, never a variable's own unary bound, and the analyzer projects octagon→per-variable intervals (unary), so on the current difference+unary corpus strong vs plain closure is invisible at the output (fixtures 08-11 unchanged). The precision becomes observable when a consumer reads relational bounds or the analyzer generates sum constraints (future work). SCRY_VERSION → 1.9.0 is a release stamp. FEAT-016 stays implemented; the octagon arc (slices 1/2a/2b-i/2b-ii/3) is now complete. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
📐 rivet artifact deltaPR: #44 Base SHA: Validationhead — `rivet validate` resultbase — `rivet validate` result (for comparison)Artifact stats
full stats — headDiff (base → head)AADL model — headPosted by the |
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.
Summary
Closes the referenced-paper precision item AC-011 (FEAT-016 slice-3) — the final refinement of the octagon arc. Pure algebra; no analyzer output change (FEAT-016's acceptance criterion was already met and released in v1.8.0).
Miné strong (tight) closure derives a ±difference bound between two variables from their unary bounds —
x ≤ 10 ∧ y ≥ 0 ⟹ x − y ≤ 10— which plain Floyd–Warshall (no edge betweenxandy) cannot.What changed —
crates/scry-octagonstrong_close— Floyd–Warshallclose, then the tighteningm[i][j] := min(m[i][j], ⌊(m[i][ī] + m[j̄][j])/2⌋), then a re-close. Sound for integers via the floor (div_euclid).bound_ofnow projects through it.strong_close_derives_difference_from_unary_bounds— derivesx_0 − x_1 ≤ 10wherecloseleaves INF), concretization-preservation over a grid, and bottom-preservation.Evidence
proofs/rocq/OctagonStrongClose.v(strong_close_step_sound): from−2·vi ≤ aand2·vj ≤ b, the tightened bound⌊(a+b)/2⌋over-approximatesvj − vi— drops no concrete integer point. Admit-free; verified locally (Coq 9.0.1) + wired into therocq-proofsCI job.Honest scope — no analyzer output change
The analyzer output is byte-identical to v1.8.0. Strong closure tightens difference/sum bounds, never a variable's own unary bound, and the analyzer projects the octagon back to per-variable intervals (which read unary bounds) — so on the current corpus (difference + unary constraints only) strong vs. plain closure is invisible at the output (fixtures 08–11 unchanged). The precision becomes observable only when a consumer reads relational bounds or the analyzer generates sum constraints (future work).
SCRY_VERSION → 1.9.0is a release stamp.Falsification statement
Strong closure is sound (drops no concrete point) and strictly more precise than Floyd–Warshall when a difference is implied only by unary bounds. Falsifier: the γ-sweep test asserts identical concrete-point sets (soundness) and
strong_close_derives_difference_from_unary_boundsasserts thex_0 − x_1 ≤ 10derivation (precision); the Rocq theorem proves the step. Does not claim any analyzer interval-output change, nor the full integer tight closure's unary even-ification.Scope
FEAT-016 stays
implemented; the octagon arc (slices 1 / 2a / 2b-i / 2b-ii / 3) is now complete.🤖 Generated with Claude Code