Skip to content

feat(proofs): Kani bounded model checking for s-expression evaluator#133

Merged
avrabe merged 2 commits intomainfrom
worktree-agent-a44647d0
Apr 13, 2026
Merged

feat(proofs): Kani bounded model checking for s-expression evaluator#133
avrabe merged 2 commits intomainfrom
worktree-agent-a44647d0

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 12, 2026

Summary

  • 5 Kani proof harnesses for s-expression evaluator panic freedom and logical equivalences
  • Bounded expression generation (depth ≤ 2) with symbolic choice among 6 leaf + 4 connective variants
  • Proofs: panic freedom, De Morgan, double negation, implies expansion, excludes expansion

Verifies: REQ-041, REQ-030

🤖 Generated with Claude Code

Add five Kani proof harnesses for the sexpr_eval::check() function:

- proof_sexpr_check_no_panic: panic-freedom for all expressions (depth 2)
- proof_sexpr_de_morgan_and: not(and(a,b)) == or(not(a), not(b))
- proof_sexpr_double_negation: not(not(a)) == a
- proof_sexpr_implies_expansion: implies(a,b) == or(not(a), b)
- proof_sexpr_excludes_expansion: excludes(a,b) == !and(a,b)

Uses bounded symbolic expression generation (depth 2, 6 leaf variants
+ 4 connectives) with kani::any() and a concrete test artifact for
evaluation context.

Verifies: REQ-041, REQ-030

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Trace: skip

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@avrabe avrabe merged commit 67a793f into main Apr 13, 2026
16 of 18 checks passed
@avrabe avrabe deleted the worktree-agent-a44647d0 branch April 13, 2026 01:01
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