let exists xs p = match !context with | [] -> do_exists xs p | c :: _ -> if has_var xs c.bindings c.hints then ( c.bindings <- Exists xs :: c.bindings ; p ) else do_exists xs p