Did you know ... Search Documentation:
Pack hash_consing -- test/hash_consing_snapshots/patterns.txt
predicate(kind/2) kind('__hash_consed_app/2'('abs/1', A), redex) :- ( nonvar(A) -> hash_consing:intern(app('__hash_consed_abs/1'(B), C), '__hash_consed_app/2'('abs/1', A)) ; ( nonvar(A) -> hash_consing:intern(app('__hash_consed_abs/1'(B), C), '__hash_consed_app/2'('abs/1', A)) ; true ), ( nonvar(B) -> hash_consing:intern(abs(D), '__hash_consed_abs/1'(B)) ; true ), ( var(B), ground(abs(D)) -> hash_consing:intern(abs(D), '__hash_consed_abs/1'(B)) ; true ), ( var(A), ground(app('__hash_consed_abs/1'(B), C)) -> hash_consing:intern(app('__hash_consed_abs/1'(B), C), '__hash_consed_app/2'('abs/1', A)) ; true ), ( var(B) -> hash_consing:intern(abs(D), '__hash_consed_abs/1'(B)) ; true ), ( var(A) -> hash_consing:intern(app('__hash_consed_abs/1'(B), C), '__hash_consed_app/2'('abs/1', A)) ; true ) ). kind('__hash_consed_app/2'('app/2(abs/1)', A), redex_under_an_application) :- ( nonvar(A) -> hash_consing:intern(app('__hash_consed_app/2'('abs/1', B), C), '__hash_consed_app/2'('app/2(abs/1)', A)), hash_consing:intern(app('__hash_consed_abs/1'(D), E), '__hash_consed_app/2'('abs/1', B)) ; ( nonvar(A) -> hash_consing:intern(app('__hash_consed_app/2'('abs/1', B), C), '__hash_consed_app/2'('app/2(abs/1)', A)) ; true ), ( nonvar(B) -> hash_consing:intern(app('__hash_consed_abs/1'(D), E), '__hash_consed_app/2'('abs/1', B)) ; true ), ( nonvar(D) -> hash_consing:intern(abs(F), '__hash_consed_abs/1'(D)) ; true ), ( var(D), ground(abs(F)) -> hash_consing:intern(abs(F), '__hash_consed_abs/1'(D)) ; true ), ( var(B), ground(app('__hash_consed_abs/1'(D), E)) -> hash_consing:intern(app('__hash_consed_abs/1'(D), E), '__hash_consed_app/2'('abs/1', B)) ; true ), ( var(A), ground(app('__hash_consed_app/2'('abs/1', B), C)) -> hash_consing:intern(app('__hash_consed_app/2'('abs/1', B), C), '__hash_consed_app/2'('app/2(abs/1)', A)) ; true ), ( var(D) -> hash_consing:intern(abs(F), '__hash_consed_abs/1'(D)) ; true ), ( var(B) -> hash_consing:intern(app('__hash_consed_abs/1'(D), E), '__hash_consed_app/2'('abs/1', B)) ; true ), ( var(A) -> hash_consing:intern(app('__hash_consed_app/2'('abs/1', B), C), '__hash_consed_app/2'('app/2(abs/1)', A)) ; true ) ). kind('__hash_consed_app/2'('ref/1', A), stuck) :- ( nonvar(A) -> hash_consing:intern(app('__hash_consed_ref/1'(B), '__hash_consed_ref/1'(C)), '__hash_consed_app/2'('ref/1', A)) ; ( nonvar(A) -> hash_consing:intern(app('__hash_consed_ref/1'(B), '__hash_consed_ref/1'(C)), '__hash_consed_app/2'('ref/1', A)) ; true ), ( nonvar(C) -> hash_consing:intern(ref(D), '__hash_consed_ref/1'(C)) ; true ), ( nonvar(B) -> hash_consing:intern(ref(E), '__hash_consed_ref/1'(B)) ; true ), ( var(B), ground(ref(E)) -> hash_consing:intern(ref(E), '__hash_consed_ref/1'(B)) ; true ), ( var(C), ground(ref(D)) -> hash_consing:intern(ref(D), '__hash_consed_ref/1'(C)) ; true ), ( var(A), ground(app('__hash_consed_ref/1'(B), '__hash_consed_ref/1'(C))) -> hash_consing:intern(app('__hash_consed_ref/1'(B), '__hash_consed_ref/1'(C)), '__hash_consed_app/2'('ref/1', A)) ; true ), ( var(B) -> hash_consing:intern(ref(E), '__hash_consed_ref/1'(B)) ; true ), ( var(C) -> hash_consing:intern(ref(D), '__hash_consed_ref/1'(C)) ; true ), ( var(A) -> hash_consing:intern(app('__hash_consed_ref/1'(B), '__hash_consed_ref/1'(C)), '__hash_consed_app/2'('ref/1', A)) ; true ) ). kind(app('__hash_consed_ref/1'(A), '__hash_consed_abs/1'(B)), plain) :- ( nonvar(A), nonvar(B) -> true ; ( nonvar(B) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(B)) ; true ), ( nonvar(A) -> hash_consing:intern(ref(D), '__hash_consed_ref/1'(A)) ; true ), ( var(A), ground(ref(D)) -> hash_consing:intern(ref(D), '__hash_consed_ref/1'(A)) ; true ), ( var(B), ground(abs(C)) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(B)) ; true ), ( var(A) -> hash_consing:intern(ref(D), '__hash_consed_ref/1'(A)) ; true ), ( var(B) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(B)) ; true ) ). predicate(size/2) size(A, B) :- ( nonvar(A), ( A='hash_consed_app/2'(_, C) -> nonvar(C) ; true ) -> hash_consing:represented(app(D, E), A), size(D, F), size(E, G), B is F+G+1 ; ( nonvar(A), ( A='hash_consed_app/2'(_, H) -> nonvar(H) ; true ) -> hash_consing:represented(app(D, E), A) ; true ), ( \+ ( nonvar(A), ( A='hash_consed_app/2'(_, I) -> nonvar(I) ; true ) ), ground(app(D, E)) -> hash_consing:represented(app(D, E), A) ; true ), size(D, F), size(E, G), B is F+G+1, ( nonvar(A), ( A='hash_consed_app/2'(_, J) -> nonvar(J) ; true ) -> true ; hash_consing:represented_settled(app(D, E), A) ) ). size('__hash_consed_abs/1'(A), B) :- ( nonvar(A) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(A)), size(C, D), B is D+1 ; ( nonvar(A) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(A)) ; true ), ( var(A), ground(abs(C)) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(A)) ; true ), size(C, D), B is D+1, ( var(A) -> hash_consing:intern(abs(C), '__hash_consed_abs/1'(A)) ; true ) ). size('__hash_consed_ref/1'(A), 1) :- ( nonvar(A) -> true ; ( nonvar(A) -> hash_consing:intern(ref(B), '__hash_consed_ref/1'(A)) ; true ), ( var(A), ground(ref(B)) -> hash_consing:intern(ref(B), '__hash_consed_ref/1'(A)) ; true ), ( var(A) -> hash_consing:intern(ref(B), '__hash_consed_ref/1'(A)) ; true ) ). predicate(wrapped/2) wrapped(A, B) :- ( nonvar(B), ( B='hash_consed_app/2'(_, C) -> nonvar(C) ; true ) -> hash_consing:represented(app(A, baked(abs(ref(0)))), B) ; ( nonvar(B), ( B='hash_consed_app/2'(_, D) -> nonvar(D) ; true ) -> hash_consing:represented(app(A, baked(abs(ref(0)))), B) ; true ), ( \+ ( nonvar(B), ( B='hash_consed_app/2'(_, E) -> nonvar(E) ; true ) ), ground(app(A, baked(abs(ref(0))))) -> hash_consing:represented(app(A, baked(abs(ref(0)))), B) ; true ), ( nonvar(B), ( B='hash_consed_app/2'(_, F) -> nonvar(F) ; true ) -> true ; hash_consing:represented_settled(app(A, baked(abs(ref(0)))), B) ) ). predicate(first/2) first(A, B) :- ( nonvar(B), ( B='hash_consed_app/2'(_, C) -> nonvar(C) ; true ) -> hash_consing:represented(app(D, E), B), member(D-E, A), ! ; ( nonvar(B), ( B='hash_consed_app/2'(_, F) -> nonvar(F) ; true ) -> hash_consing:represented(app(D, E), B) ; true ), ( \+ ( nonvar(B), ( B='hash_consed_app/2'(_, G) -> nonvar(G) ; true ) ), ground(app(D, E)) -> hash_consing:represented(app(D, E), B) ; true ), member(D-E, A), !, ( nonvar(B), ( B='hash_consed_app/2'(_, H) -> nonvar(H) ; true ) -> true ; hash_consing:represented_settled(app(D, E), B) ) ). predicate(built/2) built(A, B) :- ( ground([A]) -> hash_consing:represented(app(A, baked(abs(ref(0)))), C), B=C ; hash_consing:represented(app(A, baked(abs(ref(0)))), C), B=C, hash_consing:represented(app(A, baked(abs(ref(0)))), C) ). predicate(unbound_built/1) unbound_built(A) :- ( ground([B]) -> hash_consing:represented(app(B, baked(abs(ref(0)))), C), A=C ; hash_consing:represented(app(B, baked(abs(ref(0)))), C), A=C, hash_consing:represented(app(B, baked(abs(ref(0)))), C) ). predicate(brought_in/2) brought_in(A, B) :- hash_consing:internalized([app(abs(_), _), app(app(*, _), _), app(_, ref(_)), abs(_), ref(_)], A, B).