:- load_files([ops,lists], [silent(true),if(not_loaded)]). +(X,L0,L) :- @(X,Old,New,0,L0,L),New is Old+1. @(Key,Old) --> @(Key,Old,Old,Old). @(Key,Old,New,_, L0,[Key=New|L]) :- less1(Key=Old,L0,L),!. @(Key,Old,New,Default,L0,L) :- @(Key,Old,New,Default,[Key=Default|L0],L). in([H|T]) --> in(H), in(T). in(X=Y ,L,L) :- in(X=Y,L). in(X=Y ,L) :- member(X=Y,L). in(X of Y,L) :- member(Y=Temp,L),in(X,Temp).