Skip to content

[VerifToSMT] Keep assumptions asserted across BMC timesteps#10788

Draft
leizaf wants to merge 1 commit into
llvm:mainfrom
leizaf:lfu/bmc-assume-scope
Draft

[VerifToSMT] Keep assumptions asserted across BMC timesteps#10788
leizaf wants to merge 1 commit into
llvm:mainfrom
leizaf:lfu/bmc-assume-scope

Conversation

@leizaf

@leizaf leizaf commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

The per-iteration pop/push in the BMC loop discarded every assertion from the previous timestep, including smt.asserts lowered from verif.assume. Checks at step i thus ignored assumptions from steps 0..i-1, yielding spurious counterexamples.

Restructure the scoping: the circuit function now asserts assumptions and definitions at the enclosing assertion level, opens a scope (push) at the end of its body, and asserts only the negated properties inside it; the loop pops that scope after each smt.check. Constraints now accumulate monotonically while property assertions stay per-step.

Assisted-by: Claude:Fable-5

@circt-bot

circt-bot Bot commented Jul 7, 2026

Copy link
Copy Markdown

Results of circt-tests run for ff06027 compared to results for 01b5614: no change to test results.

@leizaf leizaf force-pushed the lfu/bmc-assume-scope branch 3 times, most recently from 444a0d4 to cb5bc74 Compare July 7, 2026 21:14
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