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.