% -*- Prolog -*-
%
% Basic compilation checks: recursive successor arithmetic. Monomorphic.
%
% $Id: 201,v 1.9 2000/11/04 11:55:07 peteg Exp $

:- num ::= z ; s(num).

:- compile(plus/3).

plus(s(X), Y, s(Z)) :- plus(X, Y, Z).
% Normalised:
%plus(_A0, _B0, _C0) :-
%        unify(_A0, s(_D0)),
%        unify(_C0, s(_E0)),
%        plus(_D0, _B0, _E0).
plus(z, Y, Y).
% Normalised:
%plus(_A0, _B0, _C0) :-
%        unify(_A0, z),
%        unify(_B0, _C0).

main :-
	plus(s(s(s(z))), s(s(s(s(z)))), Z), write(Z), nl.
%	plus(z, s(z), Z), plus(z, s(z), Z1).
