law(bc,language(prolog)). alias(regulator,'regulator@research.rutgers.edu'). adopted(Par,Cert) :- do(add(budget(0))), do(add(visits(0))). sent(#regulator,addToBudget(D),Y) :- do(forward). arrived(#regulator,addToBudget(D),Y) :- do(incr(budget,D)), do(deliver). sent(X,request(R),Y) :- budget(B)@CS, B > 0, do(decr(budget,1)), do(forward). arrived(X,request(R),Y) :- do(incr(visits,1)), do(deliver). sent(X,visitsReport,#regulator) :- visits(V)@CS, do(decr(visits,V)), do(forward(X,visitsReport(V),#regulator)). arrived(X,visitsReport(V),#regulator) :- do(deliver). sent(X,M,Y) :- do(deliver(Self,failedSending(M,Y),Self)). disconnected :- do(quit).