TPTP Problem File: PUZ015-3.p

View Solutions - Solve Problem

%--------------------------------------------------------------------------
% File     : PUZ015-3 : TPTP v8.1.0. Released v2.7.0.
% Domain   : Puzzles
% Problem  : Checkerboard and Dominoes : Corners removed
% Version  : [Cla03] axioms : Especial.
% English  : There is a checker board where two opposite corners are removed.
%            There is a box of dominoes that are one square by two squares
%            in size. Can you exactly cover the checker board with dominoes?
%            The answer is "no", which is shown by the satisfiability of
%            this problem.

% Refs     : [Cla03] Claessen (2003), Email to G. Sutcliffe
% Source   : [Cla03]
% Names    :

% Status   : Satisfiable
% Rating   : 0.33 v8.1.0, 0.67 v7.5.0, 0.33 v7.1.0, 0.67 v7.0.0, 0.33 v6.2.0, 1.00 v6.1.0, 0.67 v5.5.0, 0.75 v5.4.0, 0.89 v5.3.0, 0.86 v5.0.0, 0.88 v4.1.0, 0.86 v4.0.0, 0.88 v3.5.0, 0.86 v3.4.0, 0.83 v3.2.0, 0.80 v3.1.0, 0.86 v2.7.0
% Syntax   : Number of clauses     :   32 (  17 unt;   0 nHn;  17 RR)
%            Number of literals    :   62 (   0 equ;  31 neg)
%            Maximal clause size   :    3 (   1 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :    3 (   3 usr;   0 prp; 2-8 aty)
%            Number of functors    :    3 (   3 usr;   2 con; 0-8 aty)
%            Number of variables   :  296 (   0 sgn)
% SPC      : CNF_SAT_RFO_NEQ

% Comments :
%--------------------------------------------------------------------------
cnf(initial_state,axiom,
    state(row(d,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,o),row(o,o,o,o,o,o,o,d)) ).

cnf(final_state,negated_conjecture,
    ~ state(row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d),row(d,d,d,d,d,d,d,d)) ).

cnf(hori_1,axiom,
    horizontal(row(o,o,C3,C4,C5,C6,C7,C8),row(d,d,C3,C4,C5,C6,C7,C8)) ).

cnf(hori_2,axiom,
    horizontal(row(C1,o,o,C4,C5,C6,C7,C8),row(C1,d,d,C4,C5,C6,C7,C8)) ).

cnf(hori_3,axiom,
    horizontal(row(C1,C2,o,o,C5,C6,C7,C8),row(C1,C2,d,d,C5,C6,C7,C8)) ).

cnf(hori_4,axiom,
    horizontal(row(C1,C2,C3,o,o,C6,C7,C8),row(C1,C2,C3,d,d,C6,C7,C8)) ).

cnf(hori_5,axiom,
    horizontal(row(C1,C2,C3,C4,o,o,C7,C8),row(C1,C2,C3,C4,d,d,C7,C8)) ).

cnf(hori_6,axiom,
    horizontal(row(C1,C2,C3,C4,C5,o,o,C8),row(C1,C2,C3,C4,C5,d,d,C8)) ).

cnf(hori_7,axiom,
    horizontal(row(C1,C2,C3,C4,C5,C6,o,o),row(C1,C2,C3,C4,C5,C6,d,d)) ).

