← ClaudeAtlas

proof-drivenlisted

Proof-driven development. Use when implementing with formal verification using property-based testing, theorem proving, or proof tactics; zero unproven property policy enforced.
OutlineDriven/odin-claude-plugin · ★ 27 · AI & Automation · score 82
Install: claude install-skill OutlineDriven/odin-claude-plugin
# Proof-driven development Prove properties from requirements before writing code. Proofs guide implementation, not the reverse. Zero unproven properties in final code. **Modern insight (2025)**: PBT + example tests pairing is the standard -- properties discover edge cases, example tests prevent regressions and serve as documentation. Counterexamples from shrinking should always become permanent regression tests. AI-assisted PBT (Anthropic 2025) can generate properties from docstrings, but human judgment for property selection remains essential. See [frameworks](references/frameworks.md) for language-specific PBT and stateful testing tools. See [examples](references/examples.md) for brief property test patterns per language. See [formal-tools](references/formal-tools.md) for theorem provers and bounded model checkers. --- ## Property Categories | Category | Description | Example | |----------|-------------|---------| | **Postcondition** | Output satisfies contract | `sorted(sort(xs))` | | **Invariant** | Property preserved by operation | `len(xs) == len(sort(xs))` | | **Idempotence** | `f(f(x)) == f(x)` | `deduplicate(deduplicate(xs))` | | **Inverse / Round-trip** | `g(f(x)) == x` | `decode(encode(x)) == x` | | **Model-based** | Implementation matches reference | `my_sort(xs) == stdlib_sort(xs)` | | **Commutativity** | Order doesn't matter | `a + b == b + a` | | **Metamorphic** | Relationship between outputs | `sin(-x) == -sin(x)` | **Most effective** (OOPSLA 2025): Mo