Skip to content
docs
Arxo ↗

WebAssembly: the i32 spec-tests run

For LLMs6 sections

Result: 19 line-cases drawn from 14 directives of the official i32.wast integer test script were checked on 2 October 2026. The Arxo package w3c.wasm_core 0.1.0, run with law 0.1.1, returned the recorded value or trap in 19 of 19 cases, with zero mismatches. The numbers belong to that package version, that engine version, and that pinned copy of the test script — file test/core/i32.wast of WebAssembly/spec at main commit 608711107b7f1edb13efd57b7d79b49477462d36 (22 September 2026), pinned by SHA-256 f3b7e8fd641893ea0989a8ab801fce0654d276d27b5cad9cf482291a422cffe8. No third-party engine was executed in this run: the comparison is against the literals written in the .wast directives themselves.

WebAssembly ships an official conformance script: .wast files that assert exact values and exact traps for each instruction. The script is an external reference — it is maintained with the specification, not with either side of this comparison. The run takes a sample of its integer cases: wrap-around addition, subtraction and multiplication, signed and unsigned division and remainder including division by zero and the signed-division overflow, plus equality tests and the is-zero test. Each case carries the case facts and the question copied verbatim from the translated test suite of the package, and the expectation is the literal of the .wast directive. The public description of the language and its test suite is at the WebAssembly specification site.

Arxo returns an evaluation document with a proof graph; the .wast directive records a value or a trap. A case agrees when the outcome projected from the Arxo answer — the value, or the fact that evaluation traps — equals the literal of the directive. The contract compares the outcome only. The trap message text is identical on both sides (integer divide by zero, integer overflow) because the package carries the same wording; that wording match is noted for information and is not part of the comparison.

Case.wast line / directiveExpectation (literal)Arxo answerOutcome
W0137 add(1,1)=2value 2TRUE_ONLYmatch
W0241 add(0x7fffffff,1)=0x80000000value 2147483648TRUE_ONLYmatch
W0349 sub(0x7fffffff,-1)=0x80000000value 2147483648TRUE_ONLYmatch
W0459 mul(0x80000000,-1)=0x80000000value 2147483648TRUE_ONLYmatch
W0561 mul(0x01234567,0x76543210)=0x358e7470value 898528368TRUE_ONLYmatch
W06a74 div_s(5,2)=2value 2TRUE_ONLYmatch
W06b75 div_s(-5,2)=-2value -2TRUE_ONLYmatch
W0764 trap div_s(1,0)trapTRUE_ONLYmatch
W0866 trap div_s(0x80000000,-1)trapTRUE_ONLYmatch
W0985 trap div_u(1,0)trapTRUE_ONLYmatch
W10102 trap rem_s(1,0)trapTRUE_ONLYmatch
W11123 trap rem_u(1,0)trapTRUE_ONLYmatch
W12286 eqz(0)=1value 1TRUE_ONLYmatch
W13a292 eq(0,0)=1value 1TRUE_ONLYmatch
W13b293 eq(1,1)=1value 1TRUE_ONLYmatch
W13c294 eq(-1,1)=0value 0TRUE_ONLYmatch
W14a68 div_s(1,1)=1value 1TRUE_ONLYmatch
W14b69 div_s(0,1)=0value 0TRUE_ONLYmatch
W14c70 div_s(0,-1)=0value 0TRUE_ONLYmatch

Grouped: wrap-around arithmetic W01–W06 (8 line-cases), traps W07–W11 (5), comparisons W12–W14 (6). Every case carries a proof graph reaching the specification sections on integer operations (4.3.2) and on expression evaluation (4.6).

On this bank there are no differences to report: the recorded literal and the Arxo answer coincide on all 19 line-cases, values and traps alike.

Validation directives (assert_invalid, assert_malformed) are outside this run by contract: the run executes instructions, it does not validate modules, so those directives were never asked. Instructions the package does not support — bit operations, extensions, 64-bit integers, floats, memory, calls — are untouched by the bank. And 14 directives are a sample, not the whole i32.wast script and not the whole specification: agreement on the bank is not a claim of general equivalence between implementations.

Pin the reference first: i32.wast at the commit above, confirmed by the SHA-256 shown in the Result paragraph. Pin the Arxo side: package w3c.wasm_core 0.1.0 with law 0.1.1 (program hash sha256:5dd6446a587f754c2a651643ac7560c38adf9d3160253cad4830ae17dfdd43b2 covers all 19 answers). Each case is one call of the form law ask w3c.wasm_core --case W01 --query-id main --format json, asking the truth of the expected value or trap; the recorded evaluation document holds the proof graph and the result hash for independent inspection.

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.