2 * In def 3.1 on p. 14, GS&V define `s` updated with \[[not φ]] as:
4 > { i &elem; s | i does not subsist in s[φ] }
6 where `i` *subsists* in <code>s[φ]</code> if there are any `i'` that *extend* `i` in <code>s[φ]</code>.
8 Here's how we can represent that:
10 <pre><code>bind_set s (fun (r, h) ->
11 let u = unit_set (r, h)
12 in let descendents = u >>= \[[φ]]
13 in if descendents = empty_set then u else empty_set