:- module rational. :- pragma termination_info(rational:'<'((builtin:in), (builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(rational:'>'((builtin:in), (builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(rational:'=<'((builtin:in), (builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(rational:'>='((builtin:in), (builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(rational:rational((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:rational_from_integers((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:'+'((builtin:in)) = (builtin:out), finite(0, [yes, no]), cannot_loop). :- pragma termination_info(rational:'-'((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(rational:'+'((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:'-'((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:'*'((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:'/'((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:numer((builtin:in)) = (builtin:out), finite(-2, [yes, no]), cannot_loop). :- pragma termination_info(rational:denom((builtin:in)) = (builtin:out), finite(-2, [yes, no]), cannot_loop). :- pragma termination_info(rational:abs((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info((rational:one) = (builtin:out), infinite, can_loop). :- pragma termination_info((rational:zero) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:inverse((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:rational_norm((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rational:cmp((builtin:in), (builtin:in)) = (builtin:out), finite(0, [no, no, no]), can_loop).