func delete_some(s : Set) -> Entity*Set e := some(s) return [e, s-{e}]]
while S /= {} x, S := delete_some(S) if ... ... S +:= {f(x), g(x)} ... end ... loop