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