code wiki / (root) / nx_autofix_mut_eqv.nx

nx_autofix_mut_eqv.nx source

↩ module page · 39 lines · 1498 B

1// nx_autofix_mut_eqv.nx -- DELIBERATE EQUIVALENT MUTANT (the intake gate's discard tooth): max2 with 2// `b < a` instead of `a > b` is semantically IDENTICAL, so every test passes and there is nothing to 3// fix. A sound instance intake MUST discard this row (the classic equivalent-mutant problem) -- if it 4// ever appears in the verified manifest, the intake gate is broken. license_tier: ORIGINAL 5import "nx_syscalls.nx" 6 7func cw(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 8func cn(v: i64) -> i64 { 9 var m: i64 = v 10 if m < 0 { cw("-" as *u8); m = 0 - m } 11 let t: *u8 = sys_mmap(24) 12 var k: i64 = 0 13 if m == 0 { t[0] = 48 as u8; k = 1 } 14 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 15 let o: *u8 = sys_mmap(24) 16 var i: i64 = 0 17 while i < k { o[i] = t[k - 1 - i]; i = i + 1 } 18 sys_write(1, o, k) 19 return 0 20} 21 22func dbl(x: i64) -> i64 { return x + x } 23func max2(a: i64, b: i64) -> i64 { if b < a { return a } return b } 24 25func main() -> i64 { 26 var p: i64 = 0 27 var f1: i64 = 0 28 if dbl(6) == 12 { f1 = f1 + 1 } 29 if dbl(0 - 4) == (0 - 8) { f1 = f1 + 1 } 30 var f2: i64 = 0 31 if max2(3, 5) == 5 { f2 = f2 + 1 } 32 if max2(7, 2) == 7 { f2 = f2 + 1 } 33 if max2(4, 4) == 4 { f2 = f2 + 1 } 34 p = f1 + f2 35 cw("FNRES dbl " as *u8); cn(f1); cw(" 2\n" as *u8) 36 cw("FNRES max2 " as *u8); cn(f2); cw(" 3\n" as *u8) 37 cw("CGR=" as *u8); cn(p); cw("\n" as *u8) 38 return 0 39}