1:- module(tiny, []).    2:- use_module(pac('expand-pac')).    3term_expansion --> expand_pac.
    4:- include(pac(op).
    5
    6:- op(10, fx, *).    7%
    8parse(X, Y):- term_string(X, Y).
    9
   10%
   11% ?- use_module(pac(tiny)).
   12% Peano arithmetic.
   13% ?- tiny:peano(1+2*3, R).
   14% ?- tiny:peano((1+2*3)^2, R).
   15% ?- tiny:peano(10^5, R).
   16
   17% ?- listing(tiny:peano).
   18:- bekind(peano, []).   19N			= `N	:- integer(N), N >= 0.
   20A +  B		=  add_ @ A @ B.
   21A *  B		=  mul_ @ A @ B.
   22A ^  B		=  pow_ @ B @ A.
   23pred_(0)	= `0.
   24pred_(I)	= xargs(succ) @ I.
   25add_(0, A)	= `A.
   26add_(I, A)	= add_ @ pred_(I) @ :succ(A).
   27mul_(0, _)	= `0.
   28mul_(I, A)	= add_(A) @ (mul_ @ pred_(I) @ A).
   29p