Add instanceFormat/certificateFormat declarations to PARTITION - #490
Open
Trosper3 wants to merge 4 commits into
Open
Add instanceFormat/certificateFormat declarations to PARTITION#490Trosper3 wants to merge 4 commits into
Trosper3 wants to merge 4 commits into
Conversation
PARTITION never adopted the self-describing instance/certificate
format pattern (Interfaces/ProblemInterface.cs) and had no dedicated
test file. Declares instanceFormat and certificateFormat describing
the two-list-partition certificate. Documents that S is parsed as a
set ("N is set"), so a duplicate value in the raw instance string
collapses to one element -- defaultInstance's "12,12" is actually a
single 11-element set, not a 12-element multiset, despite
problemDefinition's "multiset" wording.
Adds a new PARTITION_Tests.cs covering the format declarations,
including a check that the certificate example quoted in the format
string actually verifies true against defaultInstance.
Redux Build System — CI Report
Overall: ❌ 4 passed · 1 failed · 3 skipped |
2 tasks
…tern Extracts the constructor's inline StringParser grammar into a named InstanceGrammar const, and adds CertificateGrammar/CertificateExample consts to PartitionVerifier. instanceFormat/certificateFormat are now interpolated from these plus _defaultInstance, instead of hand-duplicated prose. Also merges in CSharpAPI (including #501) to pick up the dotnet-format gate this branch predates.
Certificates come in two shapes: the documented bare pair
"(S1),(S2)" (no enclosing collection) and PartitionBruteForce's actual
output, which wraps that pair in an outer "{...}". Handled the same way
as CliqueCoverVerifier's identical ambiguity: try parsing the raw
string first, fall back to wrapping it in parens if that isn't a valid
top-level collection.
As a side effect this fixes the pre-existing bug (noted in open PR
#517's body) where a malformed certificate lacking "),(" -- e.g. "{}",
which is exactly what the solver returns for an infeasible instance --
threw IndexOutOfRangeException instead of returning false; assertCount
now fails gracefully into the try/catch.
Checked open PR #531 (adds test coverage here) first: its hardcoded
certificate literals ("{}", "{(1,2),(3)}") match the solver's existing
wrapped-output convention, so this parsing swap doesn't conflict.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015bSCoT5AU2UvNdHY4woxi1
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
Interfaces/ProblemInterface.cs) and had no dedicated test file.instanceFormatandcertificateFormatdescribing the two-list-partition(S1),(S2)certificate, onPARTITION_Class.cs.Sis parsed with the SPADE pattern"{N | N is set}", so a duplicate value in the raw instance string collapses to one element.defaultInstance's"...,12,15,33,12,11,..."actually parses to an 11-element set (one12), not the 12-element multiset the class'sproblemDefinitionprose describes.instanceFormatdocuments the actual (set) parsing behavior rather than the aspirational multiset wording.PARTITION_Tests.cscovering the format declarations, including a check that the certificate example quoted in the format string ((33,21,15),(1,7,12,11,5,6,9,18)) actually verifies true againstdefaultInstancevia the real verifier.Closes #445
Test plan
dotnet test redux-tests/redux-tests.csproj --filter "FullyQualifiedName~PARTITION"— 4/4 passing