1% Wrong knowledge of a learner about different topics
    2% Differences to Learner1 are enclosed in comments
    3
    4% Fact theory
    5
    6db_entry(learner:gilchrist_family,parent(euan,warren),[]).
    7db_entry(learner:gilchrist_family,parent(berenice,warren),[]).
    8%
    9% db_entry(learner:gilchrist_family,parent(warren,catherine),[]).
   10%
   11db_entry(learner:gilchrist_family,parent(warren,charles),[]).
   12db_entry(learner:gilchrist_family,parent(warren,david),[]).
   13db_entry(learner:gilchrist_family,parent(warren,julia),[]).
   14db_entry(learner:gilchrist_family,parent(kate,catherine),[]).
   15db_entry(learner:gilchrist_family,parent(kate,charles),[]).
   16db_entry(learner:gilchrist_family,parent(kate,david),[]).
   17db_entry(learner:gilchrist_family,parent(kate,julia),[]).
   18%
   19% db_entry(learner:gilchrist_family,parent(charles,lucinda),[]).
   20% 
   21
   22% Fact and Rule Theory
   23
   24def_theory(learner:entropy, [learner:warm,learner:cold,learner:door]).
   25db_entry(learner:warm, warm(living_room),[]).
   26db_entry(learner:warm, warm(kitchen),[]).
   27db_entry(learner:cold, cold(street),[]).
   28db_entry(learner:cold, cold(garden),[]).
   29db_entry(learner:cold, cold(fridge),[]).
   30%
   31% The following entries are incorrect 
   32%
   33db_entry(learner:door, door(a_living_room,a_kitchen),[]).
   34db_entry(learner:door, door(a_living_room,a_street),[]).
   35db_entry(learner:door, door(a_living_room,a_garden),[]).
   36db_entry(learner:door, door(a_kitchen,a_garden),[]).
   37db_entry(learner:door, door(a_kitchen,a_fridge),[]).
   38db_entry(learner:door, door(a_street,a_garden),[]).
   39%
   40% Now the theory continues correctly
   41%
   42db_entry(learner:entropy, entropy_increases(A,B),[warm(A),cold(B),door(A,B)]).
   43db_entry(learner:entropy, entropy_increases(A,B),[cold(A),warm(B),door(A,B)]).
   44db_entry(learner:entropy, entropy_increases(A,B),[warm(A),cold(B),door(B,A)]).
   45db_entry(learner:entropy, entropy_increases(A,B),[cold(A),warm(B),door(B,A)]).
   46
   47% Recusive Theory
   48
   49% incorrect t_member
   50db_entry(learner:t_member, member(A,[]),[]).
   51db_entry(learner:t_member, member(A,[B|T]),[not(A=B), member(A,T)]).
   52%					   |        |
   53%					   +--------+ this is a fault !
   54%
   55
   56db_entry(learner:t_append, append([],List,[]),[]).
   57%					  ||
   58%					  ++ this is a fault !
   59db_entry(learner:t_append, append([First|Rest],List,[First|TempList]),
   60		           [append(Rest,List,TempList)]).
   61
   62def_theory(learner:t_reverse,[learner:t_append]).
   63db_entry(learner:t_reverse,reverse([],[]),[]).
   64db_entry(learner:t_reverse,reverse([X|Y],Z),
   65			   [reverse(Y,Y1),append(Y1,[X],Z)]).
   66
   67def_theory(learner:qsort,[learner:partition,learner:t_append1]).
   68db_entry(learner:qsort,qsort([],[]),[]).
   69db_entry(learner:qsort,qsort([X|L],L5),
   70		       [partition(L,X,L1,L2),qsort(L1,L3),
   71			qsort(L2,L4),append1(L3,[X|L4],L5)]).
   72
   73db_entry(learner:partition,partition([X|L],Y,[L1],L2),
   74%					     |  |
   75%					     +--+ this is a fault !
   76			   [X < Y, partition(L,Y,L1,L2)]).
   77db_entry(learner:partition,partition([X|L],Y,L1,[X|L2]),
   78			   [X >= Y, partition(L,Y,L1,L2)]).
   79db_entry(learner:partition,partition([],_,[],[]),[]).
   80
   81db_entry(learner:t_append1, append1([],List,List),[]).
   82db_entry(learner:t_append1, append1([First|Rest],List,[First|TempList]),
   83			    [append1(Rest,List,TempList)])