Skip to content

Invariant testing: feasible, merged states; space leak fixes; tutorial - #1259

Open
msooseth wants to merge 8 commits into
stack/6-calldatafrom
stack/7-invariants
Open

msooseth wants to merge 8 commits into
stack/6-calldatafrom
stack/7-invariants

Conversation

@msooseth

Copy link
Copy Markdown
Collaborator

Description

Invariant testing keeps only feasible, slimmed states, and merges states that differ only in their path conditions into one with a shortened disjunction of those conditions. This also fixes space leaks in symbolic execution, and adds an invariant testing tutorial to the docs.

Part 7 of 7 of splitting #1248; this branch is identical to spark-psm-invariants.

Checklist

  • tested locally
  • added automated tests
  • updated the docs
  • updated the changelog

@msooseth
msooseth added this pull request to stack #1260 November 13, 2026 14:06
@msooseth
msooseth force-pushed the stack/7-invariants branch 2 times, most recently from 63c8432 to 01e0775 Compare November 13, 2026 14:34
msooseth and others added 8 commits November 13, 2026 20:06
…leaks in symbolic execution

Success leaves are checked by the solver and deduplicated as they are
reached. Traces, memory size and loop visit counters no longer keep earlier
VMs alive, and memory snapshots at forks drop the unused zeros.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ions

The end states of one call with the same accounts, block and environment
become one state constrained by the disjunction of their path conditions,
so the next call explores it once. Logs of earlier calls are dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two parts that differ only in a condition and its negation become one
without it, and parts implied by others are dropped, so the branches of
an assertion leave no disjunction behind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Newer optics exports disjoin from Optics.Core, which made the Windows
build fail with an ambiguous occurrence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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