Skip to content

Optimization: Share opposite-polarity literals in clause code trees#880

Open
Synrom wants to merge 6 commits into
vprover:masterfrom
Synrom:opposite-optimization
Open

Optimization: Share opposite-polarity literals in clause code trees#880
Synrom wants to merge 6 commits into
vprover:masterfrom
Synrom:opposite-optimization

Conversation

@Synrom

@Synrom Synrom commented Jul 16, 2026

Copy link
Copy Markdown

This PR optimizes clause code tree subsumption resolution by sharing literal information across polarities. Instead of storing separate positive and negative LitInfo entries for each literal, matching records whether a result came from the opposite polarity and handles that during matcher execution.

The implementation preserves subsumption priority over subsumption resolution by keeping non-opposite matches first in ILStruct and making ClauseMatcher::matchGlobalVars try non-opposite matches before falling back to opposite-polarity matches.

This optimization is currently not compatible with CHECK_GROUND_TERM=1.

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