anchor.diff:  	_ ->
   	    philosopher_loop(false, LeftFork, RightFork, HasLeftFork, HasRightFork)
   	after
  -	    100 ->
  +	    ?HUNGRY_AFTER ->
   		LeftFirst = rand:uniform(10) < 5 ,
   		case LeftFirst of
   		      true -> LeftFork ! {take, self()};
  
positive.code: 
  philosopher_loop(true, LeftFork, RightFork, true, true) ->
      reporter ! {eating, self()},
      timer:sleep(1000),
      reporter ! {thinking, self()},
      RightFork ! {return, self()},
      LeftFork ! {return, self()},
  
negative.code: -module(dining).
  
  -define(EAT_TIME, 1000).
  -define(HUNGRY_AFTER, 100).
  
  -import(lists,[foldr/3,foldl/3,filter/2,split/2,flatmap/2,map/2,seq/2]).
  
  -export([start/1,stop/0,fork_loop/2,philosopher_loop/5,start_philosopher/3,reporter/1,main/1]).
  
  fork_loop(Available, Owner) ->
      receive
  	{take, From} when Available == true ->
  	    From ! {taken, self()},
  	    reporter ! {taken, self()},
  	    fork_loop(false, From);
  	{take, From} when Available == false ->
  	    From ! {not_available},
  	    fork_loop(false, Owner);
  	{return, Owner} when Available == false ->
  	    Owner ! {returned, self()},
  	    reporter ! {returned, self()},
  	    fork_loop(true, none);
  	{return, From} ->
  	    From ! {error},
  