2final(s0). 3final(s2). 4 5path(A,B,R) :- 6 A = s(s0,0,_), B = s(F,5,_), 7 reach(A,B,R), 8 final(F). 9 10reach(A,B,[A-Action,B]) :- 11 trans(A,B,Action). 12reach(A,B,[A-Action|R]) :- 13 trans(A,Z,Action), 14 reach(Z,B,R). 15 16trans(s(s0,T0, C0), s(s1, T1, C1), drop(T1)) :- 17 T1 .>=. T0 + 1, 18 drop(T1), 19 C1 .=. 0. 20trans(s(s1,T1, C1), s(s0, T00, C00), catch(T00)) :- 21 T00 .>=. T1 + 1, 22 C00 .=. T00 - T1, 23 catch(T00), 24 C00 .<. 2. 25trans(s(s1,T1, C1), s(s2, T2, C2), wait(T2)) :- 26 T2 .>=. T1 + 1, 27 C2 .=. T2 - T1, 28 not catch(T2), 29 C2 .>=. 2. 30 31catch(T) :- not wait(T). 32wait(T) :- not catch(T). 33 34drop(T) :- not negdrop(T). 35negdrop(T) :- not drop(T). 36 37 38p(A, B, R) :- catch(T), path(A,B,R), T < 5. 39 40 41 42s:- r. 43r:- p(1), p(1). 44 45p(1)