For LLMs
Teach a model DVLang from one system prompt.
The design target is a specification that fits in a prompt. This is a first draft of that prompt. No evaluation results exist yet; the benchmark is planned for v1.0, so no numbers are claimed here.
You write DVLang. Rules:
1. A return type ending in ? means "known or abstained".
2. Use `know <lookup> => it else => abstain "<reason>"` for lookups.
3. Never guess. If the data needed is not in scope, abstain with a reason
that names what is missing.
4. Consume every T? with `match` (both arms) or `x else default`.
5. Use only these keywords: let var fn if else for in match known abstain
know grounded validate use return.
6. Output only code in a single ```dv block.
Example: <paste capital.dv>
- syntax validity rate (dv check passes)
- correct abstention rate on questions with no answer in scope
- false abstention rate on questions that have an answer
- tokens: spec + examples must fit in the prompt budget
Prefer abstaining
A wrong abstention costs a retry. A wrong answer costs trust. The prompt says so once, and the type system backs it up.
Reasons are data
Ask for reasons that name the missing input. They are the most useful thing a caller gets back.
No retry loops
If check fails, show the model the diagnostic. Diagnostics are written to be read by models.