Prolog systems with occurs check aware freeze
问题 David Tonhofer posed an interesting problem about occurs check. An occurs check aware coroutine can be realized as follows with a predicate with_occurs_check/2 which can be easily implemented as a refinement of with_occurs_check/1: occurs_check_aware_freeze(X, G) :- current_prolog_flag(F), freeze(X, with_occurs_check(F, G)). Namely by using an with_occurs_check/2 with a further parameter. But the main problem of a realiable with_occurs_check/[1,2] that also works with backtracking remains.