Otteri süntaksis planeerimisülesanne

Allikas: Lambda
set(prolog_style_variables).
set(tptp_eq).
%set(binary_unit_res).
set(auto).

list(sos).
     
     holds(and(X,Y),State)
    | -holds(X,State)
    | -holds(Y,State). 

    holds(holding(X),do(pickup(X),State))
    | -holds(empty,State)
    | -holds(clear(X),State)
    | -differ(X,table) .

    holds(clear(Y),do(pickup(X),State))
    | -holds(on(X,Y),State)
    | -holds(clear(X),State)
    | -holds(empty,State) .

     holds(on(X,Y),do(pickup(Z),State))
    | -holds(on(X,Y),State)
    | -differ(X,Z) .

     holds(clear(X),do(pickup(Z),State))
    | -holds(clear(X),State)
    | -differ(X,Z) .

     holds(empty,do(putdown(X,Y),State))
    | -holds(holding(X),State)
    | -holds(clear(Y),State) .

     holds(on(X,Y),do(putdown(X,Y),State))
    | -holds(holding(X),State)
    | -holds(clear(Y),State) .
  holds(clear(X),do(putdown(X,Y),State))
    | -holds(holding(X),State)
    | -holds(clear(Y),State) .

     holds(on(X,Y),do(putdown(Z,W),State))
    | -holds(on(X,Y),State) .

     holds(clear(Z),do(putdown(X,Y),State))
    | -holds(clear(Z),State)
    | -differ(Z,Y) .

     differ(X,Y)
    | -differ(Y,X) .

     differ(a,b) .

     differ(a,c) .

     differ(a,d) .

     differ(a,table).

     differ(b,c) .

     differ(b,d) .

     differ(b,table) .

     differ(c,d) .

     differ(c,table) .

     differ(d,table) .
     holds(on(a,table),s0) .

     holds(on(b,table),s0) .

     holds(on(c,d),s0) .

     holds(on(d,table),s0) .

     holds(clear(a),s0) .

     holds(clear(b),s0) .

     holds(clear(c),s0) .

     holds(empty,s0) .

     holds(clear(table),State) .

    % -holds(X,s0) | $ans(X).

end_of_list.

list(sos).

    %-holds(and(on(a,d),on(d,b)),State).

    -holds(on(a,d),State) | $ans(State).

end_of_list.