At the moment, we only do one pass to detect backward unreachable nodes, and then one pass to detect forward unreachable nodes.
However, removing some forward unreachable nodes might make some nodes backward unreachable, in the presence of hyperedges.
Moreover, we could detect if false is not forward reachable and remove all nodes immediately. However, we would need to detect which are forward reachable and which are unreachable.