Skip to content

docs(plans): refine model-property-checking surface - #34

Merged
scarmuega merged 1 commit into
mainfrom
docs/check-forward-compatible-surface
Jun 25, 2026
Merged

docs(plans): refine model-property-checking surface#34
scarmuega merged 1 commit into
mainfrom
docs/check-forward-compatible-surface

Conversation

@scarmuega

Copy link
Copy Markdown
Contributor

Refines the model-property-checking.md plan merged in #33, after a design review pass. Docs-only.

What changed (the property / trix prove surface):

  • Forward-compatible by construction (new decision 8). The verified subject is always a transaction; a rule is a projection of it, never a top-level subject — so widening rule→tx→protocol only adds clauses, never reinterprets existing ones.
  • invokes / accepted are explicit predicates under assume/assert, not binder magic. The assume-vs-assert position of accepted is exactly the soundness (V ⊆ Safe) vs completeness (Honest ⊆ V) distinction. This makes "which input runs which spend rule" expressible.
  • tx-relative namespaced access (new decision 9). Inputs/outputs under tx.inputs.<name> / tx.outputs.<name>; inputs are records projected explicitly (.value / .datum / .redeemer), removing the value-vs-datum overload. Mint redeemer at tx.mints.<Policy>.redeemer.
  • ASCII proof-keyword surface (new decision 10). Block keyword checkproperty; one binding per for (no comma-lists); equivalent dropped (it's assert a == b); quantifier-neutral binder with assert (∀) / satisfiable (∃) as duals; no Unicode glyphs.

Scope unchanged: prove the Tx3 model, not the generated enforcement layer. Branch is based on the post-#33 main; clean delta.

🤖 Generated with Claude Code

Forward-compatible, math-faithful revision of the model-property-checking plan
(builds on the merged #33):

- Subject is always a transaction; rules are projections — widening to
  tx-level/protocol-level only adds clauses (decision 8).
- `invokes`/`accepted` are explicit predicates under assume/assert, not binder
  magic; assume-vs-assert position is the soundness/completeness distinction.
- `tx`-relative namespaced access; inputs are records (.value/.datum/.redeemer),
  killing the value/datum overload; mint redeemer at tx.mints.<Policy>.redeemer.
- Rename block keyword check -> property; one binding per `for` (no comma-lists);
  drop `equivalent` (it's `assert a == b`); ASCII proof-keyword surface, no glyphs;
  quantifier-neutral binder (decision 10).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@scarmuega
scarmuega merged commit e6a1a52 into main Jun 25, 2026
@scarmuega
scarmuega deleted the docs/check-forward-compatible-surface branch June 25, 2026 16:14
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