maybe it's mostly interesting to just say that a 3-output f() is still sufficient for the nature of the problem. if you can make an f() that tells me that g() either halts, does not halt, or produces some specific system with the evaluation of f(), it seems useful. i'm still confused by it! maybe we can make it very simple. i imagine a hugely simple instructionset consisting of HALT and NOTHALT where these two instructions perform what they say: terminate the machine, or wait forever on one instruction. these instructions are like simplifications of analysed loops and other statements. we'll need more instructions to actually write g() which might look like: if f() == halt { nothalt;} else { halt; } so this adds a conditional branch, data storage, and a comparison with a constant. f_out = CALL f IF f_out == "HALT": NOTHALT ELSE: HALT two paths that depend on the output of f() let's say f's _only job_ is to analyse things that are pretty much this. could we write an f() that can analyse simple things like this? what does it need to do?