ackermann-cut.pl

loading
details
attribute value
description
owner Johannes Waldmann
uploaded 2017-08-17 03:45:08.0
disk size 558 Bytes
downloadable true
type
attribute value
name no_type
processor id 1
description this is the default benchmark type for rejected benchmarks and benchmarks that are not associated with a type.
owning community none
loading contents
%Source: Random examples used for debugging termination analysis for arithmetic Prolog programs
% terminating
% Implements calculation of the Ackermann function.
% Direct implementation of the recursive definition by Péter (1935)
% First attempt did not check for X > 0, Y > 0 in last case. Was found nonterminating by aprove
%query:ackermann(b,b,f).
ackermann(X, Y, Z) :- X =:= 0, Y >= 0, !, Z is Y + 1.
ackermann(X, Y, Z) :- X > 0, Y =:= 0, !, ackermann(X - 1, 1, Z).
ackermann(X, Y, Z) :- X > 0, Y > 0, !, ackermann(X, Y - 1, W), ackermann(X - 1, W, Z).
popout

content may be truncated. 'popout' for larger text window.

actions get anonymous link download benchmark