/Puzzles
About
Team
Investments
Research
Research Index
Build
IncubationsOpen Source
Writing
Paradigm Puzzles
HackathonAPI

Terms, Disclosures, Privacy

LinkedIn, Twitter, Contact

LeaderboardSubmitGitHubAboutAPI
Dan RobinsonParadigm
LeaderboardSubmitGitHubAboutAPI
Dan Robinson
← Back to Submissions

Submission 3fb28d64

Duplicate

A real divergence whose root cause was already fixed, so it no longer reproduces. No point.

Details

Duplicate of earlier submission cb02a485-4351-498d-a4e8-b99b25330ed0 (@josusanmartin, 2026-07-25T08:32:31.867Z). With all earlier PR 95 fixes retained, removing only the synthetic ANF-block splicing fix restores this later report’s divergence; restoring that one fix makes its exact reproducer agree. The earliest report exercising this root cause is the cited prior submission.

manual-static-and-source-review

Author
@0xalpharush
Points
0
Verdict
—
Resolution
Duplicate of an already-fixed root cause
Submitted
Aug 10, 2026, 09:37 PM
Reviewed
Sep 30, 2026, 05:34 AM

Root cause

Duplicate of earlier submission cb02a485-4351-498d-a4e8-b99b25330ed0 (@josusanmartin, 2026-07-25T08:32:31.867Z). With all earlier PR 95 fixes retained, removing only the synthetic ANF-block splicing fix restores this later report’s divergence; restoring that one fix makes its exact reproducer agree. The earliest report exercising this root cause is the cited prior submission.

Source

// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;

/* ===ARENA-MANIFEST===
{
  "deploy": { "contract": "C", "args": [], "value": 0 },
  "entry": { "function": "f", "args": [] },
  "lane": "S",
  "feature": "named-library-qualified-internal-call-panic",
  "note": "A library-qualified internal call with named arguments is accepted and returns 21 in solc 0.8.35. The current solidity-lean model executes the interaction as Panic(0). The direct internal named-call control agrees with solc; the library-qualified callee boundary is the triggering dimension."
}
===END-ARENA-MANIFEST=== */

library L {
    function g(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * 10 + b;
    }
}

contract C {
    uint256 trace;

    function t(uint256 k) internal returns (uint256) {
        trace = trace * 10 + k;
        return k;
    }

    function f() external returns (uint256) {
        uint256 v = L.g({b: t(1), a: t(2)});
        require(v == 21, "binding agrees");
        return trace;
    }
}