% Example for an agent's negotiation strategy % in a resource reallocation scenario % Resources I currecntly own have(Resource) iff [ [Resource = chair], [Resource = picture], [Resource = book] ]. % If asked for a resource I own I will accept the request [tell(Agent,me,request(give(Resource)),T), have(Resource)] implies [tell_later(me,Agent,accept(give(Resource)),T)]. % If asked for a resource I do not have, I will refuse the request [tell(Agent,me,request(give(Resource)),T), not(have(Resource))] implies [tell_later(me,Agent,refuse(give(Resource)),T)]. % Auxiliary predicate tell_later(Sender,Receiver,Subject,T1) iff [ [tell(Sender,Receiver,Subject,T2), T1 #< T2] ]. % You cannot both accept and refuse the same proposal [tell(me,Agent,accept(X),T1),tell(me,Agent,refuse(X),T2)] implies [false]. % Possible queries: % ?- ciff( 'resources.alp', [tell(bob,me,request(give(hammer)),7)], Answer). % ?- ciff( 'resources.alp', [tell(bob,me,request(give(picture)),7)], Answer).