cnf(hori_move_1,axiom,
    ( state(RB,R2,R3,R4,R5,R6,R7,R8)
    | ~ state(RA,R2,R3,R4,R5,R6,R7,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_2,axiom,
    ( state(R1,RB,R3,R4,R5,R6,R7,R8)
    | ~ state(R1,RA,R3,R4,R5,R6,R7,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_3,axiom,
    ( state(R1,R2,RB,R4,R5,R6,R7,R8)
    | ~ state(R1,R2,RA,R4,R5,R6,R7,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_4,axiom,
    ( state(R1,R2,R3,RB,R5,R6,R7,R8)
    | ~ state(R1,R2,R3,RA,R5,R6,R7,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_5,axiom,
    ( state(R1,R2,R3,R4,RB,R6,R7,R8)
    | ~ state(R1,R2,R3,R4,RA,R6,R7,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_6,axiom,
    ( state(R1,R2,R3,R4,R5,RB,R7,R8)
    | ~ state(R1,R2,R3,R4,R5,RA,R7,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_7,axiom,
    ( state(R1,R2,R3,R4,R5,R6,RB,R8)
    | ~ state(R1,R2,R3,R4,R5,R6,RA,R8)
    | ~ horizontal(RA,RB) ) ).

cnf(hori_move_8,axiom,
    ( state(R1,R2,R3,R4,R5,R6,R7,RB)
    | ~ state(R1,R2,R3,R4,R5,R6,R7,RA)
    | ~ horizontal(RA,RB) ) ).

cnf(verti_1,axiom,
    vertical(row(o,C2,C3,C4,C5,C6,C7,C8),row(o,D2,D3,D4,D5,D6,D7,D8),row(d,C2,C3,C4,C5,C6,C7,C8),row(d,D2,D3,D4,D5,D6,D7,D8)) ).

cnf(verti_2,axiom,
    vertical(row(C1,o,C3,C4,C5,C6,C7,C8),row(D1,o,D3,D4,D5,D6,D7,D8),row(C1,d,C3,C4,C5,C6,C7,C8),row(D1,d,D3,D4,D5,D6,D7,D8)) ).

cnf(verti_3,axiom,
    vertical(row(C1,C2,o,C4,C5,C6,C7,C8),row(D1,D2,o,D4,D5,D6,D7,D8),row(C1,C2,d,C4,C5,C6,C7,C8),row(D1,D2,d,D4,D5,D6,D7,D8)) ).

cnf(verti_4,axiom,
    vertical(row(C1,C2,C3,o,C5,C6,C7,C8),row(D1,D2,D3,o,D5,D6,D7,D8),row(C1,C2,C3,d,C5,C6,C7,C8),row(D1,D2,D3,d,D5,D6,D7,D8)) ).

cnf(verti_5,axiom,
    vertical(row(C1,C2,C3,C4,o,C6,C7,C8),row(D1,D2,D3,D4,o,D6,D7,D8),row(C1,C2,C3,C4,d,C6,C7,C8),row(D1,D2,D3,D4,d,D6,D7,D8)) ).

cnf(verti_6,axiom,
    vertical(row(C1,C2,C3,C4,C5,o,C7,C8),row(D1,D2,D3,D4,D5,o,D7,D8),row(C1,C2,C3,C4,C5,d,C7,C8),row(D1,D2,D3,D4,D5,d,D7,D8)) ).

cnf(verti_7,axiom,
    vertical(row(C1,C2,C3,C4,C5,C6,o,C8),row(D1,D2,D3,D4,D5,D6,o,D8),row(C1,C2,C3,C4,C5,C6,d,C8),row(D1,D2,D3,D4,D5,D6,d,D8)) ).

cnf(verti_8,axiom,
    vertical(row(C1,C2,C3,C4,C5,C6,C7,o),row(D1,D2,D3,D4,D5,D6,D7,o),row(C1,C2,C3,C4,C5,C6,C7,d),row(D1,D2,D3,D4,D5,D6,D7,d)) ).

cnf(verti_move_1_2,axiom,
    ( state(RC,RD,R3,R4,R5,R6,R7,R8)
    | ~ state(RA,RB,R3,R4,R5,R6,R7,R8)
    | ~ vertical(RA,RB,RC,RD) ) ).

cnf(verti_move_2_3,axiom,
    ( state(R1,RC,RD,R4,R5,R6,R7,R8)
    | ~ state(R1,RA,RB,R4,R5,R6,R7,R8)
    | ~ vertical(RA,RB,RC,RD) ) ).

cnf(verti_move_3_4,axiom,
    ( state(R1,R2,RC,RD,R5,R6,R7,R8)
    | ~ state(R1,R2,RA,RB,R5,R6,R7,R8)
    | ~ vertical(RA,RB,RC,RD) ) ).

cnf(verti_move_4_5,axiom,
    ( state(R1,R2,R3,RC,RD,R6,R7,R8)
    | ~ state(R1,R2,R3,RA,RB,R6,R7,R8)
    | ~ vertical(RA,RB,RC,RD) ) ).

cnf(verti_move_5_6,axiom,
    ( state(R1,R2,R3,R4,RC,RD,R7,R8)
    | ~ state(R1,R2,R3,R4,RA,RB,R7,R8)
    | ~ vertical(RA,RB,RC,RD) ) ).

cnf(verti_move_6_7,axiom,
    ( state(R1,R2,R3,R4,R5,RC,RD,R8)
    | ~ state(R1,R2,R3,R4,R5,RA,RB,R8)
    | ~ vertical(RA,RB,RC,RD) ) ).

cnf(verti_move_7_8,axiom,
    ( state(R1,R2,R3,R4,R5,R6,RC,RD)
    | ~ state(R1,R2,R3,R4,R5,R6,RA,RB)
    | ~ vertical(RA,RB,RC,RD) ) ).

%--------------------------------------------------------------------------