:- module ack. :- pragma termination_info(ack.ack((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop). :- pragma termination2_info(ack.ack((builtin.in), (builtin.in), (builtin.out)), constraints([le([term(0, r(-1, 1)), term(2, r(-1, 1))], r(-1, 1))]), not_set, can_loop).