welcome: please sign in
location: attachment:Sokoban-ENCODING.txt of OfficialProblemSuite

Attachment 'Sokoban-ENCODING.txt'

Download

   1 %
   2 % Sokoban domain IPC 2008
   3 %
   4 % Adaptment from IPC domain description by GB Ianni, using the PDDL2ASP PLASP converter
   5 % http://www.cs.uni-potsdam.de/wv/pdfformat/gekaknsc11a.pdf 
   6 %
   7 % 
   8 
   9 
  10 % GENERATE  >>>>>
  11 1 <= { pushtonongoal( P,S,Ppos,From,To,Dir,T ) : 
  12 	movedir( Ppos,From,Dir ) ,
  13 	movedir( From,To,Dir ) , 
  14 	isnongoal( To ) , 
  15 	player( P ) , 
  16 	stone( S ) , Ppos != To , Ppos != From , From != To; 
  17     move( P,From,To,Dir,T ) : 
  18 	movedir( From,To,Dir ) , 
  19 	player( P ) , From != To;
  20     pushtogoal( P,S,Ppos,From,To,Dir,T ) : 
  21 	movedir( Ppos,From,Dir ) , 
  22 	movedir( From,To,Dir ) , 
  23 	isgoal( To ) , player( P ) , stone( S ) , Ppos != To , Ppos != From , From != To;
  24     noop(T) } <= 1 :- step(T).
  25 
  26 % <<<<<  GENERATE
  27 % 
  28 
  29 % 
  30 %
  31 % Initial state
  32 at(P,To,0) :- at(P,To).
  33 clear(P,0) :- clear(P).
  34 atgoal(S,0) :- isgoal(S), stone(S), at(S,To).
  35  
  36 % EFFECTS APPLY  >>>>>
  37 
  38 % push-to-nongoal/6, effects
  39 del( at( P,Ppos ),Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  40 del( at( S,From ),Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  41 del( clear( To ),Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  42 at( P,From,Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  43 at( S,To,Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  44 clear( Ppos,Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  45 del( atgoal( S ),Ti ) :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  46 
  47 % move/4, effects
  48 del( at( P,From ),Ti ) :- move( P,From,To,Dir,Ti ), movedir( From,To,Dir ), player( P ), From != To.
  49 del( clear( To ),Ti ) :- move( P,From,To,Dir,Ti ), movedir( From,To,Dir ), player( P ), From != To.
  50 at( P,To,Ti ) :- move( P,From,To,Dir,Ti ), movedir( From,To,Dir ), player( P ), From != To.
  51 clear( From,Ti ) :- move( P,From,To,Dir,Ti ), movedir( From,To,Dir ), player( P ), From != To.
  52 
  53 % push-to-goal/6, effects
  54 del( at( P,Ppos ),Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  55 del( at( S,From ),Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  56 del( clear( To ),Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  57 at( P,From,Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  58 at( S,To,Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  59 clear( Ppos,Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  60 atgoal( S,Ti ) :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), stone( S ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  61 % <<<<<  EFFECTS APPLY
  62 % 
  63 
  64 % 
  65 % 
  66 % INERTIA  >>>>>
  67 clear( L,Ti ) :- clear( L,Ti-1 ), not del( clear( L,Ti ) ), step(Ti).
  68 atgoal( S,Ti ) :- atgoal( S,Ti-1 ), not del( atgoal( S,Ti ) ), stone( S ), step(Ti).
  69 at( T,L,Ti ) :- at( T,L,Ti-1 ), not del( at( T,L,Ti ) ), step(Ti).
  70 % <<<<<  INERTIA
  71 % 
  72 
  73 % 
  74 % 
  75 % PRECONDITIONS HOLD  >>>>>
  76 
  77 % push-to-nongoal/6, preconditions
  78  :- pushtonongoal( P,S,Ppos,From,To,Dir,Ti ), not preconditions_png( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To.
  79 preconditions_png( P,S,Ppos,From,To,Dir,Ti ) :- at( P,Ppos,Ti-1 ), at( S,From,Ti-1 ), clear( To,Ti-1 ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isnongoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To, step(Ti).
  80 
  81 % move/4, preconditions
  82  :- move( P,From,To,Dir,Ti ), not preconditions_m( P,From,To,Dir,Ti ), movedir( From,To,Dir ), player( P ), From != To.
  83 preconditions_m( P,From,To,Dir,Ti ) :- at( P,From,Ti-1 ), clear( To,Ti-1 ), movedir( From,To,Dir ), movedir( From,To,Dir ), player( P ), From != To, step(Ti).
  84 
  85 % push-to-goal/6, preconditions
  86  :- pushtogoal( P,S,Ppos,From,To,Dir,Ti ), not preconditions_pg( P,S,Ppos,From,To,Dir,Ti ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To, step(Ti).
  87 preconditions_pg( P,S,Ppos,From,To,Dir,Ti ) :- at( P,Ppos,Ti-1 ), at( S,From,Ti-1 ), clear( To,Ti-1 ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), movedir( Ppos,From,Dir ), movedir( From,To,Dir ), isgoal( To ), player( P ), stone( S ), Ppos != To, Ppos != From, From != To, step(Ti).
  88 
  89 % <<<<<  PRECONDITIONS HOLD
  90 % 
  91 %
  92 % Goal Reached check 
  93 %
  94 goalreached :- step(S), N = #count{ X,T : atgoal(X,T) , goal(X) }, N = #count{ X : goal(X) }.
  95 :- not goalreached.
  96 
  97 % Gringo directives to show / hide particular literals
  98 %#hide.
  99 %#show pushtonongoal/7.
 100 %#show move/5.
 101 %#show pushtogoal/7.

Attached Files

You are not allowed to attach a file to this page.