Skip to content

split: add split * and split + to iterate over top-level conjunctions#1015

Merged
strub merged 1 commit into
mainfrom
split-star
May 26, 2026
Merged

split: add split * and split + to iterate over top-level conjunctions#1015
strub merged 1 commit into
mainfrom
split-star

Conversation

@strub
Copy link
Copy Markdown
Member

@strub strub commented May 25, 2026

split * peels every top-level /\ and && until the head is no longer a
conjunction; it is a no-op when the goal is not a conjunction. split +
is the same but errors if the outermost goal is not a conjunction. No
unfolding; only the SFand head is matched.

For asymmetric && (a && X), the right side may depend on a, so the
recursion intros a as a hypothesis, peels X, then re-generalizes the
hypothesis over every leaf produced. This mirrors how plain split
handles a single &&, and keeps the semantics sound when /\ or && is
nested under &&. E.g. a && (b /\ c) yields three subgoals
a, a => b, a => c.

…ions

`split *` peels every top-level /\ and && until the head is no longer a
conjunction; it is a no-op when the goal is not a conjunction. `split +`
is the same but errors if the outermost goal is not a conjunction. No
unfolding; only the SFand head is matched.

For asymmetric && (`a && X`), the right side may depend on `a`, so the
recursion intros `a` as a hypothesis, peels X, then re-generalizes the
hypothesis over every leaf produced. This mirrors how plain `split`
handles a single &&, and keeps the semantics sound when /\ or && is
nested under &&. E.g. `a && (b /\ c)` yields three subgoals
`a`, `a => b`, `a => c`.
@strub strub added this pull request to the merge queue May 26, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks May 26, 2026
@strub strub added this pull request to the merge queue May 26, 2026
Merged via the queue into main with commit e2bb4eb May 26, 2026
19 checks passed
@strub strub deleted the split-star branch May 26, 2026 16:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants