WITH-STOLEN-ALIST.html -- ACL2 Version 6.3

## WITH-STOLEN-ALIST

`(with-stolen-alist name form)` ensures that `name` is a fast alist at the `` start of the execution of `form`. At the end of execution, it ensures that `` `name` is a fast alist if and only if it was originally. That is, if `` `name` was not a fast alist originally, its hash table link is freed, and if `` it was a fast alist originally but its table was modified during the execution `` of `form`, that table is restored. Note that any extended table created from `` the original fast alist during `form` must be manually freed.

    Major Section:  HONS-AND-MEMOIZATION

Logically, `with-stolen-alist` just returns `form`.

Under the hood, we cause `alist` to become a fast alist before executing `form`, and we check the various conditions outlined above before returning the final value.

Note that `with-stolen-alist` will cause logically tail-recursive functions not to execute tail-recursively if its cleanup phase happens after the tail-recursive call returns.