Skip to content

Commit 40443e7

Browse files
authored
docs: sync EDSL reference + verification status with merged features (#2038)
- external-calls: document forwarding a Bytes/dynamic-array member projected from a struct-array element to externals (#1975/#2006), which the EDSL reference did not cover. - VERIFICATION_STATUS: add the new generic frame-reasoning library (execStmts_frame_rule, writeFootprint, ExecutionSummary; #1990/#1994) and finite mapping-slot non-alias certificates (#2001/#2022) under "what is generic today"; refresh the stale theorem/lemma count (2302 -> 5266, from the auto-generated PrintAxioms.lean total) and the Last Updated stamp.
1 parent 26344a0 commit 40443e7

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

docs-site/content/edsl/external-calls.mdx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ function notify (leaves : Array Uint256) : Unit := do
4545

4646
Argument types may be word-like (`Uint256`, `Uint8`, `Address`, `Bytes32`,
4747
`Bool`) or directly-forwarded `Array<wordLike>` / `Bytes` from the caller's ABI.
48-
Return types must be word-like or static ABI composites of word-like values;
49-
dynamic return types (e.g. `String`) are rejected.
48+
A `Bytes` (or dynamic-array) member projected from a struct-array element may
49+
also be forwarded directly, e.g.
50+
`externalCall "hashBytes" [(arrayElement txs idx).callData]` (likewise through
51+
`tryExternalCall`). Return types must be word-like or static ABI composites of
52+
word-like values; dynamic return types (e.g. `String`) are rejected.
5053

5154
### Inspecting call results (`callResult`)
5255

docs/VERIFICATION_STATUS.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ Tracking:
5959
**What is generic today**:
6060
- a structural theorem for raw statement lists inside the explicit `SupportedStmtList` fragment witness in [`TypedIRCompilerCorrectness.lean`](../Compiler/TypedIRCompilerCorrectness.lean), re-exported for the compiler-proof layer in [`SupportedFragment.lean`](../Compiler/Proofs/IRGeneration/SupportedFragment.lean)
6161
- a whole-contract theorem surface, [`compile_preserves_semantics`](../Compiler/Proofs/IRGeneration/Contract.lean), quantified over arbitrary supported `CompilationModel`s, selectors, a `SupportedSpec` witness, and successful `CompilationModel.compile` output; the source side is already expressed in the helper-aware semantics family using the canonical `SupportedSpec.helperFuel` bound
62+
- a syntactic frame-reasoning library for the IR interpreter in [`Frames.lean`](../Compiler/Proofs/Frames.lean): `execStmts_frame_rule` proves any supported statement list preserves every resource disjoint from its declared write set ([#1990](https://github.com/lfglabs-dev/verity/issues/1990) part 1); `writeFootprint` / `execStmts_frame_rule_writeFootprint` compute a syntactic write footprint and prove the frame rule against it ([#1990](https://github.com/lfglabs-dev/verity/issues/1990) part 2); and the `ExecutionSummary` family (`execStmt_setStorage_execution_summary`, `execStmtList_execution_summary_cons`) gives composable per-statement storage-write summaries ([#1994](https://github.com/lfglabs-dev/verity/issues/1994))
63+
- non-alias certificates for finite mapping slots in [`MappingSlot.lean`](../Compiler/Proofs/MappingSlot.lean): distinct keys / word offsets resolve to distinct storage slots (`mappingSlotLocations_nonAlias_get`, `nestedMappingSlotLocations_nonAlias_get`), supporting the write-set disjointness the frame rule consumes ([#2001](https://github.com/lfglabs-dev/verity/issues/2001))
6264

6365
**What is not yet covered**:
6466
- the supported whole-contract fragment is still intentionally narrower than the full `CompilationModel` surface; unsupported features remain documented at the boundary instead of being claimed as proved
@@ -209,7 +211,7 @@ Also note that the macro-generated `*_semantic_preservation` theorems are not co
209211
**Proof-Only Properties (36 exclusions)**: Internal proof machinery that cannot be tested in Foundry.
210212

211213
0 `sorry` remaining across `Compiler/**/*.lean` and `Verity/**/*.lean` proof modules.
212-
2302 theorems/lemmas (1513 public, 789 private) verified by `lake build PrintAxioms`.
214+
5266 theorems/lemmas (3645 public, 1621 private) verified by `lake build PrintAxioms`.
213215

214216
0 documented Lean axioms remain. The former mapping-slot range axiom has been eliminated via the kernel-computable Keccak engine. Selector computation is kernel-computable, the Layer 2 body-simulation axiom has been eliminated, and the Layer 3 dispatch bridge is tracked as an explicit theorem hypothesis rather than a Lean axiom.
215217

@@ -247,4 +249,4 @@ See [`TRUST_ASSUMPTIONS.md`](../TRUST_ASSUMPTIONS.md) for the full trust model a
247249

248250
---
249251

250-
**Last Updated**: 2026-04-11
252+
**Last Updated**: 2026-06-19

0 commit comments

Comments
 (0)