Did you know ... Search Documentation:
Pack hash_consing -- test/hash_consing_snapshots/steps.txt

predicate(step/2) step('__hash_consed_apply/2'('lambda/1', A), beta(B, C)) :- ( nonvar(A) -> hash_consing:intern(apply('__hash_consed_lambda/1'(D), C), '__hash_consed_apply/2'('lambda/1', A)), hash_consing:intern(lambda(B), '__hash_consed_lambda/1'(D)) ; ( nonvar(A) -> hash_consing:intern(apply('__hash_consed_lambda/1'(D), C), '__hash_consed_apply/2'('lambda/1', A)) ; true ), ( nonvar(D) -> hash_consing:intern(lambda(B), '__hash_consed_lambda/1'(D)) ; true ), ( var(D), ground(lambda(B)) -> hash_consing:intern(lambda(B), '__hash_consed_lambda/1'(D)) ; true ), ( var(A), ground(apply('__hash_consed_lambda/1'(D), C)) -> hash_consing:intern(apply('__hash_consed_lambda/1'(D), C), '__hash_consed_apply/2'('lambda/1', A)) ; true ), ( var(D) -> hash_consing:intern(lambda(B), '__hash_consed_lambda/1'(D)) ; true ), ( var(A) -> hash_consing:intern(apply('__hash_consed_lambda/1'(D), C), '__hash_consed_apply/2'('lambda/1', A)) ; true ) ). step('__hash_consed_apply/2'('closure_a/1', A), compiled(B, C)) :- ( nonvar(A) -> hash_consing:intern(apply('__hash_consed_closure_a/1'(D), C), '__hash_consed_apply/2'('closure_a/1', A)), hash_consing:intern(closure_a(B), '__hash_consed_closure_a/1'(D)) ; ( nonvar(A) -> hash_consing:intern(apply('__hash_consed_closure_a/1'(D), C), '__hash_consed_apply/2'('closure_a/1', A)) ; true ), ( nonvar(D) -> hash_consing:intern(closure_a(B), '__hash_consed_closure_a/1'(D)) ; true ), ( var(D), ground(closure_a(B)) -> hash_consing:intern(closure_a(B), '__hash_consed_closure_a/1'(D)) ; true ), ( var(A), ground(apply('__hash_consed_closure_a/1'(D), C)) -> hash_consing:intern(apply('__hash_consed_closure_a/1'(D), C), '__hash_consed_apply/2'('closure_a/1', A)) ; true ), ( var(D) -> hash_consing:intern(closure_a(B), '__hash_consed_closure_a/1'(D)) ; true ), ( var(A) -> hash_consing:intern(apply('__hash_consed_closure_a/1'(D), C), '__hash_consed_apply/2'('closure_a/1', A)) ; true ) ). step('__hash_consed_apply/2'('closure_b/0', A), constant(B)) :- ( nonvar(A) -> hash_consing:intern(apply(baked(closure_b), B), '__hash_consed_apply/2'('closure_b/0', A)) ; ( nonvar(A) -> hash_consing:intern(apply(baked(closure_b), B), '__hash_consed_apply/2'('closure_b/0', A)) ; true ), ( var(A), ground(apply(baked(closure_b), B)) -> hash_consing:intern(apply(baked(closure_b), B), '__hash_consed_apply/2'('closure_b/0', A)) ; true ), ( var(A) -> hash_consing:intern(apply(baked(closure_b), B), '__hash_consed_apply/2'('closure_b/0', A)) ; true ) ). step('__hash_consed_apply/2'('apply/2', A), spine(B, C, D)) :- ( nonvar(A) -> hash_consing:intern(apply('__hash_consed_apply/2'(E, F), D), '__hash_consed_apply/2'('apply/2', A)), hash_consing:intern(apply(B, C), '__hash_consed_apply/2'(E, F)) ; ( nonvar(A) -> hash_consing:intern(apply('__hash_consed_apply/2'(E, F), D), '__hash_consed_apply/2'('apply/2', A)) ; true ), ( nonvar(F) -> hash_consing:intern(apply(B, C), '__hash_consed_apply/2'(E, F)) ; true ), ( var(F), ground(apply(B, C)) -> hash_consing:intern(apply(B, C), '__hash_consed_apply/2'(E, F)) ; true ), ( var(A), ground(apply('__hash_consed_apply/2'(E, F), D)) -> hash_consing:intern(apply('__hash_consed_apply/2'(E, F), D), '__hash_consed_apply/2'('apply/2', A)) ; true ), ( var(F) -> hash_consing:intern(apply(B, C), '__hash_consed_apply/2'(E, F)) ; true ), ( var(A) -> hash_consing:intern(apply('__hash_consed_apply/2'(E, F), D), '__hash_consed_apply/2'('apply/2', A)) ; true ) ). predicate(callee/2) callee('__hash_consed_apply/2'(A, B), C) :- ( nonvar(B) -> hash_consing:intern(apply(C, D), '__hash_consed_apply/2'(A, B)) ; ( nonvar(B) -> hash_consing:intern(apply(C, D), '__hash_consed_apply/2'(A, B)) ; true ), ( var(B), ground(apply(C, D)) -> hash_consing:intern(apply(C, D), '__hash_consed_apply/2'(A, B)) ; true ), ( var(B) -> hash_consing:intern(apply(C, D), '__hash_consed_apply/2'(A, B)) ; true ) ). predicate(built/2) built(A, B) :- ( ground([A]) -> hash_consing:intern(apply(A, baked(variable(0))), '__hash_consed_apply/2'(C, D)), B='hash_consed_apply/2'(C, D) ; ( ground(apply(A, baked(variable(0)))) -> hash_consing:intern(apply(A, baked(variable(0))), 'hash_consed_apply/2'(C, D)) ; true ), B='hash_consed_apply/2'(C, D), hash_consing:intern(apply(A, baked(variable(0))), 'hash_consed_apply/2'(C, D)) ). predicate(constant/1) constant(baked(apply(lambda(variable(0)), closure_b))).