% This is the example from "Abducing through negation as failure: % stable models in the independent choice logic". % Copyright 1997. All Rights reserved. David Poole. % ailog: load 'rob_key.ail'. carrying(key,s(T)) <- do(pickup(key),T) & at(robot,Pos,T) & at(key,Pos,T) & pickup_succeeds(T). prob pickup_succeeds(T): 0.7,pickup_fails(T):0.3. carrying(key,s(T)) <- ~ do(pickup(key),T) & ~ do(putdown(key),T) & carrying(key,T) & ~ drops(key,T). drops(key,T) <- slippery(key,T) & drop_slippery_key(T). drops(key,T) <- ~ slippery(key,T) & fumbles_key(T). prob drop_slippery_key(T):0.9,holds_slippery_key(T):0.1. prob fumbles_key(T):0.2,retains_key(T):0.8. at(robot,Pos,s(T)) <- do(goto(Pos),T) & goto_succeeds(T). at(robot,Pos1,s(T)) <- do(goto(Pos),T) & at(robot,Pos1,T) & ~ goto_succeeds(T). at(robot,Pos,s(T)) <- ~ goto_action(T) & at(robot,Pos,T). goto_action(T) <- do(goto(Pos),T). prob goto_succeeds(T):0.93,goto_fails(T):0.07. at(key,Pos,T) <- carrying(key,T) & at(robot,Pos,T). at(key,Pos,s(T)) <- ~ carrying(key,s(T)) & at(key,Pos,T). slippery(key,s(T)) <- slippery(key,T) & stays_slippery(T). %slippery(key,s(T)) <- % ~ slippery(key,T) & % becomes_slippery(T). slippery(key,0) <- initially_slippery(key). prob stays_slippery(T):0.75,stops_being_slippery(T):0.25. prob becomes_slippery(T):0.05,stays_unslippery(T):0.95. prob initially_slippery(key):0.5,initially_unslippery(key):0.5. % Particular scenario do(goto(loc1),0). do(pickup(key),s(0)). %do(pickup(key),s(s(0))). do(goto(loc2),s(s(0))). at(key,loc1,0). at(robot,loc0,0). % Example Queries % predict at(robot,loc1,s(0)). % predict carrying(key,s(s(0))). % predict slippery(key,s(s(0))). % predict slippery(key,s(0)). % predict slippery(key,0). % predict carrying(key,s(s(s(0)))). % predict ~ carrying(key,s(s(s(0)))). % predict at(key,loc1,s(s(s(0)))). % predict drops(key,s(s(0))).