Remix.run Logo
▲ WorldMaker 2 days ago

It's the same boolean value that you are testing: does it "halt" because it completed its computation successfully or does it "halt" because it failed? If Program A terminates on success and Program B terminates on failure you can generally rewrite one to be the other (run Program A in a busy loop after a success; monitor Program B in another process and report the first success then kill B). Ultimately, you have the same decidability problem asking "does it halt?" and if you could solve it for one case you could solve it for the other.

In fact, it's generally considered a harder problem to include the second boolean "does it halt successfully?" Does it stop at all is a hard enough question before asking if it stops with a success or a failure/crash. In practice this is often the easier problem to debug: once it stops we generally know if it was successful or failed. But that doesn't help to answer the questions like "will it always stop successfully?" or "will it 'forever' run successfully without ever stopping for a failure/crash/hang/deadlock?"