1% Simple illustration of the learning of recursive predicates
    2%       in Aleph
    3% To run do the following:
    4%       a. induce.

?- induce(Program). */

    8:- use_module(library(aleph)).    9:- if(current_predicate(use_rendering/1)).   10:- use_rendering(prolog).   11:- endif.   12:- aleph.   13% :- modeh(*,mem(+any,+list)).
   14% :- modeb(*,mem(+any,+list)).
   15% :- modeb(1,((+list) = ([-any|-list]))).
   16
   17:- mode(*,mem(+any,+list)).   18:- mode(1,((+list) = ([-any|-list]))).   19
   20:- aleph_set(i,3).   21:- aleph_set(noise,0).   22
   23
   24:- determination(mem/2,mem/2).   25:- determination(mem/2,'='/2).   26
   27:-begin_bg.   28
   29:-end_bg.   30:-begin_in_pos.   31mem(0,[0]).
   32mem(1,[1]).
   33mem(2,[2]).
   34mem(3,[3]).
   35mem(4,[4]).
   36mem(0,[0,0]).
   37mem(0,[0,1]).
   38mem(0,[0,2]).
   39mem(1,[0,1]).
   40mem(0,[1,0]).
   41mem(0,[2,0]).
   42mem(1,[1,1]).
   43mem(1,[2,1]).
   44mem(1,[1,2]).
   45mem(2,[2,2]).
   46mem(2,[3,2]).
   47mem(2,[2,3]).
   48mem(3,[2,3]).
   49mem(3,[4,2,3]).
   50:-end_in_pos.   51:-begin_in_neg.   52mem(0,[1,2]).
   53mem(0,[1]).
   54mem(1,[0]).
   55mem(3,[]).
   56mem(2,[]).
   57mem(2,[3]).
   58:-end_in_neg.