{"abstract":"remu by zero returns 0 instead of the dividend.","category":"Instruction set emulation","checks":11,"contract":"Input [op, a, b] with a, b as unsigned 32-bit register values. div/rem interpret them as signed; quotient truncates toward zero and the remainder takes the dividend's sign; division by zero gives quotient all ones (0xFFFFFFFF) and remainder = dividend; the overflow case -2^31 / -1 gives -2^31 with remainder 0. divu/remu are unsigned; divu by zero gives 0xFFFFFFFF and remu by zero gives the dividend. Results are returned as unsigned 32-bit values.","contract_signature":"*args","evaluation_group":"w2-instruction-set-emulation-rv-division","failed_approach":"Returning all ones copies the divu rule onto remu.","family":"w2-instruction-set-emulation-rv-division-unsigned-remainder-by-zero","id":"FA-89476","implementations":{"attempt":{"sha256":"bdcfe0b428ce8073a6fde13f341e88cbffb357fb04f57ebdf29a536276cc81c3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    op, a, b = args\n    M = 0xFFFFFFFF\n    def s(v):\n        return v - (1 << 32) if v >> 31 else v\n    if op == 'divu':\n        return M if b == 0 else a // b\n    if op == 'remu':\n        return M if b == 0 else a % b\n    sa, sb = s(a), s(b)\n    if b == 0:\n        return M if op == 'div' else a\n    q = abs(sa) // abs(sb)\n    if (sa < 0) != (sb < 0):\n        q = -q\n    if op == 'div':\n        return q & M\n    return (sa - q * sb) & M\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('signed division truncates toward zero', ['div', 4294967287, 2], 4294967292), ('signed division negative divisor', ['div', 9, 4294967294], 4294967292), ('signed remainder sign follows dividend', ['rem', 4294967287, 2], 4294967295), ('remainder with negative divisor', ['rem', 9, 4294967294], 1), ('signed divide by zero', ['div', 6, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967286, 0], 4294967286), ('unsigned divide by zero', ['divu', 4, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483649, 0], 2147483649), ('unsigned division of high values', ['divu', 4294967279, 3], 1431655759), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967286, 4294967294], 5)], [('signed division truncates toward zero', ['div', 4294967285, 2], 4294967291), ('signed division negative divisor', ['div', 11, 4294967294], 4294967291), ('signed remainder sign follows dividend', ['rem', 4294967285, 2], 4294967295), ('remainder with negative divisor', ['rem', 11, 4294967294], 1), ('signed divide by zero', ['div', 7, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967285, 0], 4294967285), ('unsigned divide by zero', ['divu', 5, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483650, 0], 2147483650), ('unsigned division of high values', ['divu', 4294967278, 3], 1431655759), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967285, 4294967294], 5)], [('signed division truncates toward zero', ['div', 4294967283, 2], 4294967290), ('signed division negative divisor', ['div', 13, 4294967294], 4294967290), ('signed remainder sign follows dividend', ['rem', 4294967283, 2], 4294967295), ('remainder with negative divisor', ['rem', 13, 4294967294], 1), ('signed divide by zero', ['div', 8, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967284, 0], 4294967284), ('unsigned divide by zero', ['divu', 6, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483651, 0], 2147483651), ('unsigned division of high values', ['divu', 4294967277, 3], 1431655759), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967284, 4294967294], 6)], [('signed division truncates toward zero', ['div', 4294967281, 2], 4294967289), ('signed division negative divisor', ['div', 15, 4294967294], 4294967289), ('signed remainder sign follows dividend', ['rem', 4294967281, 2], 4294967295), ('remainder with negative divisor', ['rem', 15, 4294967294], 1), ('signed divide by zero', ['div', 9, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967283, 0], 4294967283), ('unsigned divide by zero', ['divu', 7, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483652, 0], 2147483652), ('unsigned division of high values', ['divu', 4294967276, 3], 1431655758), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967283, 4294967294], 6)], [('signed division truncates toward zero', ['div', 4294967279, 2], 4294967288), ('signed division negative divisor', ['div', 17, 4294967294], 4294967288), ('signed remainder sign follows dividend', ['rem', 4294967279, 2], 4294967295), ('remainder with negative divisor', ['rem', 17, 4294967294], 1), ('signed divide by zero', ['div', 10, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967282, 0], 4294967282), ('unsigned divide by zero', ['divu', 8, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483653, 0], 2147483653), ('unsigned division of high values', ['divu', 4294967275, 3], 1431655758), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967282, 4294967294], 7)]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"6b3f0070287be1d54a2c583adb8985c6a8b14463bab2cd85abd06d309d8cb229","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    op, a, b = args\n    M = 0xFFFFFFFF\n    def s(v):\n        return v - (1 << 32) if v >> 31 else v\n    if op == 'divu':\n        return M if b == 0 else a // b\n    if op == 'remu':\n        return 0 if b == 0 else a % b\n    sa, sb = s(a), s(b)\n    if b == 0:\n        return M if op == 'div' else a\n    q = abs(sa) // abs(sb)\n    if (sa < 0) != (sb < 0):\n        q = -q\n    if op == 'div':\n        return q & M\n    return (sa - q * sb) & M\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('signed division truncates toward zero', ['div', 4294967287, 2], 4294967292), ('signed division negative divisor', ['div', 9, 4294967294], 4294967292), ('signed remainder sign follows dividend', ['rem', 4294967287, 2], 4294967295), ('remainder with negative divisor', ['rem', 9, 4294967294], 1), ('signed divide by zero', ['div', 6, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967286, 0], 4294967286), ('unsigned divide by zero', ['divu', 4, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483649, 0], 2147483649), ('unsigned division of high values', ['divu', 4294967279, 3], 1431655759), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967286, 4294967294], 5)], [('signed division truncates toward zero', ['div', 4294967285, 2], 4294967291), ('signed division negative divisor', ['div', 11, 4294967294], 4294967291), ('signed remainder sign follows dividend', ['rem', 4294967285, 2], 4294967295), ('remainder with negative divisor', ['rem', 11, 4294967294], 1), ('signed divide by zero', ['div', 7, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967285, 0], 4294967285), ('unsigned divide by zero', ['divu', 5, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483650, 0], 2147483650), ('unsigned division of high values', ['divu', 4294967278, 3], 1431655759), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967285, 4294967294], 5)], [('signed division truncates toward zero', ['div', 4294967283, 2], 4294967290), ('signed division negative divisor', ['div', 13, 4294967294], 4294967290), ('signed remainder sign follows dividend', ['rem', 4294967283, 2], 4294967295), ('remainder with negative divisor', ['rem', 13, 4294967294], 1), ('signed divide by zero', ['div', 8, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967284, 0], 4294967284), ('unsigned divide by zero', ['divu', 6, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483651, 0], 2147483651), ('unsigned division of high values', ['divu', 4294967277, 3], 1431655759), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967284, 4294967294], 6)], [('signed division truncates toward zero', ['div', 4294967281, 2], 4294967289), ('signed division negative divisor', ['div', 15, 4294967294], 4294967289), ('signed remainder sign follows dividend', ['rem', 4294967281, 2], 4294967295), ('remainder with negative divisor', ['rem', 15, 4294967294], 1), ('signed divide by zero', ['div', 9, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967283, 0], 4294967283), ('unsigned divide by zero', ['divu', 7, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483652, 0], 2147483652), ('unsigned division of high values', ['divu', 4294967276, 3], 1431655758), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967283, 4294967294], 6)], [('signed division truncates toward zero', ['div', 4294967279, 2], 4294967288), ('signed division negative divisor', ['div', 17, 4294967294], 4294967288), ('signed remainder sign follows dividend', ['rem', 4294967279, 2], 4294967295), ('remainder with negative divisor', ['rem', 17, 4294967294], 1), ('signed divide by zero', ['div', 10, 0], 4294967295), ('signed remainder by zero', ['rem', 4294967282, 0], 4294967282), ('unsigned divide by zero', ['divu', 8, 0], 4294967295), ('unsigned remainder by zero', ['remu', 2147483653, 0], 2147483653), ('unsigned division of high values', ['divu', 4294967275, 3], 1431655758), ('signed overflow case', ['div', 2147483648, 4294967295], 2147483648), ('both negative', ['div', 4294967282, 4294967294], 7)]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model of one emulator rule; the instruction semantics are a stipulated contract inspired by common ISAs and are not a claim of cycle-exact or architectural conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-instruction-set-emulation-rv-division-unsigned-remainder-by-zero","generated_at":"2026-09-29T14:51:17.933730+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"ISA emulators must reproduce defined results for division corner cases that host languages treat differently or trap on.","root_cause":"The unsigned remainder zero-divisor case returns 0.","sha256":"3df9bdf6ce1a7ffdebea8df464272e106c16bfb08eadc1fbaedf1cbbf199d6ae","title":"Unsigned remainder by zero yields zero · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":38.622,"exit_code":1,"observations":[{"actual":4294967292,"check":"signed division truncates toward zero","expected":4294967292,"passed":true},{"actual":4294967292,"check":"signed division negative divisor","expected":4294967292,"passed":true},{"actual":4294967295,"check":"signed remainder sign follows dividend","expected":4294967295,"passed":true},{"actual":1,"check":"remainder with negative divisor","expected":1,"passed":true},{"actual":4294967295,"check":"signed divide by zero","expected":4294967295,"passed":true},{"actual":4294967286,"check":"signed remainder by zero","expected":4294967286,"passed":true},{"actual":4294967295,"check":"unsigned divide by zero","expected":4294967295,"passed":true},{"actual":4294967295,"check":"unsigned remainder by zero","expected":2147483649,"passed":false},{"actual":1431655759,"check":"unsigned division of high values","expected":1431655759,"passed":true},{"actual":2147483648,"check":"signed overflow case","expected":2147483648,"passed":true},{"actual":5,"check":"both negative","expected":5,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"signed division truncates toward zero\", \"actual\": 4294967292, \"expected\": 4294967292, \"passed\": true}, {\"check\": \"signed division negative divisor\", \"actual\": 4294967292, \"expected\": 4294967292, \"passed\": true}, {\"check\": \"signed remainder sign follows dividend\", \"actual\": 4294967295, \"expected\": 4294967295, \"passed\": true}, {\"check\": \"remainder with negative divisor\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"signed divide by zero\", \"actual\": 4294967295, \"expected\": 4294967295, \"passed\": true}, {\"check\": \"signed remainder by zero\", \"actual\": 4294967286, \"expected\": 4294967286, \"passed\": true}, {\"check\": \"unsigned divide by zero\", \"actual\": 4294967295, \"expected\": 4294967295, \"passed\": true}, {\"check\": \"unsigned remainder by zero\", \"actual\": 4294967295, \"expected\": 2147483649, \"passed\": false}, {\"check\": \"unsigned division of high values\", \"actual\": 1431655759, \"expected\": 1431655759, \"passed\": true}, {\"check\": \"signed overflow case\", \"actual\": 2147483648, \"expected\": 2147483648, \"passed\": true}, {\"check\": \"both negative\", \"actual\": 5, \"expected\": 5, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.994,"exit_code":1,"observations":[{"actual":4294967292,"check":"signed division truncates toward zero","expected":4294967292,"passed":true},{"actual":4294967292,"check":"signed division negative divisor","expected":4294967292,"passed":true},{"actual":4294967295,"check":"signed remainder sign follows dividend","expected":4294967295,"passed":true},{"actual":1,"check":"remainder with negative divisor","expected":1,"passed":true},{"actual":4294967295,"check":"signed divide by zero","expected":4294967295,"passed":true},{"actual":4294967286,"check":"signed remainder by zero","expected":4294967286,"passed":true},{"actual":4294967295,"check":"unsigned divide by zero","expected":4294967295,"passed":true},{"actual":0,"check":"unsigned remainder by zero","expected":2147483649,"passed":false},{"actual":1431655759,"check":"unsigned division of high values","expected":1431655759,"passed":true},{"actual":2147483648,"check":"signed overflow case","expected":2147483648,"passed":true},{"actual":5,"check":"both negative","expected":5,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"signed division truncates toward zero\", \"actual\": 4294967292, \"expected\": 4294967292, \"passed\": true}, {\"check\": \"signed division negative divisor\", \"actual\": 4294967292, \"expected\": 4294967292, \"passed\": true}, {\"check\": \"signed remainder sign follows dividend\", \"actual\": 4294967295, \"expected\": 4294967295, \"passed\": true}, {\"check\": \"remainder with negative divisor\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"signed divide by zero\", \"actual\": 4294967295, \"expected\": 4294967295, \"passed\": true}, {\"check\": \"signed remainder by zero\", \"actual\": 4294967286, \"expected\": 4294967286, \"passed\": true}, {\"check\": \"unsigned divide by zero\", \"actual\": 4294967295, \"expected\": 4294967295, \"passed\": true}, {\"check\": \"unsigned remainder by zero\", \"actual\": 0, \"expected\": 2147483649, \"passed\": false}, {\"check\": \"unsigned division of high values\", \"actual\": 1431655759, \"expected\": 1431655759, \"passed\": true}, {\"check\": \"signed overflow case\", \"actual\": 2147483648, \"expected\": 2147483648, \"passed\": true}, {\"check\": \"both negative\", \"actual\": 5, \"expected\": 5, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}