Assess problem verifiability and construct evaluation apparatus for LLM+verifier loops
This skill helps you answer three questions:
Foundation: the P vs NP asymmetry (Cook, 1971; Karp, 1972). Problems amenable to LLM+verifier loops are those where candidate verification is computationally cheaper than candidate generation. This is the only rigorous foundation — everything else is heuristic.
Every working LLM+verifier system converges on one operational requirement: a deterministic function that scores candidates without human judgment.
evaluate(program) -> score (Romera-Paredes et al., Nature 2024)If you can write this function, the problem is amenable. If you can't, it isn't. There is no deeper formalization — this is where the theory ends and domain judgment begins.
Two questions to answer, in order:
1. Can verification be automated? Can you write code that checks a candidate's correctness without human judgment? If yes, proceed. If no, the problem is not amenable as stated. Consider reformulating to extract a verifiable sub-problem.
2. What verification tool fits? Match your problem to the right tool:
| If your verifier needs to... | Use | Guarantee | |------------------------------|-----|-----------| | Prove properties for ALL inputs | Z3 (SMT solver) or Lean4 (proof assistant) | Sound (within decidable fragment / proof kernel) | | Check pre/postconditions on code | Dafny -> Boogie -> Z3 | Sound for specified contracts | | Run candidates against test cases | Test suite + sandbox | Empirical (bounded by test coverage) | | Aggregate over stochastic runs | Simulation (N>30 runs) | Statistical (confidence intervals) | | Judge quality subjectively | LLM-as-judge | None (non-stationary, noisy) |
Reference: rules/assess-verifiability.md for the full assessment process.
Reference: rules/verification-tools.md for tool APIs.
Explicitly labeled as heuristics, not formal criteria.
Wei (2025, blog post) identifies 5 properties correlated with LLM+verifier success:
These are useful for quick triage but not formally validated. A problem can satisfy all 5 and still be hard if the evaluator is buggy. A problem can satisfy 3 and work fine if the evaluator is well-designed.
Keles (2025, blog post) observes: "Verifiability is the limit" — LLM capability isn't the bottleneck; the ability to check outputs is. This explains why LLMs succeed at frontend (visual verification) but struggle with backend (test infrastructure required). Directionally correct, not formally defined.
Reference: rules/assess-verifiability.md for how to apply these.
Once you've assessed verifiability and chosen a tool, construct the evaluator:
BenchmarkEvaluator + CascadeEvaluator.CompositeEvaluator.All evaluators implement: evaluate(program) -> EvaluationResult(score, metrics, feedback, passed)
Reference: rules/design-evaluator.md for construction templates.
| Rule | When to Read |
|------|-------------|
| rules/assess-verifiability.md | Before starting any solver project — determine if and how the problem is verifiable |
| rules/verification-tools.md | When choosing between Z3, Lean4, Dafny, test suites, simulation |
| rules/design-evaluator.md | When constructing the evaluator — templates per verification tool |
| rules/staged-evaluation.md | When evaluation is expensive (>5s per candidate, 100+ candidates) |
| rules/quality-diversity-metrics.md | When using evolutionary search — multi-metric design |
| rules/failure-modes.md | Before shipping any evaluator — known failure modes |
Optional. This skill works without the SDK — patterns are implementable standalone.
If available:
from solver_sdk.core.evaluator import Evaluator, BenchmarkEvaluator, CompositeEvaluator
from solver_sdk.core.types import Program, EvaluationResult, RichEvaluationFeedback
from solver_sdk.verification.cascade import CascadeEvaluator
from solver_sdk.verification.feedback import FeedbackGenerator
from solver_sdk.verification.formal import FormalVerifier # stubs — requires external toolchains
SDK types are referenced in templates but all patterns are implementable with standard Python.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer