More complex blocks world axiomatization
Allikas: Lambda
%--------------------------------------------------------------------------
% File : PLA001-0 : TPTP v7.2.0. Released v1.0.0.
% Domain : Planning (Blocks world)
% Axioms : Blocks world axioms
%--------------------------------------------------------------------------
cnf(and_definition,axiom,
( holds(and(X,Y),State)
| ~ holds(X,State)
| ~ holds(Y,State) )).
cnf(pickup_1,axiom,
( holds(holding(X),do(pickup(X),State))
| ~ holds(empty,State)
| ~ holds(clear(X),State)
| ~ differ(X,table) )).
cnf(pickup_2,axiom,
( holds(clear(Y),do(pickup(X),State))
| ~ holds(on(X,Y),State)
| ~ holds(clear(X),State)
| ~ holds(empty,State) )).
cnf(pickup_3,axiom,
( holds(on(X,Y),do(pickup(Z),State))
| ~ holds(on(X,Y),State)
| ~ differ(X,Z) )).
cnf(pickup_4,axiom,
( holds(clear(X),do(pickup(Z),State))
| ~ holds(clear(X),State)
| ~ differ(X,Z) )).
cnf(putdown_1,axiom,
( holds(empty,do(putdown(X,Y),State))
| ~ holds(holding(X),State)
| ~ holds(clear(Y),State) )).
cnf(putdown_2,axiom,
( holds(on(X,Y),do(putdown(X,Y),State))
| ~ holds(holding(X),State)
| ~ holds(clear(Y),State) )).
cnf(putdown_3,axiom,
( holds(clear(X),do(putdown(X,Y),State))
| ~ holds(holding(X),State)
| ~ holds(clear(Y),State) )).
cnf(putdown_4,axiom,
( holds(on(X,Y),do(putdown(Z,W),State))
| ~ holds(on(X,Y),State) )).
cnf(putdown_5,axiom,
( holds(clear(Z),do(putdown(X,Y),State))
| ~ holds(clear(Z),State)
| ~ differ(Z,Y) )).
%--------------------------------------------------------------------------
% File : PLA001-1 : TPTP v7.2.0. Released v1.0.0.
% Domain : Planning (Blocks world)
% Axioms : Blocks world difference axioms for 4 blocks
%--------------------------------------------------------------------------
cnf(symmetry_of_differ,axiom,
( differ(X,Y)
| ~ differ(Y,X) )).
cnf(differ_a_b,axiom,
( differ(a,b) )).
cnf(differ_a_c,axiom,
( differ(a,c) )).
cnf(differ_a_d,axiom,
( differ(a,d) )).
cnf(differ_a_table,axiom,
( differ(a,table) )).
cnf(differ_b_c,axiom,
( differ(b,c) )).
cnf(differ_b_d,axiom,
( differ(b,d) )).
cnf(differ_b_table,axiom,
( differ(b,table) )).
cnf(differ_c_d,axiom,
( differ(c,d) )).
cnf(differ_c_table,axiom,
( differ(c,table) )).
cnf(differ_d_table,axiom,
( differ(d,table) )).
%----Initial configuration:
%
% c
% a b d
% -------------------------------
cnf(initial_state1,axiom,
( holds(on(a,table),s0) )).
cnf(initial_state2,axiom,
( holds(on(b,table),s0) )).
cnf(initial_state3,axiom,
( holds(on(c,d),s0) )).
cnf(initial_state4,axiom,
( holds(on(d,table),s0) )).
cnf(initial_state5,axiom,
( holds(clear(a),s0) )).
cnf(initial_state6,axiom,
( holds(clear(b),s0) )).
cnf(initial_state7,axiom,
( holds(clear(c),s0) )).
cnf(initial_state8,axiom,
( holds(empty,s0) )).
%----Table is always clear
cnf(clear_table,axiom,
( holds(clear(table),State) )).
%--------------------------------------------------------------------------
%
% questions:
%
% the second etc are commented out: try also these (remember to outcomment others)
%
%
%
% -----------------------------------------------------------------------
%cnf(prove_DA,negated_conjecture,
% ( ~ holds(on(d,a),State) )).
cnf(prove_DA,negated_conjecture,
( ~ holds(on(d,a),State) | $ans(State))).
% this one asks to construct this tower (which could be on table or on top of other blocks):
%
% c
% b
% a
%
% proving this will take ca 8 secs, during which a prover tries out several search strategies sequentially
% cnf(prove_CBA,negated_conjecture,
% ( ~ holds(and(on(c,b),on(b,a)),State) )).
% this one asks to construct these towers (but, they could be also on top of each other!):
%
% c d
% a b
% cnf(prove_CA_DB,negated_conjecture,
% ( ~ holds(and(on(c,a),on(d,b)),State) )).
% this one asks to construct
%
% d
% c
% cnf(prove_DC,negated_conjecture,
% ( ~ holds(on(d,c),State) )).