Skip to content

Conversation

@leodemoura
Copy link
Member

This PR ensures that solver propagation steps are necessary in the generated tactic script to close the goal.

It produces more compact proof scripts, but this is not just an optimization, if we include an unnecessary step, we may fail to replay the generated script when cases steps are pruned using non-chronological backtracking (NCB). For example, when executing finish?, we may have performed a cases #<anchor> step that enabled ring to propagate a new fact. If this fact is not used in the final proof, and the corresponding cases #<anchor> step is pruned by NCB, the ring step will fail during replay.

This PR ensures that solver propagation steps are necessary in the
generated tactic script to close the goal.

It produces more compact proof scripts, but this is not just an
optimization, if we include an unnecessary step, we may fail to
replay the generated script when `cases` steps are pruned using
non-chronological backtracking (NCB). For example, when executing
`finish?`, we may have performed a `cases #<anchor>` step that enabled
`ring` to propagate a new fact. If this fact is not used in the final
proof, and the corresponding `cases #<anchor>` step is pruned by NCB,
the `ring` step will fail during replay.
@leodemoura leodemoura added the changelog-tactics User facing tactics label Oct 25, 2025
@leodemoura leodemoura enabled auto-merge October 25, 2025 02:09
@leodemoura leodemoura added this pull request to the merge queue Oct 25, 2025
@leodemoura leodemoura removed this pull request from the merge queue due to a manual request Oct 25, 2025
@leodemoura leodemoura enabled auto-merge October 25, 2025 02:21
@leodemoura leodemoura added this pull request to the merge queue Oct 25, 2025
Merged via the queue into master with commit 1643fd7 Oct 25, 2025
14 checks passed
wkrozowski pushed a commit to wkrozowski/lean4 that referenced this pull request Oct 27, 2025
…anprover#10949)

This PR ensures that solver propagation steps are necessary in the
generated tactic script to close the goal.

It produces more compact proof scripts, but this is not just an
optimization, if we include an unnecessary step, we may fail to replay
the generated script when `cases` steps are pruned using
non-chronological backtracking (NCB). For example, when executing
`finish?`, we may have performed a `cases #<anchor>` step that enabled
`ring` to propagate a new fact. If this fact is not used in the final
proof, and the corresponding `cases #<anchor>` step is pruned by NCB,
the `ring` step will fail during replay.
kim-em pushed a commit that referenced this pull request Oct 27, 2025
…0949)

This PR ensures that solver propagation steps are necessary in the
generated tactic script to close the goal.

It produces more compact proof scripts, but this is not just an
optimization, if we include an unnecessary step, we may fail to replay
the generated script when `cases` steps are pruned using
non-chronological backtracking (NCB). For example, when executing
`finish?`, we may have performed a `cases #<anchor>` step that enabled
`ring` to propagate a new fact. If this fact is not used in the final
proof, and the corresponding `cases #<anchor>` step is pruned by NCB,
the `ring` step will fail during replay.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog-tactics User facing tactics

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants