1 { sChoice(R) : sCov(R,_) } 1.
:- sChoice(R1), sCov(R2,_), sIdx(R1,I1), sIdx(R2,I2), I2<I1.

sIdx(danger,1).
sCov(danger,()) :- fronting(T), dangerous(T).

label((oriented(O),xdir(X),ydir(Y),touching(T),in_gap(G))) :- 
	oriented(O), xdir(X), ydir(Y), touching(T), in_gap(G).
sIdx(S,2) :- label(S).
sCov(S,()) :- label(S).

sIdx(true,#sup).	
sCov(true,()).

aCov(left,left). 
aCov(right,right). 

forwardMoveBlocked :- fronting(XY), obj(wall(_),XY).
forwardMoveBlocked :- fronting(XY), obj(door(_,closed),XY).
forwardMoveBlocked :- fronting(XY), obj(door(_,locked),XY).
forwardMoveBlocked :- fronting(XY), obj(key(_),XY).
aCov(forward,forward) :- not forwardMoveBlocked.

aCov(pickup,pickup) :- fronting(XY), obj(key(_),XY). 
aCov(toggle,toggle) :- fronting(XY), obj(door(_,_),XY). 
aCov(drop,drop) :- carries(_), not forwardMoveBlocked. 
