:- p(b).

/* variant of example from toplas collection
 * using cons and nil instead of [_|_] and []
 */

%TWTYPES :- type p(listn).

p(cons(X,nil)).
p(cons(s(s(X)),cons(Y,Xs))) :-
        p(cons(X,cons(Y,Xs))),
        p(cons(s(s(s(s(Y)))),Xs)).
p(cons(0,Xs)) :- p(Xs).


/*TWDESC

Contrived example

*/


/*TWTYPES

listn(nil).
listn(cons(X,Xs)) :-
        nat(X),
        listn(Xs).

nat(0).
nat(s(X)) :- nat(X).

*/


/*TWDEMO

selected_norms([listn,nat]).
query(p(b,b)).

*/
