Here is a list of the statistics maintained about each clause:
Here is a list of all inferences:
The first proof uses all but "ef", although it uses some in fairly
trivial ways. Note that clause normalization is inherently performed
after all inferences but rewriting. The other proofs are for some
fairly well-known problems, and show the rules in more realistic context.
test_all_rules
SET103-6
LUSK3
PUZ031-1 (Schuberts Steamroller)
Bliksem 1.12a
Hans de Nivelle
Max Planck Institut für Informatik, Germany
nivelle@mpi-sb.mpg.de
Here is a list of the inference rules:
Human Readable Short Proof
(0) {G0,W4,D2,L1,V1,M1} I { product( identity, X, X ) }.
(1) {G0,W4,D2,L1,V1,M1} I { product( X, identity, X ) }.
(3) {G0,W5,D3,L1,V1,M1} I { product( X, inverse( X ), identity ) }.
(4) {G0,W6,D3,L1,V2,M1} I { product( X, Y, multiply( X, Y ) ) }.
(5) {G0,W11,D2,L3,V4,M1} I { ! product( X, Y, Z ), Z = T, ! product( X, Y, T ) }.
(6) {G0,W16,D2,L4,V6,M1} I { ! product( Y, T, U ), ! product( X, Y, Z ), product( X, U, W ), ! product( Z, T, W ) }.
(7) {G0,W16,D2,L4,V6,M1} I { ! product( X, Y, Z ), ! product( X, U, W ), product( Z, T, W ), ! product( Y, T, U ) }.
(8) {G0,W4,D2,L1,V1,M1} I { product( X, X, identity ) }.
(9) {G0,W4,D2,L1,V0,M1} I { product( a, b, c ) }.
(10) {G0,W4,D2,L1,V0,M1} I { ! product( b, a, c ) }.
(17) {G1,W9,D3,L2,V3,M1} R(5,4) { Z = multiply( X, Y ), ! product( X, Y, Z) }.
(22) {G1,W7,D2,L2,V2,M1} R(5,1) { Y = X, ! product( X, identity, Y ) }.
(28) {G1,W12,D2,L3,V4,M1} R(6,0) { ! product( X, Y, Z ), product( T, Z, Y ), ! product( T, X, identity ) }.
(41) {G1,W12,D2,L3,V4,M1} R(7,8) { ! product( X, identity, T ), product( Z, Y, T ), ! product( X, Y, Z ) }.
(42) {G2,W5,D3,L1,V1,M1} R(22,4) { multiply( X, identity ) ==> X }.
(140) {G2,W8,D2,L2,V3,M1} R(28,8) { product( X, Z, Y ), ! product( X, Y, Z) }.
(145) {G3,W5,D3,L1,V1,M1} R(140,3) { product( X, identity, inverse( X ) ) }.
(146) {G3,W4,D2,L1,V0,M1} R(140,9) { product( a, c, b ) }.
(169) {G4,W4,D3,L1,V1,M1} R(145,17);d(42) { inverse( X ) ==> X }.
(236) {G4,W8,D2,L2,V1,M1} R(41,146) { ! product( a, identity, X ), product( b, c, X ) }.
(307) {G5,W8,D2,L2,V1,M1} R(236,140) { product( b, X, c ), ! product( a, identity, X ) }.
(320) {G6,W0,D0,L0,V0,M0} R(307,145);d(169);r(10) { }.
Human Readable Total Proof
(322) {G0,W4,D2,L1,V1,M1} { product( identity, X, X ) }.
(323) {G0,W4,D2,L1,V1,M1} { product( X, identity, X ) }.
(324) {G0,W5,D3,L1,V1,M1} { product( inverse( X ), X, identity ) }.
(325) {G0,W5,D3,L1,V1,M1} { product( X, inverse( X ), identity ) }.
(326) {G0,W6,D3,L1,V2,M1} { product( X, Y, multiply( X, Y ) ) }.
(327) {G0,W11,D2,L3,V4,M3} { ! product( X, Y, Z ), ! product( X, Y, T ), Z = T }.
(328) {G0,W16,D2,L4,V6,M4} { ! product( X, Y, Z ), ! product( Y, T, U ), ! product( Z, T, W ), product( X, U, W ) }.
(329) {G0,W16,D2,L4,V6,M4} { ! product( X, Y, Z ), ! product( Y, T, U ), ! product( X, U, W ), product( Z, T, W ) }.
(330) {G0,W4,D2,L1,V1,M1} { product( X, X, identity ) }.
(331) {G0,W4,D2,L1,V0,M1} { product( a, b, c ) }.
(332) {G0,W4,D2,L1,V0,M1} { ! product( b, a, c ) }.
Total Proof:
subsumption: (0) {G0,W4,D2,L1,V1,M1} I { product( identity, X, X ) }.
parent0: (322) {G0,W4,D2,L1,V1,M1} { product( identity, X, X ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
subsumption: (1) {G0,W4,D2,L1,V1,M1} I { product( X, identity, X ) }.
parent0: (323) {G0,W4,D2,L1,V1,M1} { product( X, identity, X ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
subsumption: (3) {G0,W5,D3,L1,V1,M1} I { product( X, inverse( X ), identity) }.
parent0: (325) {G0,W5,D3,L1,V1,M1} { product( X, inverse( X ), identity ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
subsumption: (4) {G0,W6,D3,L1,V2,M1} I { product( X, Y, multiply( X, Y ) ) }.
parent0: (326) {G0,W6,D3,L1,V2,M1} { product( X, Y, multiply( X, Y ) ) }.
substitution0:
X := X
Y := Y
end
permutation0:
0 ==> 0
end
subsumption: (5) {G0,W11,D2,L3,V4,M1} I { ! product( X, Y, Z ), Z = T, ! product( X, Y, T ) }.
parent0: (327) {G0,W11,D2,L3,V4,M3} { ! product( X, Y, Z ), ! product( X, Y, T ), Z = T }.
substitution0:
X := X
Y := Y
Z := Z
T := T
end
permutation0:
0 ==> 0
1 ==> 2
2 ==> 1
end
subsumption: (6) {G0,W16,D2,L4,V6,M1} I { ! product( Y, T, U ), ! product( X, Y, Z ), product( X, U, W ), ! product( Z, T, W ) }.
parent0: (328) {G0,W16,D2,L4,V6,M4} { ! product( X, Y, Z ), ! product( Y, T, U ), ! product( Z, T, W ), product( X, U, W ) }.
substitution0:
X := X
Y := Y
Z := Z
T := T
U := U
W := W
end
permutation0:
0 ==> 1
1 ==> 0
2 ==> 3
3 ==> 2
end
subsumption: (7) {G0,W16,D2,L4,V6,M1} I { ! product( X, Y, Z ), ! product( X, U, W ), product( Z, T, W ), ! product( Y, T, U ) }.
parent0: (329) {G0,W16,D2,L4,V6,M4} { ! product( X, Y, Z ), ! product( Y, T, U ), ! product( X, U, W ), product( Z, T, W ) }.
substitution0:
X := X
Y := Y
Z := Z
T := T
U := U
W := W
end
permutation0:
0 ==> 0
1 ==> 3
2 ==> 1
3 ==> 2
end
subsumption: (8) {G0,W4,D2,L1,V1,M1} I { product( X, X, identity ) }.
parent0: (330) {G0,W4,D2,L1,V1,M1} { product( X, X, identity ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
subsumption: (9) {G0,W4,D2,L1,V0,M1} I { product( a, b, c ) }.
parent0: (331) {G0,W4,D2,L1,V0,M1} { product( a, b, c ) }.
substitution0:
end
permutation0:
0 ==> 0
end
subsumption: (10) {G0,W4,D2,L1,V0,M1} I { ! product( b, a, c ) }.
parent0: (332) {G0,W4,D2,L1,V0,M1} { ! product( b, a, c ) }.
substitution0:
end
permutation0:
0 ==> 0
end
resolution: (376) {G1,W9,D3,L2,V3,M2} { ! product( X, Y, Z ), Z = multiply ( X, Y ) }.
parent0[2]: (5) {G0,W11,D2,L3,V4,M1} I { ! product( X, Y, Z ), Z = T, ! product( X, Y, T ) }.
parent1[0]: (4) {G0,W6,D3,L1,V2,M1} I { product( X, Y, multiply( X, Y ) ) }.
substitution0:
X := X
Y := Y
Z := Z
T := multiply( X, Y )
end
substitution1:
X := X
Y := Y
end
subsumption: (17) {G1,W9,D3,L2,V3,M1} R(5,4) { Z = multiply( X, Y ), ! product( X, Y, Z ) }.
parent0: (376) {G1,W9,D3,L2,V3,M2} { ! product( X, Y, Z ), Z = multiply( X , Y ) }.
substitution0:
X := X
Y := Y
Z := Z
end
permutation0:
0 ==> 1
1 ==> 0
end
resolution: (378) {G1,W7,D2,L2,V2,M2} { ! product( X, identity, Y ), Y = X }.
parent0[2]: (5) {G0,W11,D2,L3,V4,M1} I { ! product( X, Y, Z ), Z = T, ! product( X, Y, T ) }.
parent1[0]: (1) {G0,W4,D2,L1,V1,M1} I { product( X, identity, X ) }.
substitution0:
X := X
Y := identity
Z := Y
T := X
end
substitution1:
X := X
end
subsumption: (22) {G1,W7,D2,L2,V2,M1} R(5,1) { Y = X, ! product( X, identity, Y ) }.
parent0: (378) {G1,W7,D2,L2,V2,M2} { ! product( X, identity, Y ), Y = X }.
substitution0:
X := X
Y := Y
end
permutation0:
0 ==> 1
1 ==> 0
end
resolution: (381) {G1,W12,D2,L3,V4,M3} { ! product( X, Y, Z ), ! product( T, X, identity ), product( T, Z, Y ) }.
parent0[3]: (6) {G0,W16,D2,L4,V6,M1} I { ! product( Y, T, U ), ! product( X , Y, Z ), product( X, U, W ), ! product( Z, T, W ) }.
parent1[0]: (0) {G0,W4,D2,L1,V1,M1} I { product( identity, X, X ) }.
substitution0:
X := T
Y := X
Z := identity
T := Y
U := Z
W := Y
end
substitution1:
X := Y
end
subsumption: (28) {G1,W12,D2,L3,V4,M1} R(6,0) { ! product( X, Y, Z ), product( T, Z, Y ), ! product( T, X, identity ) }.
parent0: (381) {G1,W12,D2,L3,V4,M3} { ! product( X, Y, Z ), ! product( T, X, identity ), product( T, Z, Y ) }.
substitution0:
X := X
Y := Y
Z := Z
T := T
end
permutation0:
0 ==> 0
1 ==> 2
2 ==> 1
end
resolution: (387) {G1,W12,D2,L3,V4,M3} { ! product( X, Y, Z ), ! product( X, identity, T ), product( Z, Y, T ) }.
parent0[3]: (7) {G0,W16,D2,L4,V6,M1} I { ! product( X, Y, Z ), ! product( X , U, W ), product( Z, T, W ), ! product( Y, T, U ) }.
parent1[0]: (8) {G0,W4,D2,L1,V1,M1} I { product( X, X, identity ) }.
substitution0:
X := X
Y := Y
Z := Z
T := Y
U := identity
W := T
end
substitution1:
X := Y
end
subsumption: (41) {G1,W12,D2,L3,V4,M1} R(7,8) { ! product( X, identity, T ) , product( Z, Y, T ), ! product( X, Y, Z ) }.
parent0: (387) {G1,W12,D2,L3,V4,M3} { ! product( X, Y, Z ), ! product( X, identity, T ), product( Z, Y, T ) }.
substitution0:
X := X
Y := Y
Z := Z
T := T
end
permutation0:
0 ==> 2
1 ==> 0
2 ==> 1
end
eqswap: (391) {G1,W7,D2,L2,V2,M2} { Y = X, ! product( Y, identity, X ) }.
parent0[0]: (22) {G1,W7,D2,L2,V2,M1} R(5,1) { Y = X, ! product( X, identity , Y ) }.
substitution0:
X := Y
Y := X
end
resolution: (392) {G1,W5,D3,L1,V1,M1} { X = multiply( X, identity ) }.
parent0[1]: (391) {G1,W7,D2,L2,V2,M2} { Y = X, ! product( Y, identity, X ) }.
parent1[0]: (4) {G0,W6,D3,L1,V2,M1} I { product( X, Y, multiply( X, Y ) ) }.
substitution0:
X := multiply( X, identity )
Y := X
end
substitution1:
X := X
Y := identity
end
eqswap: (393) {G1,W5,D3,L1,V1,M1} { multiply( X, identity ) = X }.
parent0[0]: (392) {G1,W5,D3,L1,V1,M1} { X = multiply( X, identity ) }.
substitution0:
X := X
end
subsumption: (42) {G2,W5,D3,L1,V1,M1} R(22,4) { multiply( X, identity ) ==> X }.
parent0: (393) {G1,W5,D3,L1,V1,M1} { multiply( X, identity ) = X }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
resolution: (395) {G1,W8,D2,L2,V3,M2} { ! product( X, Y, Z ), product( X, Z, Y ) }.
parent0[2]: (28) {G1,W12,D2,L3,V4,M1} R(6,0) { ! product( X, Y, Z ), product( T, Z, Y ), ! product( T, X, identity ) }.
parent1[0]: (8) {G0,W4,D2,L1,V1,M1} I { product( X, X, identity ) }.
substitution0:
X := X
Y := Y
Z := Z
T := X
end
substitution1:
X := X
end
subsumption: (140) {G2,W8,D2,L2,V3,M1} R(28,8) { product( X, Z, Y ), ! product( X, Y, Z ) }.
parent0: (395) {G1,W8,D2,L2,V3,M2} { ! product( X, Y, Z ), product( X, Z, Y ) }.
substitution0:
X := X
Y := Y
Z := Z
end
permutation0:
0 ==> 1
1 ==> 0
end
resolution: (396) {G1,W5,D3,L1,V1,M1} { product( X, identity, inverse( X )) }.
parent0[1]: (140) {G2,W8,D2,L2,V3,M1} R(28,8) { product( X, Z, Y ), ! product( X, Y, Z ) }.
parent1[0]: (3) {G0,W5,D3,L1,V1,M1} I { product( X, inverse( X ), identity) }.
substitution0:
X := X
Y := inverse( X )
Z := identity
end
substitution1:
X := X
end
subsumption: (145) {G3,W5,D3,L1,V1,M1} R(140,3) { product( X, identity, inverse( X ) ) }.
parent0: (396) {G1,W5,D3,L1,V1,M1} { product( X, identity, inverse( X ) ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
resolution: (397) {G1,W4,D2,L1,V0,M1} { product( a, c, b ) }.
parent0[1]: (140) {G2,W8,D2,L2,V3,M1} R(28,8) { product( X, Z, Y ), ! product( X, Y, Z ) }.
parent1[0]: (9) {G0,W4,D2,L1,V0,M1} I { product( a, b, c ) }.
substitution0:
X := a
Y := b
Z := c
end
substitution1:
end
subsumption: (146) {G3,W4,D2,L1,V0,M1} R(140,9) { product( a, c, b ) }.
parent0: (397) {G1,W4,D2,L1,V0,M1} { product( a, c, b ) }.
substitution0:
end
permutation0:
0 ==> 0
end
eqswap: (398) {G1,W9,D3,L2,V3,M2} { multiply( Y, Z ) = X, ! product( Y, Z , X ) }.
parent0[0]: (17) {G1,W9,D3,L2,V3,M1} R(5,4) { Z = multiply( X, Y ), ! product( X, Y, Z ) }.
substitution0:
X := Y
Y := Z
Z := X
end
resolution: (400) {G2,W6,D3,L1,V1,M1} { multiply( X, identity ) = inverse ( X ) }.
parent0[1]: (398) {G1,W9,D3,L2,V3,M2} { multiply( Y, Z ) = X, ! product( Y , Z, X ) }.
parent1[0]: (145) {G3,W5,D3,L1,V1,M1} R(140,3) { product( X, identity, inverse( X ) ) }.
substitution0:
X := inverse( X )
Y := X
Z := identity
end
substitution1:
X := X
end
paramod: (401) {G3,W4,D3,L1,V1,M1} { X = inverse( X ) }.
parent0[0]: (42) {G2,W5,D3,L1,V1,M1} R(22,4) { multiply( X, identity ) ==> X }.
parent1[0; 1]: (400) {G2,W6,D3,L1,V1,M1} { multiply( X, identity ) = inverse( X ) }.
substitution0:
X := X
end
substitution1:
X := X
end
eqswap: (402) {G3,W4,D3,L1,V1,M1} { inverse( X ) = X }.
parent0[0]: (401) {G3,W4,D3,L1,V1,M1} { X = inverse( X ) }.
substitution0:
X := X
end
subsumption: (169) {G4,W4,D3,L1,V1,M1} R(145,17);d(42) { inverse( X ) ==> X }.
parent0: (402) {G3,W4,D3,L1,V1,M1} { inverse( X ) = X }.
substitution0:
X := X
end
permutation0:
0 ==> 0
end
resolution: (403) {G2,W8,D2,L2,V1,M2} { ! product( a, identity, X ), product( b, c, X ) }.
parent0[2]: (41) {G1,W12,D2,L3,V4,M1} R(7,8) { ! product( X, identity, T ) , product( Z, Y, T ), ! product( X, Y, Z ) }.
parent1[0]: (146) {G3,W4,D2,L1,V0,M1} R(140,9) { product( a, c, b ) }.
substitution0:
X := a
Y := c
Z := b
T := X
end
substitution1:
end
subsumption: (236) {G4,W8,D2,L2,V1,M1} R(41,146) { ! product( a, identity, X ), product( b, c, X ) }.
parent0: (403) {G2,W8,D2,L2,V1,M2} { ! product( a, identity, X ), product ( b, c, X ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
1 ==> 1
end
resolution: (405) {G3,W8,D2,L2,V1,M2} { product( b, X, c ), ! product( a, identity, X ) }.
parent0[1]: (140) {G2,W8,D2,L2,V3,M1} R(28,8) { product( X, Z, Y ), ! product( X, Y, Z ) }.
parent1[1]: (236) {G4,W8,D2,L2,V1,M1} R(41,146) { ! product( a, identity, X), product( b, c, X ) }.
substitution0:
X := b
Y := c
Z := X
end
substitution1:
X := X
end
subsumption: (307) {G5,W8,D2,L2,V1,M1} R(236,140) { product( b, X, c ), ! product( a, identity, X ) }.
parent0: (405) {G3,W8,D2,L2,V1,M2} { product( b, X, c ), ! product( a, identity, X ) }.
substitution0:
X := X
end
permutation0:
0 ==> 0
1 ==> 1
end
resolution: (407) {G4,W5,D3,L1,V0,M1} { product( b, inverse( a ), c ) }.
parent0[1]: (307) {G5,W8,D2,L2,V1,M1} R(236,140) { product( b, X, c ), ! product( a, identity, X ) }.
parent1[0]: (145) {G3,W5,D3,L1,V1,M1} R(140,3) { product( X, identity, inverse( X ) ) }.
substitution0:
X := inverse( a )
end
substitution1:
X := a
end
paramod: (408) {G5,W4,D2,L1,V0,M1} { product( b, a, c ) }.
parent0[0]: (169) {G4,W4,D3,L1,V1,M1} R(145,17);d(42) { inverse( X ) ==> X }.
parent1[0; 2]: (407) {G4,W5,D3,L1,V0,M1} { product( b, inverse( a ), c ) }.
substitution0:
X := a
end
substitution1:
end
resolution: (409) {G1,W0,D0,L0,V0,M0} { }.
parent0[0]: (10) {G0,W4,D2,L1,V0,M1} I { ! product( b, a, c ) }.
parent1[0]: (408) {G5,W4,D2,L1,V0,M1} { product( b, a, c ) }.
substitution0:
end
substitution1:
end
subsumption: (320) {G6,W0,D0,L0,V0,M0} R(307,145);d(169);r(10) { }.
parent0: (409) {G1,W0,D0,L0,V0,M0} { }.
substitution0:
end
permutation0:
end
Machine Readable Total Proof
clause( 0, [ product( identity, X, X ) ] ) .
clause( 1, [ product( X, identity, X ) ] ) .
clause( 3, [ product( X, inverse( X ), identity ) ] ) .
clause( 4, [ product( X, Y, multiply( X, Y ) ) ] ) .
clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) ) ]) .
clause( 6, [ ~( product( Y, T, U ) ), ~( product( X, Y, Z ) ), product( X, U, W ), ~( product( Z, T, W ) ) ] ) .
clause( 7, [ ~( product( X, Y, Z ) ), ~( product( X, U, W ) ), product( Z, T, W ), ~( product( Y, T, U ) ) ] ) .
clause( 8, [ product( X, X, identity ) ] ) .
clause( 9, [ product( a, b, c ) ] ) .
clause( 10, [ ~( product( b, a, c ) ) ] ) .
clause( 17, [ =( Z, multiply( X, Y ) ), ~( product( X, Y, Z ) ) ] ) .
clause( 22, [ =( Y, X ), ~( product( X, identity, Y ) ) ] ) .
clause( 28, [ ~( product( X, Y, Z ) ), product( T, Z, Y ), ~( product( T, X , identity ) ) ] ) .
clause( 41, [ ~( product( X, identity, T ) ), product( Z, Y, T ), ~( product( X, Y, Z ) ) ] ) .
clause( 42, [ =( multiply( X, identity ), X ) ] ) .
clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] ) .
clause( 145, [ product( X, identity, inverse( X ) ) ] ) .
clause( 146, [ product( a, c, b ) ] ) .
clause( 169, [ =( inverse( X ), X ) ] ) .
clause( 236, [ ~( product( a, identity, X ) ), product( b, c, X ) ] ) .
clause( 307, [ product( b, X, c ), ~( product( a, identity, X ) ) ] ) .
clause( 320, [] ) .
found a proof!
% ABCDEFGHIJKLMNOPQRSTUVWXYZ
initialclauses(
[ clause( 322, [ product( identity, X, X ) ] )
, clause( 323, [ product( X, identity, X ) ] )
, clause( 324, [ product( inverse( X ), X, identity ) ] )
, clause( 325, [ product( X, inverse( X ), identity ) ] )
, clause( 326, [ product( X, Y, multiply( X, Y ) ) ] )
, clause( 327, [ ~( product( X, Y, Z ) ), ~( product( X, Y, T ) ), =( Z, T) ] )
, clause( 328, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~( product( Z, T, W ) ), product( X, U, W ) ] )
, clause( 329, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~( product( X, U, W ) ), product( Z, T, W ) ] )
, clause( 330, [ product( X, X, identity ) ] )
, clause( 331, [ product( a, b, c ) ] )
, clause( 332, [ ~( product( b, a, c ) ) ] )
] ).
subsumption(
clause( 0, [ product( identity, X, X ) ] )
, clause( 322, [ product( identity, X, X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
subsumption(
clause( 1, [ product( X, identity, X ) ] )
, clause( 323, [ product( X, identity, X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
subsumption(
clause( 3, [ product( X, inverse( X ), identity ) ] )
, clause( 325, [ product( X, inverse( X ), identity ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
subsumption(
clause( 4, [ product( X, Y, multiply( X, Y ) ) ] )
, clause( 326, [ product( X, Y, multiply( X, Y ) ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
)] ) ).
subsumption(
clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) ) ]
)
, clause( 327, [ ~( product( X, Y, Z ) ), ~( product( X, Y, T ) ), =( Z, T
) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T )] ),
permutation( 0, [ ==>( 0, 0 ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).
subsumption(
clause( 6, [ ~( product( Y, T, U ) ), ~( product( X, Y, Z ) ), product( X,
U, W ), ~( product( Z, T, W ) ) ] )
, clause( 328, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~(
product( Z, T, W ) ), product( X, U, W ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T ), :=( U
, U ), :=( W, W )] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 ), ==>( 2
, 3 ), ==>( 3, 2 )] ) ).
subsumption(
clause( 7, [ ~( product( X, Y, Z ) ), ~( product( X, U, W ) ), product( Z,
T, W ), ~( product( Y, T, U ) ) ] )
, clause( 329, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~(
product( X, U, W ) ), product( Z, T, W ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T ), :=( U
, U ), :=( W, W )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 3 ), ==>( 2
, 1 ), ==>( 3, 2 )] ) ).
subsumption(
clause( 8, [ product( X, X, identity ) ] )
, clause( 330, [ product( X, X, identity ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
subsumption(
clause( 9, [ product( a, b, c ) ] )
, clause( 331, [ product( a, b, c ) ] )
, substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
subsumption(
clause( 10, [ ~( product( b, a, c ) ) ] )
, clause( 332, [ ~( product( b, a, c ) ) ] )
, substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
resolution(
clause( 376, [ ~( product( X, Y, Z ) ), =( Z, multiply( X, Y ) ) ] )
, clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) )
] )
, 2, clause( 4, [ product( X, Y, multiply( X, Y ) ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, multiply(
X, Y ) )] ), substitution( 1, [ :=( X, X ), :=( Y, Y )] )).
subsumption(
clause( 17, [ =( Z, multiply( X, Y ) ), ~( product( X, Y, Z ) ) ] )
, clause( 376, [ ~( product( X, Y, Z ) ), =( Z, multiply( X, Y ) ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z )] ),
permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 )] ) ).
resolution(
clause( 378, [ ~( product( X, identity, Y ) ), =( Y, X ) ] )
, clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) )
] )
, 2, clause( 1, [ product( X, identity, X ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, identity ), :=( Z, Y ), :=( T, X
)] ), substitution( 1, [ :=( X, X )] )).
subsumption(
clause( 22, [ =( Y, X ), ~( product( X, identity, Y ) ) ] )
, clause( 378, [ ~( product( X, identity, Y ) ), =( Y, X ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 1
), ==>( 1, 0 )] ) ).
resolution(
clause( 381, [ ~( product( X, Y, Z ) ), ~( product( T, X, identity ) ),
product( T, Z, Y ) ] )
, clause( 6, [ ~( product( Y, T, U ) ), ~( product( X, Y, Z ) ), product( X
, U, W ), ~( product( Z, T, W ) ) ] )
, 3, clause( 0, [ product( identity, X, X ) ] )
, 0, substitution( 0, [ :=( X, T ), :=( Y, X ), :=( Z, identity ), :=( T, Y
), :=( U, Z ), :=( W, Y )] ), substitution( 1, [ :=( X, Y )] )).
subsumption(
clause( 28, [ ~( product( X, Y, Z ) ), product( T, Z, Y ), ~( product( T, X
, identity ) ) ] )
, clause( 381, [ ~( product( X, Y, Z ) ), ~( product( T, X, identity ) ),
product( T, Z, Y ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T )] ),
permutation( 0, [ ==>( 0, 0 ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).
resolution(
clause( 387, [ ~( product( X, Y, Z ) ), ~( product( X, identity, T ) ),
product( Z, Y, T ) ] )
, clause( 7, [ ~( product( X, Y, Z ) ), ~( product( X, U, W ) ), product( Z
, T, W ), ~( product( Y, T, U ) ) ] )
, 3, clause( 8, [ product( X, X, identity ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, Y ),
:=( U, identity ), :=( W, T )] ), substitution( 1, [ :=( X, Y )] )).
subsumption(
clause( 41, [ ~( product( X, identity, T ) ), product( Z, Y, T ), ~(
product( X, Y, Z ) ) ] )
, clause( 387, [ ~( product( X, Y, Z ) ), ~( product( X, identity, T ) ),
product( Z, Y, T ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T )] ),
permutation( 0, [ ==>( 0, 2 ), ==>( 1, 0 ), ==>( 2, 1 )] ) ).
eqswap(
clause( 391, [ =( Y, X ), ~( product( Y, identity, X ) ) ] )
, clause( 22, [ =( Y, X ), ~( product( X, identity, Y ) ) ] )
, 0, substitution( 0, [ :=( X, Y ), :=( Y, X )] )).
resolution(
clause( 392, [ =( X, multiply( X, identity ) ) ] )
, clause( 391, [ =( Y, X ), ~( product( Y, identity, X ) ) ] )
, 1, clause( 4, [ product( X, Y, multiply( X, Y ) ) ] )
, 0, substitution( 0, [ :=( X, multiply( X, identity ) ), :=( Y, X )] ),
substitution( 1, [ :=( X, X ), :=( Y, identity )] )).
eqswap(
clause( 393, [ =( multiply( X, identity ), X ) ] )
, clause( 392, [ =( X, multiply( X, identity ) ) ] )
, 0, substitution( 0, [ :=( X, X )] )).
subsumption(
clause( 42, [ =( multiply( X, identity ), X ) ] )
, clause( 393, [ =( multiply( X, identity ), X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
resolution(
clause( 395, [ ~( product( X, Y, Z ) ), product( X, Z, Y ) ] )
, clause( 28, [ ~( product( X, Y, Z ) ), product( T, Z, Y ), ~( product( T
, X, identity ) ) ] )
, 2, clause( 8, [ product( X, X, identity ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, X )] ),
substitution( 1, [ :=( X, X )] )).
subsumption(
clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, clause( 395, [ ~( product( X, Y, Z ) ), product( X, Z, Y ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z )] ),
permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 )] ) ).
resolution(
clause( 396, [ product( X, identity, inverse( X ) ) ] )
, clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, 1, clause( 3, [ product( X, inverse( X ), identity ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, inverse( X ) ), :=( Z, identity
)] ), substitution( 1, [ :=( X, X )] )).
subsumption(
clause( 145, [ product( X, identity, inverse( X ) ) ] )
, clause( 396, [ product( X, identity, inverse( X ) ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
resolution(
clause( 397, [ product( a, c, b ) ] )
, clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, 1, clause( 9, [ product( a, b, c ) ] )
, 0, substitution( 0, [ :=( X, a ), :=( Y, b ), :=( Z, c )] ),
substitution( 1, [] )).
subsumption(
clause( 146, [ product( a, c, b ) ] )
, clause( 397, [ product( a, c, b ) ] )
, substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
eqswap(
clause( 398, [ =( multiply( Y, Z ), X ), ~( product( Y, Z, X ) ) ] )
, clause( 17, [ =( Z, multiply( X, Y ) ), ~( product( X, Y, Z ) ) ] )
, 0, substitution( 0, [ :=( X, Y ), :=( Y, Z ), :=( Z, X )] )).
resolution(
clause( 400, [ =( multiply( X, identity ), inverse( X ) ) ] )
, clause( 398, [ =( multiply( Y, Z ), X ), ~( product( Y, Z, X ) ) ] )
, 1, clause( 145, [ product( X, identity, inverse( X ) ) ] )
, 0, substitution( 0, [ :=( X, inverse( X ) ), :=( Y, X ), :=( Z, identity
)] ), substitution( 1, [ :=( X, X )] )).
paramod(
clause( 401, [ =( X, inverse( X ) ) ] )
, clause( 42, [ =( multiply( X, identity ), X ) ] )
, 0, clause( 400, [ =( multiply( X, identity ), inverse( X ) ) ] )
, 0, 1, substitution( 0, [ :=( X, X )] ), substitution( 1, [ :=( X, X )] )
).
eqswap(
clause( 402, [ =( inverse( X ), X ) ] )
, clause( 401, [ =( X, inverse( X ) ) ] )
, 0, substitution( 0, [ :=( X, X )] )).
subsumption(
clause( 169, [ =( inverse( X ), X ) ] )
, clause( 402, [ =( inverse( X ), X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
resolution(
clause( 403, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, clause( 41, [ ~( product( X, identity, T ) ), product( Z, Y, T ), ~(
product( X, Y, Z ) ) ] )
, 2, clause( 146, [ product( a, c, b ) ] )
, 0, substitution( 0, [ :=( X, a ), :=( Y, c ), :=( Z, b ), :=( T, X )] ),
substitution( 1, [] )).
subsumption(
clause( 236, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, clause( 403, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1,
1 )] ) ).
resolution(
clause( 405, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, 1, clause( 236, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, 1, substitution( 0, [ :=( X, b ), :=( Y, c ), :=( Z, X )] ),
substitution( 1, [ :=( X, X )] )).
subsumption(
clause( 307, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, clause( 405, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1,
1 )] ) ).
resolution(
clause( 407, [ product( b, inverse( a ), c ) ] )
, clause( 307, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, 1, clause( 145, [ product( X, identity, inverse( X ) ) ] )
, 0, substitution( 0, [ :=( X, inverse( a ) )] ), substitution( 1, [ :=( X
, a )] )).
paramod(
clause( 408, [ product( b, a, c ) ] )
, clause( 169, [ =( inverse( X ), X ) ] )
, 0, clause( 407, [ product( b, inverse( a ), c ) ] )
, 0, 2, substitution( 0, [ :=( X, a )] ), substitution( 1, [] )).
resolution(
clause( 409, [] )
, clause( 10, [ ~( product( b, a, c ) ) ] )
, 0, clause( 408, [ product( b, a, c ) ] )
, 0, substitution( 0, [] ), substitution( 1, [] )).
subsumption(
clause( 320, [] )
, clause( 409, [] )
, substitution( 0, [] ), permutation( 0, [] ) ).
end.
EP 0.7
Stephan Schulz
Institut für Informatik, Technische Universität München,
Germany, and Safelogic AB, Sweden
schulz@informatik.tu-muenchen.de
1 : [++equal(a, b),++equal(a, c)] : initial
2 : [++equal(i(X1), i(X2))] : initial
3 : [++equal(b, c),--equal(X1, X2),--equal(X3, X4),--equal(c, d)] : initial
4 : [++equal(c, d),--equal(h(i(a)), h(i(e)))] : initial
5 : [++equal(f(X1,X2), f(X2,X1))] : initial
6 : [++equal(g(X1,X2), g(X2,X1))] : initial
7 : [++equal(f(X1,f(X2,X3)), f(f(X1,X2),X3))] : initial
8 : [--equal(f(f(X1,X2),f(X3,g(X4,X5))), f(f(g(X4,X5),X3),f(X2,X1))),--equal(k(X1,X1), k(a,b))] : initial
13 : [--equal(k(X1,X1), k(a,b))] : ar(8,5,6,7)
23 : [++equal(c, b),--equal(X1, X2),--equal(d, c)] : er(3)
25 : [++equal(c, b),--equal(d, c)] : er(23)
26 : [++equal(d, c)] : sr(4,2)
27 : [++equal(c, b),--equal(c, c)] : rw(25,26)
28 : [++equal(c, b)] : cn(27)
30 : [++equal(b, a)] : pm(28,1)
33 : [--equal(k(X1,X1), k(a,a))] : rw(13,30)
114 : [] : er(33)
115 : [] : 114 : "proof"
6 : [++subclass(X1,universal_class)] : initial
10 : [--member(y,universal_class)] : initial
13 : [++equal(unordered_pair(X1,X1), singleton(X1))] : initial
16 : [++equal(X1, null_class),++member(regular(X1),X1)] : initial
37 : [++member(X1,X2),--subclass(X3,X2),--member(X1,X3)] : initial
46 : [++equal(X1, X2),++equal(X1, X3),--member(X1,unordered_pair(X2,X3))] : initial
48 : [++equal(unordered_pair(singleton(X1),unordered_pair(X1,singleton(X2))), ordered_pair(X1,X2))] : initial
49 : [--equal(unordered_pair(singleton(x),unordered_pair(x,null_class)), ordered_pair(x,y))] : initial
234 : [++member(X1,universal_class),--member(X1,X2)] : pm(6,37)
255 : [++member(regular(X1),universal_class),++equal(X1, null_class)] : pm(16,234)
354 : [++equal(X1, X2),--member(X1,singleton(X2))] : pm(13,46)
441 : [++equal(regular(singleton(X1)), X1),++equal(singleton(X1), null_class)] : pm(16,354)
475 : [++member(X1,universal_class),++equal(singleton(X1), null_class)] : pm(441,255)
490 : [++equal(singleton(y), null_class)] : pm(475,10)
501 : [++equal(unordered_pair(singleton(X1),unordered_pair(X1,null_class)), ordered_pair(X1,y))] : pm(490,48)
6935 : [--equal(ordered_pair(x,y), ordered_pair(x,y))] : rw(49,501)
6936 : [] : cn(6935)
6937 : [] : 6936 : "proof"
1 : [++equal(j(0,X1), X1)] : initial
2 : [++equal(j(X1,0), X1)] : initial
3 : [++equal(f(X1,X1), X1)] : initial
5 : [++equal(j(X1,g(X1)), 0)] : initial
6 : [++equal(j(X1,X2), j(X2,X1))] : initial
7 : [--equal(f(a,b), f(b,a))] : initial
8 : [++equal(j(j(X1,X2),X3), j(X1,j(X2,X3)))] : initial
10 : [++equal(f(X1,j(X2,X3)), j(f(X1,X2),f(X1,X3)))] : initial
11 : [++equal(f(j(X1,X2),X3), j(f(X1,X3),f(X2,X3)))] : initial
32 : [++equal(j(0,X1), j(X2,j(g(X2),X1)))] : pm(5,8)
34 : [++equal(j(X1,j(X2,X3)), j(X3,j(X1,X2)))] : pm(8,6)
41 : [++equal(X1, j(X2,j(g(X2),X1)))] : rw(32,1)
49 : [++equal(j(X1,0), g(g(X1)))] : pm(5,41)
58 : [++equal(X1, g(g(X1)))] : rw(49,2)
551 : [++equal(j(X1,f(X1,X2)), f(X1,j(X1,X2)))] : pm(3,10)
552 : [++equal(j(f(X1,X2),X1), f(X1,j(X2,X1)))] : pm(3,10)
569 : [++equal(j(X1,f(X1,X2)), f(X1,j(X2,X1)))] : rw(552,6)
581 : [++equal(f(X1,X1), j(X1,f(X1,0)))] : pm(2,551)
582 : [++equal(f(X1,0), j(X1,f(X1,g(X1))))] : pm(5,551)
602 : [++equal(X1, j(X1,f(X1,0)))] : rw(581,3)
617 : [++equal(j(X1,g(X1)), f(g(X1),0))] : pm(602,41)
629 : [++equal(0, f(g(X1),0))] : rw(617,5)
638 : [++equal(f(X1,0), 0)] : pm(58,629)
749 : [++equal(j(X1,f(X1,g(X1))), 0)] : rw(582,638)
754 : [++equal(j(X1,0), f(g(X1),g(g(X1))))] : pm(749,41)
771 : [++equal(X1, f(g(X1),g(g(X1))))] : rw(754,2)
772 : [++equal(X1, f(g(X1),X1))] : rw(771,58)
931 : [++equal(j(X1,f(X2,X1)), f(j(X1,X2),X1))] : pm(3,11)
932 : [++equal(j(f(X1,X2),X2), f(j(X1,X2),X2))] : pm(3,11)
968 : [++equal(j(X1,f(X2,X1)), f(j(X2,X1),X1))] : rw(932,6)
1041 : [++equal(f(X1,X1), j(X1,f(0,X1)))] : pm(2,931)
1042 : [++equal(f(0,X1), j(X1,f(g(X1),X1)))] : pm(5,931)
1068 : [++equal(X1, j(X1,f(0,X1)))] : rw(1041,3)
1069 : [++equal(f(0,X1), j(X1,X1))] : rw(1042,772)
1091 : [++equal(j(X1,g(X1)), f(0,g(X1)))] : pm(1068,41)
1114 : [++equal(0, f(0,g(X1)))] : rw(1091,5)
1141 : [++equal(f(0,X1), 0)] : pm(58,1114)
1213 : [++equal(0, j(X1,X1))] : rw(1069,1141)
1214 : [++equal(j(0,X1), j(X2,j(X2,X1)))] : pm(1213,8)
1226 : [++equal(j(X1,0), j(X2,j(X1,X2)))] : pm(1213,34)
1238 : [++equal(X1, j(X2,j(X2,X1)))] : rw(1214,1)
1253 : [++equal(X1, j(X2,j(X1,X2)))] : rw(1226,2)
1423 : [++equal(f(X1,j(X1,X2)), j(j(X1,X2),f(X2,j(X1,X2))))] : pm(1253,968)
1453 : [++equal(j(X1,f(X1,X2)), j(j(X1,X2),f(X2,j(X1,X2))))] : rw(1423,551)
1454 : [++equal(j(X1,f(X1,X2)), j(X1,f(X2,X1)))] : rw(rw(rw(1453,569),8),1238)
1710 : [++equal(j(X1,j(X1,f(X2,X1))), j(X1,f(X1,j(X1,X2))))] : pm(931,1454)
1767 : [++equal(f(X1,X2), j(X2,f(X2,j(X2,X1))))] : rw(1710,1238)
1768 : [++equal(f(X1,X2), f(X2,X1))] : rw(rw(1767,551),1238)
1814 : [--equal(f(a,b), f(a,b))] : rw(7,1768)
1815 : [] : cn(1814)
1816 : [] : 1815 : "proof"
1 : [++wolf(a_wolf)] : initial
2 : [++fox(a_fox)] : initial
3 : [++bird(a_bird)] : initial
5 : [++snail(a_snail)] : initial
6 : [++grain(a_grain)] : initial
7 : [++animal(X1),--wolf(X1)] : initial
8 : [++animal(X1),--fox(X1)] : initial
9 : [++animal(X1),--bird(X1)] : initial
11 : [++animal(X1),--snail(X1)] : initial
12 : [++plant(X1),--grain(X1)] : initial
14 : [++plant(snail_food_of(X1)),--snail(X1)] : initial
16 : [++eats(X1,snail_food_of(X1)),--snail(X1)] : initial
18 : [++much_smaller(X1,X2),--snail(X1),--bird(X2)] : initial
19 : [++much_smaller(X1,X2),--bird(X1),--fox(X2)] : initial
20 : [++much_smaller(X1,X2),--fox(X1),--wolf(X2)] : initial
22 : [--wolf(X1),--fox(X2),--eats(X1,X2)] : initial
23 : [--wolf(X1),--grain(X2),--eats(X1,X2)] : initial
24 : [--bird(X1),--snail(X2),--eats(X1,X2)] : initial
25 : [--animal(X1),--animal(X2),--grain(X3),--eats(X1,X2),--eats(X2,X3)] : initial
26 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--much_smaller(X3,X1),--eats(X3,X4)] : initial
27 : [++animal(a_wolf)] : pm(1,7)
28 : [++animal(a_fox)] : pm(2,8)
29 : [++animal(a_bird)] : pm(3,9)
31 : [++animal(a_snail)] : pm(5,11)
59 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--eats(X3,X4),--snail(X3),--bird(X1)] : pm(18,26)
60 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--eats(X3,X4),--bird(X3),--fox(X1)] : pm(19,26)
61 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--eats(X3,X4),--fox(X3),--wolf(X1)] : pm(20,26)
160 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(snail_food_of(X3)),--snail(X3),--bird(X1)] : pm(16,59)
258 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--snail(X3),--bird(X1)] : pm(14,160)
299 : [++eats(a_bird,X1),++eats(a_bird,X2),--plant(X1),--animal(X2),--snail(X2),--bird(a_bird)] : pm(29,258)
302 : [++eats(a_bird,X1),++eats(a_bird,X2),--plant(X1),--animal(X2),--snail(X2),--$true] : rw(299,3)
303 : [++eats(a_bird,X1),++eats(a_bird,X2),--plant(X1),--animal(X2),--snail(X2)] : cn(302)
306 : [++eats(a_bird,X1),++eats(a_bird,X2),--animal(X2),--snail(X2),--grain(X1)] : pm(12,303)
315 : [++eats(a_bird,X1),++eats(a_bird,a_snail),--snail(a_snail),--grain(X1)] : pm(31,306)
316 : [++eats(a_bird,X1),++eats(a_bird,a_snail),--$true,--grain(X1)] : rw(315,5)
317 : [++eats(a_bird,X1),++eats(a_bird,a_snail),--grain(X1)] : cn(316)
320 : [++eats(a_bird,a_grain),++eats(a_bird,a_snail)] : pm(6,317)
358 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--animal(a_bird),--plant(a_grain),--bird(a_bird),--fox(X1)] : pm(320,60)
373 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--$true,--plant(a_grain),--bird(a_bird),--fox(X1)] : rw(358,29)
374 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--$true,--plant(a_grain),--$true,--fox(X1)] : rw(373,3)
375 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--plant(a_grain),--fox(X1)] : cn(374)
852 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--fox(X1),--grain(a_grain)] : pm(12,375)
853 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--fox(X1),--$true] : rw(852,6)
854 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--fox(X1)] : cn(853)
860 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--plant(X1),--fox(a_fox)] : pm(28,854)
868 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--plant(X1),--$true] : rw(860,2)
869 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--plant(X1)] : cn(868)
871 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--grain(X1)] : pm(12,869)
874 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),++eats(a_bird,a_snail)] : pm(6,871)
877 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),--bird(a_bird),--snail(a_snail)] : pm(874,24)
884 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),--$true,--snail(a_snail)] : rw(877,3)
885 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),--$true,--$true] : rw(884,5)
886 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird)] : cn(885)
910 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--animal(a_fox),--plant(a_grain),--fox(a_fox),--wolf(X1)] : pm(886,61)
925 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--$true,--plant(a_grain),--fox(a_fox),--wolf(X1)] : rw(910,28)
926 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--$true,--plant(a_grain),--$true,--wolf(X1)] : rw(925,2)
927 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--plant(a_grain),--wolf(X1)] : cn(926)
1375 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--wolf(X1),--grain(a_grain)] : pm(12,927)
1376 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--wolf(X1),--$true] : rw(1375,6)
1377 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--wolf(X1)] : cn(1376)
1382 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--plant(X1),--wolf(a_wolf)] : pm(27,1377)
1391 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--plant(X1),--$true] : rw(1382,1)
1392 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--plant(X1)] : cn(1391)
1393 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--grain(X1)] : pm(12,1392)
1396 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_fox,a_bird)] : pm(6,1393)
1400 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--animal(a_fox),--animal(a_bird),--grain(X1),--eats(a_bird,X1)] : pm(1396,25)
1406 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--$true,--animal(a_bird),--grain(X1),--eats(a_bird,X1)] : rw(1400,28)
1407 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--$true,--$true,--grain(X1),--eats(a_bird,X1)] : rw(1406,29)
1408 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--grain(X1),--eats(a_bird,X1)] : cn(1407)
1426 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_bird,a_snail),--grain(a_grain)] : pm(320,1408)
1439 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_bird,a_snail),--$true] : rw(1426,6)
1440 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_bird,a_snail)] : cn(1439)
1444 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--bird(a_bird),--snail(a_snail)] : pm(1440,24)
1454 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--$true,--snail(a_snail)] : rw(1444,3)
1455 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--$true,--$true] : rw(1454,5)
1456 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox)] : cn(1455)
1473 : [++eats(a_wolf,a_fox),--wolf(a_wolf),--grain(a_grain)] : pm(1456,23)
1483 : [++eats(a_wolf,a_fox),--$true,--grain(a_grain)] : rw(1473,1)
1484 : [++eats(a_wolf,a_fox),--$true,--$true] : rw(1483,6)
1485 : [++eats(a_wolf,a_fox)] : cn(1484)
1499 : [--wolf(a_wolf),--fox(a_fox)] : pm(1485,22)
1508 : [--$true,--fox(a_fox)] : rw(1499,1)
1509 : [--$true,--$true] : rw(1508,2)
1510 : [] : cn(1509)
1511 : [] : 1510 : "proof"
Gandalf c-2.5
Tanel Tammet
Tallinn Technical University, Estonia
Safelogic AB, Sweden
tammet@cc.ttu.ee
1 [] -wolf(X) | animal(X).
2 [] -fox(X) | animal(X).
3 [] -bird(X) | animal(X).
5 [] -snail(X) | animal(X).
6 [] wolf(a_wolf).
7 [] fox(a_fox).
8 [] bird(a_bird).
10 [] snail(a_snail).
11 [] grain(a_grain).
12 [] -grain(X) | plant(X).
13 [] -much_smaller(X,Y) | -eats(X,Z) | eats(Y,U) | eats(Y,X) | -plant(Z) | -plant(U) | -animal(X) | -animal(Y).
15 [] much_smaller(X,Y) | -snail(X) | -bird(Y).
16 [] much_smaller(X,Y) | -bird(X) | -fox(Y).
17 [] much_smaller(X,Y) | -fox(X) | -wolf(Y).
18 [] -eats(X,Y) | -fox(Y) | -wolf(X).
19 [] -eats(X,Y) | -grain(Y) | -wolf(X).
21 [] -eats(X,Y) | -snail(Y) | -bird(X).
24 [] plant(snail_food_of(X)) | -snail(X).
25 [] eats(X,snail_food_of(X)) | -snail(X).
26 [] -eats(X,Y) | -eats(Y,Z) | -grain(Z) | -animal(X) | -animal(Y).
27 [hyper:1,6] animal(a_wolf).
31 [hyper:2,7] animal(a_fox).
34 [hyper:17,7,6] much_smaller(a_fox,a_wolf).
36 [hyper:3,8] animal(a_bird).
40 [hyper:16,8,7] much_smaller(a_bird,a_fox).
50 [hyper:5,10] animal(a_snail).
52 [hyper:15,10,8] much_smaller(a_snail,a_bird).
54 [hyper:24,10] plant(snail_food_of(a_snail)).
55 [hyper:25,10] eats(a_snail,snail_food_of(a_snail)).
56 [hyper:12,11] plant(a_grain).
104 [hyper:13,55,52,56,cut:54,cut:50,cut:36] eats(a_bird,a_grain) | eats(a_bird,a_snail).
148 [hyper:21,104,cut:10,cut:8] eats(a_bird,a_grain).
159 [hyper:13,148,40,56,cut:56,cut:36,cut:31] eats(a_fox,a_grain) | eats(a_fox,a_bird).
189 [hyper:26,159,148,cut:31,cut:36,cut:11] eats(a_fox,a_grain).
200 [hyper:13,189,34,56,cut:56,cut:31,cut:27] eats(a_wolf,a_grain) | eats(a_wolf,a_fox).
215 [hyper:18,200,cut:7,cut:6] eats(a_wolf,a_grain).
219 [hyper:19,215,cut:11,cut:6] contradiction
Otter 3.2
William McCune
Argonne National Laboratory,
USA
mccune@mcs.anl.gov
---------------- PROOF ----------------
1 [] animal(A)| -wolf(A).
2 [] animal(A)| -fox(A).
3 [] animal(A)| -bird(A).
5 [] animal(A)| -snail(A).
6 [] plant(A)| -grain(A).
7 [] eats(A,B)|eats(A,C)| -animal(A)| -plant(B)| -animal(C)| -plant(D)| -much_smaller(C,A)| -eats(C,D).
9 [] much_smaller(A,B)| -snail(A)| -bird(B).
10 [] much_smaller(A,B)| -bird(A)| -fox(B).
11 [] much_smaller(A,B)| -fox(A)| -wolf(B).
13 [] -wolf(A)| -grain(B)| -eats(A,B).
15 [] -bird(A)| -snail(B)| -eats(A,B).
18 [] plant(snail_food_of(A))| -snail(A).
19 [] eats(A,snail_food_of(A))| -snail(A).
20 [] -animal(A)| -animal(B)| -grain(C)| -eats(A,B)| -eats(B,C).
23 [factor,7.4.6] eats(A,B)|eats(A,C)| -animal(A)| -plant(B)| -animal(C)| -much_smaller(C,A)| -eats(C,B).
28 [] wolf(a_wolf).
29 [] fox(a_fox).
30 [] bird(a_bird).
32 [] snail(a_snail).
33 [] grain(a_grain).
34 [hyper,28,1] animal(a_wolf).
35 [hyper,29,11,28] much_smaller(a_fox,a_wolf).
36 [hyper,29,2] animal(a_fox).
37 [hyper,30,10,29] much_smaller(a_bird,a_fox).
38 [hyper,30,3] animal(a_bird).
44 [hyper,32,19] eats(a_snail,snail_food_of(a_snail)).
45 [hyper,32,18] plant(snail_food_of(a_snail)).
46 [hyper,32,9,30] much_smaller(a_snail,a_bird).
47 [hyper,32,5] animal(a_snail).
48 [hyper,33,6] plant(a_grain).
50 [hyper,44,7,38,48,47,45,46] eats(a_bird,a_grain)|eats(a_bird,a_snail).
55 [hyper,50,15,30,32] eats(a_bird,a_grain).
56 [hyper,55,23,36,48,38,37] eats(a_fox,a_grain)|eats(a_fox,a_bird).
62 [hyper,56,20,36,38,33,55] eats(a_fox,a_grain).
63 [hyper,62,23,34,48,36,35] eats(a_wolf,a_grain)|eats(a_wolf,a_fox).
67 [hyper,63,13,28,33] eats(a_wolf,a_fox).
69 [hyper,67,20,34,36,33,62] $F.
------------ end of proof -------------