# CASC-JC Entrants' Sample Solutions

## Bliksem 1.12

H. de Nivelle
Max Planck Institut für Informatik, Germany
nivelle@mpi-sb.mpg.de

Here is a list of the statistics maintained about each clause:

G
Generation of the clause, in the original, non-total proof.
W
Weight of the clause. Usually this is the number of symbols, not counting negation.
D
Depth of the clause. This is the maximal number of nested function symbols that occurs in the clause.
L
Length of the clause. This is the number of literals in the clause.
V
Number of variables in the clause.
M
Number of maximal (eligible for resolution/paramodulation) literals in the clause.
Here is a list of the inference rules:
resolution
Binary resolution.
eqswap
Eqswap changes the direction of an equality.
eqrefl
The eqrefl-rules unifies away a negative equality.
paramod
The paramodulation rule does equality replacement.
subsumption
This is the most complicated/confusing proof rule. It does three things at the same time: 1. It instantiates, 2. it permutes literals, and 3. it adds literals to a clause.
factor
The factoring rule merges unifiable literals.

### 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.62

S. Schulz
Institut für Informatik, Technische Universität München, Germany
schulz@informatik.tu-muenchen.de

Here is a list of all inferences:

er
Equality resolution: x!=a v x=x ==> a=a
pm
Paramodulation
ef
Equality factoring (BG94): x=a v b=c v x=d ==> a!=c v b=c vb=d
split
Clause splitting a la Vampire (non-deductive, but maintains unsatisfiability)
rw
Rewriting, can mean repeated application (but only of one equation in one direction
sr
Simplify-reflect: a=b and f(a)!=f(b) => empty clause
ar
AC-resolution: Delete literals that are trivial modulo the AC-theory induced by the named clauses
cn
Clause normalize, delete trivial and repeated literals

This 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.

```     0 : [++equal(a, b),++equal(a, c)] : initial
1 : [++equal(i(X1), i(X2))] : initial
2 : [++equal(b, c),--equal(X1, X2),--equal(X3, X4),--equal(c, d)] : initial
3 : [++equal(c, d),--equal(h(i(a)), h(i(e)))] : initial
4 : [++equal(f(X1,X2), f(X2,X1))] : initial
5 : [--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
6 : [--equal(k(X1,X1), k(a,b))]: ar(5, 0, 4)
7 : [++equal(c, b),++epred1_0,--equal(d, c),--equal(X1, X2)] : split(2)
8 : [++epred2_0,--equal(X3, X4)] : split(2)
9 : [--epred2_0,--epred1_0] : split(2)
10 : [++epred2_0] : er(8)
11 : [--\$true,--epred1_0] : rw(9,10)
12 : [++equal(c, b),++epred1_0,--equal(d, c)] : er(7)
13 : [++equal(d, c)] : sr(3,1)
14 : [++equal(c, b),++epred1_0,--equal(c, c)] : rw(12,13)
15 : [++equal(c, b),++epred1_0] : cn(14)
16 : [++equal(b, a),++epred1_0] : pm(15,0)
17 : [++epred1_0,--equal(k(a,a), k(X1,X1))] : pm(16,6)
18 : [++epred1_0] : er(17)
19 : [--\$true,--\$true] : rw(11,18)
20 : [] : cn(19)
21 : [] : 20 : {proof}
```

```     0 : [++subclass(X1,universal_class)] : initial
1 : [--member(y,universal_class)] : initial
2 : [++equal(unordered_pair(X1,X1), singleton(X1))] : initial
3 : [++equal(X1, null_class),++member(regular(X1),X1)] : initial
4 : [++member(X1,X2),--subclass(X3,X2),--member(X1,X3)] : initial
5 : [++equal(X1, X2),++equal(X1, X3),--member(X1,unordered_pair(X2,X3))] : initial
6 : [++equal(unordered_pair(singleton(X1),unordered_pair(X1,singleton(X2))), ordered_pair(X1,X2))] : initial
7 : [--equal(unordered_pair(singleton(x),unordered_pair(x,null_class)), ordered_pair(x,y))] : initial
8 : [++member(X2,universal_class),--member(X2,X1)] : pm(0,4)
9 : [++member(regular(X1),universal_class),++equal(X1, null_class)] : pm(3,8)
10 : [++equal(X1, X2),--member(X1,singleton(X2))] : pm(2,5)
11 : [++equal(regular(singleton(X1)), X1),++equal(singleton(X1), null_class)] : pm(3,10)
12 : [++member(X1,universal_class),++equal(singleton(X1), null_class)] : pm(11,9)
13 : [++equal(singleton(y), null_class)] : pm(12,1)
14 : [++equal(unordered_pair(singleton(X1),unordered_pair(X1,null_class)), ordered_pair(X1,y))] : pm(13,6)
15 : [--equal(ordered_pair(x,y), ordered_pair(x,y))] : rw(7,14)
16 : [] : cn(15)
17 : [] : 16 : {proof}
```

```     0 : [++equal(j(0,X1), X1)] : initial
1 : [++equal(j(X1,0), X1)] : initial
2 : [++equal(f(X1,X1), X1)] : initial
3 : [++equal(j(X1,g(X1)), 0)] : initial
4 : [++equal(j(X1,X2), j(X2,X1))] : initial
5 : [--equal(f(a,b), f(b,a))] : initial
6 : [++equal(j(j(X1,X2),X3), j(X1,j(X2,X3)))] : initial
7 : [++equal(f(X1,j(X2,X3)), j(f(X1,X2),f(X1,X3)))] : initial
8 : [++equal(f(j(X1,X2),X3), j(f(X1,X3),f(X2,X3)))] : initial
9 : [++equal(j(0,X2), j(X1,j(g(X1),X2)))] : pm(3,6)
10 : [++equal(j(X1,j(X2,X3)), j(X3,j(X1,X2)))] : pm(6,4)
11 : [++equal(X2, j(X1,j(g(X1),X2)))] : rw(9,0)
12 : [++equal(j(X1,0), g(g(X1)))] : pm(3,11)
13 : [++equal(X1, g(g(X1)))] : rw(12,1)
14 : [++equal(j(X1,f(X1,X2)), f(X1,j(X1,X2)))] : pm(2,7)
15 : [++equal(j(f(X1,X2),X1), f(X1,j(X2,X1)))] : pm(2,7)
16 : [++equal(j(X1,f(X1,X2)), f(X1,j(X2,X1)))] : rw(15,4)
17 : [++equal(f(X1,X1), j(X1,f(X1,0)))] : pm(1,14)
18 : [++equal(f(X1,0), j(X1,f(X1,g(X1))))] : pm(3,14)
19 : [++equal(X1, j(X1,f(X1,0)))] : rw(17,2)
20 : [++equal(j(X1,g(X1)), f(g(X1),0))] : pm(19,11)
21 : [++equal(0, f(g(X1),0))] : rw(20,3)
22 : [++equal(f(X1,0), 0)] : pm(13,21)
23 : [++equal(0, j(X1,f(X1,g(X1))))] : rw(18,22)
24 : [++equal(j(X1,0), f(g(X1),g(g(X1))))] : pm(23,11)
25 : [++equal(X1, f(g(X1),g(g(X1))))] : rw(24,1)
26 : [++equal(X1, f(g(X1),X1))] : rw(25,13)
27 : [++equal(j(X1,f(X2,X1)), f(j(X1,X2),X1))] : pm(2,8)
28 : [++equal(j(f(X1,X2),X2), f(j(X1,X2),X2))] : pm(2,8)
29 : [++equal(j(X2,f(X1,X2)), f(j(X1,X2),X2))] : rw(28,4)
30 : [++equal(f(X1,X1), j(X1,f(0,X1)))] : pm(1,27)
31 : [++equal(f(0,X1), j(X1,f(g(X1),X1)))] : pm(3,27)
32 : [++equal(X1, j(X1,f(0,X1)))] : rw(30,2)
33 : [++equal(f(0,X1), j(X1,X1))] : rw(31,26)
34 : [++equal(j(X1,g(X1)), f(0,g(X1)))] : pm(32,11)
35 : [++equal(0, f(0,g(X1)))] : rw(34,3)
36 : [++equal(f(0,X1), 0)] : pm(13,35)
37 : [++equal(0, j(X1,X1))] : rw(33,36)
38 : [++equal(j(0,X2), j(X1,j(X1,X2)))] : pm(37,6)
39 : [++equal(j(X1,0), j(X2,j(X1,X2)))] : pm(37,10)
40 : [++equal(X2, j(X1,j(X1,X2)))] : rw(38,0)
41 : [++equal(X1, j(X2,j(X1,X2)))] : rw(39,1)
42 : [++equal(f(X2,j(X2,X1)), j(j(X2,X1),f(X1,j(X2,X1))))] : pm(41,29)
43 : [++equal(j(X2,f(X2,X1)), j(j(X2,X1),f(X1,j(X2,X1))))] : rw(42,14)
44 : [++equal(j(X2,f(X2,X1)), j(j(X2,X1),j(X1,f(X1,X2))))] : rw(43,16)
45 : [++equal(j(X2,f(X2,X1)), j(X2,j(X1,j(X1,f(X1,X2)))))] : rw(44,6)
46 : [++equal(j(X2,f(X2,X1)), j(X2,f(X1,X2)))] : rw(45,40)
47 : [++equal(j(X1,j(X1,f(X2,X1))), j(X1,f(X1,j(X1,X2))))] : pm(27,46)
48 : [++equal(j(X1,j(X1,f(X2,X1))), j(X1,j(X1,f(X1,X2))))] : rw(47,14)
49 : [++equal(f(X2,X1), j(X1,j(X1,f(X1,X2))))] : rw(48,40)
50 : [++equal(f(X2,X1), f(X1,X2))] : rw(49,40)
51 : [--equal(f(a,b), f(a,b))] : rw(5,50)
52 : [] : cn(51)
53 : [] : 52 : {proof}
```

PUZ031-1

```     0 : [++wolf(a_wolf)] : initial
1 : [++fox(a_fox)] : initial
2 : [++bird(a_bird)] : initial
3 : [++snail(a_snail)] : initial
4 : [++grain(a_grain)] : initial
5 : [++animal(X1),--wolf(X1)] : initial
6 : [++animal(X1),--fox(X1)] : initial
7 : [++animal(X1),--bird(X1)] : initial
8 : [++animal(X1),--snail(X1)] : initial
9 : [++plant(X1),--grain(X1)] : initial
10 : [++plant(snail_food_of(X1)),--snail(X1)] : initial
11 : [++eats(X1,snail_food_of(X1)),--snail(X1)] : initial
12 : [++much_smaller(X1,X2),--snail(X1),--bird(X2)] : initial
13 : [++much_smaller(X1,X2),--bird(X1),--fox(X2)] : initial
14 : [++much_smaller(X1,X2),--fox(X1),--wolf(X2)] : initial
15 : [--wolf(X1),--fox(X2),--eats(X1,X2)] : initial
16 : [--wolf(X1),--grain(X2),--eats(X1,X2)] : initial
17 : [--bird(X1),--snail(X2),--eats(X1,X2)] : initial
18 : [--animal(X1),--animal(X2),--grain(X3),--eats(X1,X2),--eats(X2,X3)] : initial
19 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--much_smaller(X3,X1),--eats(X3,X4)] : initial
20 : [++animal(a_wolf)] : pm(0,5)
21 : [++animal(a_fox)] : pm(1,6)
22 : [++animal(a_bird)] : pm(2,7)
23 : [++animal(a_snail)] : pm(3,8)
24 : [++eats(X2,X3),++eats(X2,X1),--animal(X2),--plant(X3),--animal(X1),--plant(snail_food_of(X1)),--much_smaller(X1,X2),--snail(X1)] : pm(11,19)
25 : [++eats(X2,X3),++eats(X2,X1),--animal(X2),--plant(X3),--animal(X1),--plant(snail_food_of(X1)),--snail(X1),--bird(X2)] : pm(12,24)
26 : [++eats(X1,X3),--bird(X1),--snail(X2),--animal(X1),--plant(X3),--animal(X2),--plant(snail_food_of(X2))] : pm(25,17)
27 : [++eats(X2,X3),--bird(X2),--snail(X1),--animal(X2),--plant(X3),--animal(X1)] : pm(10,26)
28 : [++eats(X1,X2),--bird(X1),--animal(X1),--plant(X2),--animal(a_snail)] : pm(3,27)
29 : [++eats(X1,X2),--bird(X1),--animal(X1),--plant(X2),--\$true] : rw(28,23)
30 : [++eats(X1,X2),--bird(X1),--animal(X1),--plant(X2)] : cn(29)
31 : [--animal(X3),--animal(X1),--grain(X2),--eats(X3,X1),--bird(X1),--plant(X2)] : pm(30,18)
32 : [++eats(X3,X4),++eats(X3,X1),--animal(X3),--plant(X4),--animal(X1),--plant(X2),--much_smaller(X1,X3),--bird(X1)] : pm(30,19)
33 : [++eats(X3,X1),++eats(X3,X4),++epred1_0,--bird(X1),--much_smaller(X1,X3),--animal(X1),--plant(X4),--animal(X3)] : split(32)
34 : [++epred2_0,--plant(X2)] : split(32)
35 : [--epred2_0,--epred1_0] : split(32)
36 : [++epred2_0,--grain(X1)] : pm(9,34)
37 : [++epred2_0] : pm(4,36)
38 : [--\$true,--epred1_0] : rw(35,37)
39 : [++eats(X2,X1),++eats(X2,X3),++epred1_0,--bird(X1),--animal(X1),--plant(X3),--animal(X2),--fox(X2)] : pm(13,33)
40 : [--animal(X2),--animal(X3),--grain(X1),--eats(X2,X3),--bird(X3)] : pm(9,31)
41 : [++eats(X1,X4),++epred1_0,--animal(X1),--animal(X2),--grain(X3),--bird(X2),--plant(X4),--fox(X1)] : pm(39,40)
42 : [++eats(X1,X2),++epred1_0,--animal(X1),--animal(a_bird),--grain(X3),--plant(X2),--fox(X1)] : pm(2,41)
43 : [++eats(X1,X2),++epred1_0,--animal(X1),--\$true,--grain(X3),--plant(X2),--fox(X1)] : rw(42,22)
44 : [++eats(X1,X2),++epred1_0,--animal(X1),--grain(X3),--plant(X2),--fox(X1)] : cn(43)
45 : [++eats(X1,X2),++epred1_0,--animal(X1),--plant(X2),--fox(X1)] : pm(4,44)
46 : [++eats(X3,X4),++eats(X3,X1),++epred1_0,--animal(X3),--plant(X4),--animal(X1),--plant(X2),--much_smaller(X1,X3),--fox(X1)] : pm(45,19)
47 : [++eats(X2,X3),++eats(X2,X1),++epred1_0,--animal(X2),--plant(X3),--animal(X1),--plant(X4),--fox(X1),--wolf(X2)] : pm(14,46)
48 : [++eats(X1,X3),++epred1_0,--wolf(X1),--fox(X2),--animal(X1),--plant(X3),--animal(X2),--plant(X4)] : pm(47,15)
49 : [++eats(X1,X2),++epred1_0,--wolf(X1),--animal(X1),--plant(X2),--animal(a_fox),--plant(X3)] : pm(1,48)
50 : [++eats(X1,X2),++epred1_0,--wolf(X1),--animal(X1),--plant(X2),--\$true,--plant(X3)] : rw(49,21)
51 : [++eats(X1,X2),++epred1_0,--wolf(X1),--animal(X1),--plant(X2),--plant(X3)] : cn(50)
52 : [++epred1_0,--wolf(X1),--grain(X2),--animal(X1),--plant(X2),--plant(X3)] : pm(51,16)
53 : [++epred1_0,--grain(X1),--animal(a_wolf),--plant(X1),--plant(X2)] : pm(0,52)
54 : [++epred1_0,--grain(X1),--\$true,--plant(X1),--plant(X2)] : rw(53,20)
55 : [++epred1_0,--grain(X1),--plant(X1),--plant(X2)] : cn(54)
56 : [++epred1_0,--grain(X1),--plant(X2)] : pm(9,55)
57 : [++epred1_0,--plant(X1)] : pm(4,56)
58 : [++epred1_0,--grain(X1)] : pm(9,57)
59 : [++epred1_0] : pm(4,58)
60 : [--\$true,--\$true] : rw(38,59)
61 : [] : cn(60)
62 : [] : 61 : {proof}
```

## Otter-MACE 3.2-2.0

W. McCune
Argonne National Laboratory, USA
mccune@mcs.anl.gov

### Human Readable Proof

```---------------- PROOF ----------------

1 [] -Wolf(x)|animal(x).
2 [] -Fox(x)|animal(x).
3 [] -Bird(x)|animal(x).
5 [] -Snail(x)|animal(x).
6 [] -Grain(x)|plant(x).
7 [] -animal(x)| -plant(y)|eats(x,y)| -animal(z)| -Smaller(z,x)| -plant(u)| -eats(z,u)|eats(x,z).
9 [] -Snail(x)| -Bird(y)|Smaller(x,y).
10 [] -Bird(x)| -Fox(y)|Smaller(x,y).
11 [] -Fox(x)| -Wolf(y)|Smaller(x,y).
15 [] -Snail(x)|plant(\$f2(x)).
16 [] -Snail(x)|eats(x,\$f2(x)).
17 [] -Wolf(x)| -Fox(y)| -eats(x,y).
18 [] -Wolf(x)| -Grain(y)| -eats(x,y).
19 [] -Bird(x)| -Snail(y)| -eats(x,y).
20 [] -animal(x)| -animal(y)| -eats(x,y)|Grain(\$f3(x,y)).
21 [] -animal(x)| -animal(y)| -eats(x,y)| -eats(y,\$f3(x,y)).
23 [factor,7.2.6] -animal(x)| -plant(y)|eats(x,y)| -animal(z)| -Smaller(z,x)| -eats(z,y)|eats(x,z).
29 [] Wolf(\$c1).
30 [] Fox(\$c2).
31 [] Bird(\$c3).
33 [] Snail(\$c5).
34 [] Grain(\$c6).
35 [hyper,1,29.1] animal(\$c1).
36 [hyper,11,30.1,29.1] Smaller(\$c2,\$c1).
37 [hyper,2,30.1] animal(\$c2).
38 [hyper,10,31.1,30.1] Smaller(\$c3,\$c2).
39 [hyper,3,31.1] animal(\$c3).
45 [hyper,16,33.1] eats(\$c5,\$f2(\$c5)).
46 [hyper,15,33.1] plant(\$f2(\$c5)).
47 [hyper,9,33.1,31.1] Smaller(\$c5,\$c3).
48 [hyper,5,33.1] animal(\$c5).
49 [hyper,6,34.1] plant(\$c6).
52 [hyper,7,39.1,49.1,48.1,47.1,46.1,45.1] eats(\$c3,\$c6)|eats(\$c3,\$c5).
61 [hyper,19,31.1,33.1,52.2] eats(\$c3,\$c6).
62 [hyper,23,37.1,49.1,39.1,38.1,61.1] eats(\$c2,\$c6)|eats(\$c2,\$c3).
68 [hyper,23,35.1,49.1,37.1,36.1,62.1] eats(\$c2,\$c3)|eats(\$c1,\$c6)|eats(\$c1,\$c2).
86 [hyper,18,29.1,34.1,68.2] eats(\$c2,\$c3)|eats(\$c1,\$c2).
91 [hyper,17,29.1,30.1,86.2] eats(\$c2,\$c3).
92 [hyper,20,37.1,39.1,91.1] Grain(\$f3(\$c2,\$c3)).
93 [hyper,6,92.1] plant(\$f3(\$c2,\$c3)).
94 [hyper,7,39.1,93.1,48.1,47.1,46.1,45.1] eats(\$c3,\$f3(\$c2,\$c3))|eats(\$c3,\$c5).
95 [hyper,21,37.1,39.1,91.1,94.1] eats(\$c3,\$c5).
99 [hyper,19,31.1,33.1,95.1] \$F.

------------ end of proof -------------
```

### Machine Readable Proof

```;; BEGINNING OF PROOF OBJECT
(
(1 (input) (or (not (Wolf v0)) (animal v0)) (1))
(2 (input) (or (not (Fox v0)) (animal v0)) (2))
(3 (input) (or (not (Bird v0)) (animal v0)) (3))
(4 (input) (or (not (Snail v0)) (animal v0)) (5))
(5 (input) (or (not (Grain v0)) (plant v0)) (6))
(6 (input) (or (not (animal v0)) (or (not (plant v1)) (or (eats v0 v1) (or (not (animal v2)) (or (not (Smaller v2 v0)) (or (not (plant v3)) (or (not (eats v2 v3)) (eats v0 v2)))))))) (7))
(7 (input) (or (not (Snail v0)) (or (not (Bird v1)) (Smaller v0 v1))) (9))
(8 (input) (or (not (Bird v0)) (or (not (Fox v1)) (Smaller v0 v1))) (10))
(9 (input) (or (not (Fox v0)) (or (not (Wolf v1)) (Smaller v0 v1))) (11))
(10 (input) (or (not (Snail v0)) (plant (\$f2 v0))) (15))
(11 (input) (or (not (Snail v0)) (eats v0 (\$f2 v0))) (16))
(12 (input) (or (not (Wolf v0)) (or (not (Fox v1)) (not (eats v0 v1)))) (17))
(13 (input) (or (not (Wolf v0)) (or (not (Grain v1)) (not (eats v0 v1)))) (18))
(14 (input) (or (not (Bird v0)) (or (not (Snail v1)) (not (eats v0 v1)))) (19))
(15 (input) (or (not (animal v0)) (or (not (animal v1)) (or (not (eats v0 v1)) (Grain (\$f3 v0 v1))))) (20))
(16 (input) (or (not (animal v0)) (or (not (animal v1)) (or (not (eats v0 v1)) (not (eats v1 (\$f3 v0 v1)))))) (21))
(17 (instantiate 6 ((v1 . v3))) (or (not (animal v0)) (or (not (plant v3)) (or (eats v0 v3) (or (not (animal v2)) (or (not (Smaller v2 v0)) (or (not (plant v3)) (or (not (eats v2 v3)) (eats v0 v2)))))))) NIL)
(18 (propositional 17) (or (not (animal v0)) (or (not (plant v3)) (or (eats v0 v3) (or (not (animal v2)) (or (not (Smaller v2 v0)) (or (not (eats v2 v3)) (eats v0 v2))))))) NIL)
(19 (instantiate 18 ((v3 . v1))) (or (not (animal v0)) (or (not (plant v1)) (or (eats v0 v1) (or (not (animal v2)) (or (not (Smaller v2 v0)) (or (not (eats v2 v1)) (eats v0 v2))))))) (23))
(20 (input) (Wolf (\$c1)) (29))
(21 (input) (Fox (\$c2)) (30))
(22 (input) (Bird (\$c3)) (31))
(23 (input) (Snail (\$c5)) (33))
(24 (input) (Grain (\$c6)) (34))
(25 (instantiate 1 ((v0 . (\$c1)))) (or (not (Wolf (\$c1))) (animal (\$c1))) NIL)
(26 (resolve 25 (1) 20 ()) (animal (\$c1)) (35))
(27 (instantiate 9 ((v0 . (\$c2)))) (or (not (Fox (\$c2))) (or (not (Wolf v1)) (Smaller (\$c2) v1))) NIL)
(28 (resolve 27 (1) 21 ()) (or (not (Wolf v1)) (Smaller (\$c2) v1)) NIL)
(29 (instantiate 28 ((v1 . v0))) (or (not (Wolf v0)) (Smaller (\$c2) v0)) NIL)
(30 (instantiate 29 ((v0 . (\$c1)))) (or (not (Wolf (\$c1))) (Smaller (\$c2) (\$c1))) NIL)
(31 (resolve 30 (1) 20 ()) (Smaller (\$c2) (\$c1)) (36))
(32 (instantiate 2 ((v0 . (\$c2)))) (or (not (Fox (\$c2))) (animal (\$c2))) NIL)
(33 (resolve 32 (1) 21 ()) (animal (\$c2)) (37))
(34 (instantiate 8 ((v0 . (\$c3)))) (or (not (Bird (\$c3))) (or (not (Fox v1)) (Smaller (\$c3) v1))) NIL)
(35 (resolve 34 (1) 22 ()) (or (not (Fox v1)) (Smaller (\$c3) v1)) NIL)
(36 (instantiate 35 ((v1 . v0))) (or (not (Fox v0)) (Smaller (\$c3) v0)) NIL)
(37 (instantiate 36 ((v0 . (\$c2)))) (or (not (Fox (\$c2))) (Smaller (\$c3) (\$c2))) NIL)
(38 (resolve 37 (1) 21 ()) (Smaller (\$c3) (\$c2)) (38))
(39 (instantiate 3 ((v0 . (\$c3)))) (or (not (Bird (\$c3))) (animal (\$c3))) NIL)
(40 (resolve 39 (1) 22 ()) (animal (\$c3)) (39))
(41 (instantiate 11 ((v0 . (\$c5)))) (or (not (Snail (\$c5))) (eats (\$c5) (\$f2 (\$c5)))) NIL)
(42 (resolve 41 (1) 23 ()) (eats (\$c5) (\$f2 (\$c5))) (45))
(43 (instantiate 10 ((v0 . (\$c5)))) (or (not (Snail (\$c5))) (plant (\$f2 (\$c5)))) NIL)
(44 (resolve 43 (1) 23 ()) (plant (\$f2 (\$c5))) (46))
(45 (instantiate 7 ((v0 . (\$c5)))) (or (not (Snail (\$c5))) (or (not (Bird v1)) (Smaller (\$c5) v1))) NIL)
(46 (resolve 45 (1) 23 ()) (or (not (Bird v1)) (Smaller (\$c5) v1)) NIL)
(47 (instantiate 46 ((v1 . v0))) (or (not (Bird v0)) (Smaller (\$c5) v0)) NIL)
(48 (instantiate 47 ((v0 . (\$c3)))) (or (not (Bird (\$c3))) (Smaller (\$c5) (\$c3))) NIL)
(49 (resolve 48 (1) 22 ()) (Smaller (\$c5) (\$c3)) (47))
(50 (instantiate 4 ((v0 . (\$c5)))) (or (not (Snail (\$c5))) (animal (\$c5))) NIL)
(51 (resolve 50 (1) 23 ()) (animal (\$c5)) (48))
(52 (instantiate 5 ((v0 . (\$c6)))) (or (not (Grain (\$c6))) (plant (\$c6))) NIL)
(53 (resolve 52 (1) 24 ()) (plant (\$c6)) (49))
(54 (instantiate 6 ((v0 . (\$c3)))) (or (not (animal (\$c3))) (or (not (plant v1)) (or (eats (\$c3) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c3))) (or (not (plant v3)) (or (not (eats v2 v3)) (eats (\$c3) v2)))))))) NIL)
(55 (resolve 54 (1) 40 ()) (or (not (plant v1)) (or (eats (\$c3) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c3))) (or (not (plant v3)) (or (not (eats v2 v3)) (eats (\$c3) v2))))))) NIL)
(56 (instantiate 55 ((v1 . v0)(v2 . v1)(v3 . v2))) (or (not (plant v0)) (or (eats (\$c3) v0) (or (not (animal v1)) (or (not (Smaller v1 (\$c3))) (or (not (plant v2)) (or (not (eats v1 v2)) (eats (\$c3) v1))))))) NIL)
(57 (instantiate 56 ((v0 . (\$c6)))) (or (not (plant (\$c6))) (or (eats (\$c3) (\$c6)) (or (not (animal v1)) (or (not (Smaller v1 (\$c3))) (or (not (plant v2)) (or (not (eats v1 v2)) (eats (\$c3) v1))))))) NIL)
(58 (resolve 57 (1) 53 ()) (or (eats (\$c3) (\$c6)) (or (not (animal v1)) (or (not (Smaller v1 (\$c3))) (or (not (plant v2)) (or (not (eats v1 v2)) (eats (\$c3) v1)))))) NIL)
(59 (instantiate 58 ((v1 . v0)(v2 . v1))) (or (eats (\$c3) (\$c6)) (or (not (animal v0)) (or (not (Smaller v0 (\$c3))) (or (not (plant v1)) (or (not (eats v0 v1)) (eats (\$c3) v0)))))) NIL)
(60 (instantiate 59 ((v0 . (\$c5)))) (or (eats (\$c3) (\$c6)) (or (not (animal (\$c5))) (or (not (Smaller (\$c5) (\$c3))) (or (not (plant v1)) (or (not (eats (\$c5) v1)) (eats (\$c3) (\$c5))))))) NIL)
(61 (resolve 60 (2 1) 51 ()) (or (eats (\$c3) (\$c6)) (or (not (Smaller (\$c5) (\$c3))) (or (not (plant v1)) (or (not (eats (\$c5) v1)) (eats (\$c3) (\$c5)))))) NIL)
(62 (instantiate 61 ((v1 . v0))) (or (eats (\$c3) (\$c6)) (or (not (Smaller (\$c5) (\$c3))) (or (not (plant v0)) (or (not (eats (\$c5) v0)) (eats (\$c3) (\$c5)))))) NIL)
(63 (resolve 62 (2 1) 49 ()) (or (eats (\$c3) (\$c6)) (or (not (plant v0)) (or (not (eats (\$c5) v0)) (eats (\$c3) (\$c5))))) NIL)
(64 (instantiate 63 ((v0 . (\$f2 (\$c5))))) (or (eats (\$c3) (\$c6)) (or (not (plant (\$f2 (\$c5)))) (or (not (eats (\$c5) (\$f2 (\$c5)))) (eats (\$c3) (\$c5))))) NIL)
(65 (resolve 64 (2 1) 44 ()) (or (eats (\$c3) (\$c6)) (or (not (eats (\$c5) (\$f2 (\$c5)))) (eats (\$c3) (\$c5)))) NIL)
(66 (resolve 65 (2 1) 42 ()) (or (eats (\$c3) (\$c6)) (eats (\$c3) (\$c5))) (52))
(67 (instantiate 14 ((v0 . (\$c3)))) (or (not (Bird (\$c3))) (or (not (Snail v1)) (not (eats (\$c3) v1)))) NIL)
(68 (resolve 67 (1) 22 ()) (or (not (Snail v1)) (not (eats (\$c3) v1))) NIL)
(69 (instantiate 68 ((v1 . v0))) (or (not (Snail v0)) (not (eats (\$c3) v0))) NIL)
(70 (instantiate 69 ((v0 . (\$c5)))) (or (not (Snail (\$c5))) (not (eats (\$c3) (\$c5)))) NIL)
(71 (resolve 70 (1) 23 ()) (not (eats (\$c3) (\$c5))) NIL)
(72 (resolve 71 () 66 (2)) (eats (\$c3) (\$c6)) (61))
(73 (instantiate 19 ((v0 . (\$c2)))) (or (not (animal (\$c2))) (or (not (plant v1)) (or (eats (\$c2) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c2))) (or (not (eats v2 v1)) (eats (\$c2) v2))))))) NIL)
(74 (resolve 73 (1) 33 ()) (or (not (plant v1)) (or (eats (\$c2) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c2))) (or (not (eats v2 v1)) (eats (\$c2) v2)))))) NIL)
(75 (instantiate 74 ((v1 . v0)(v2 . v1))) (or (not (plant v0)) (or (eats (\$c2) v0) (or (not (animal v1)) (or (not (Smaller v1 (\$c2))) (or (not (eats v1 v0)) (eats (\$c2) v1)))))) NIL)
(76 (instantiate 75 ((v0 . (\$c6)))) (or (not (plant (\$c6))) (or (eats (\$c2) (\$c6)) (or (not (animal v1)) (or (not (Smaller v1 (\$c2))) (or (not (eats v1 (\$c6))) (eats (\$c2) v1)))))) NIL)
(77 (resolve 76 (1) 53 ()) (or (eats (\$c2) (\$c6)) (or (not (animal v1)) (or (not (Smaller v1 (\$c2))) (or (not (eats v1 (\$c6))) (eats (\$c2) v1))))) NIL)
(78 (instantiate 77 ((v1 . v0))) (or (eats (\$c2) (\$c6)) (or (not (animal v0)) (or (not (Smaller v0 (\$c2))) (or (not (eats v0 (\$c6))) (eats (\$c2) v0))))) NIL)
(79 (instantiate 78 ((v0 . (\$c3)))) (or (eats (\$c2) (\$c6)) (or (not (animal (\$c3))) (or (not (Smaller (\$c3) (\$c2))) (or (not (eats (\$c3) (\$c6))) (eats (\$c2) (\$c3)))))) NIL)
(80 (resolve 79 (2 1) 40 ()) (or (eats (\$c2) (\$c6)) (or (not (Smaller (\$c3) (\$c2))) (or (not (eats (\$c3) (\$c6))) (eats (\$c2) (\$c3))))) NIL)
(81 (resolve 80 (2 1) 38 ()) (or (eats (\$c2) (\$c6)) (or (not (eats (\$c3) (\$c6))) (eats (\$c2) (\$c3)))) NIL)
(82 (resolve 81 (2 1) 72 ()) (or (eats (\$c2) (\$c6)) (eats (\$c2) (\$c3))) (62))
(83 (instantiate 19 ((v0 . (\$c1)))) (or (not (animal (\$c1))) (or (not (plant v1)) (or (eats (\$c1) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c1))) (or (not (eats v2 v1)) (eats (\$c1) v2))))))) NIL)
(84 (resolve 83 (1) 26 ()) (or (not (plant v1)) (or (eats (\$c1) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c1))) (or (not (eats v2 v1)) (eats (\$c1) v2)))))) NIL)
(85 (instantiate 84 ((v1 . v0)(v2 . v1))) (or (not (plant v0)) (or (eats (\$c1) v0) (or (not (animal v1)) (or (not (Smaller v1 (\$c1))) (or (not (eats v1 v0)) (eats (\$c1) v1)))))) NIL)
(86 (instantiate 85 ((v0 . (\$c6)))) (or (not (plant (\$c6))) (or (eats (\$c1) (\$c6)) (or (not (animal v1)) (or (not (Smaller v1 (\$c1))) (or (not (eats v1 (\$c6))) (eats (\$c1) v1)))))) NIL)
(87 (resolve 86 (1) 53 ()) (or (eats (\$c1) (\$c6)) (or (not (animal v1)) (or (not (Smaller v1 (\$c1))) (or (not (eats v1 (\$c6))) (eats (\$c1) v1))))) NIL)
(88 (instantiate 87 ((v1 . v0))) (or (eats (\$c1) (\$c6)) (or (not (animal v0)) (or (not (Smaller v0 (\$c1))) (or (not (eats v0 (\$c6))) (eats (\$c1) v0))))) NIL)
(89 (instantiate 88 ((v0 . (\$c2)))) (or (eats (\$c1) (\$c6)) (or (not (animal (\$c2))) (or (not (Smaller (\$c2) (\$c1))) (or (not (eats (\$c2) (\$c6))) (eats (\$c1) (\$c2)))))) NIL)
(90 (resolve 89 (2 1) 33 ()) (or (eats (\$c1) (\$c6)) (or (not (Smaller (\$c2) (\$c1))) (or (not (eats (\$c2) (\$c6))) (eats (\$c1) (\$c2))))) NIL)
(91 (resolve 90 (2 1) 31 ()) (or (eats (\$c1) (\$c6)) (or (not (eats (\$c2) (\$c6))) (eats (\$c1) (\$c2)))) NIL)
(92 (resolve 91 (2 1) 82 (1)) (or (eats (\$c1) (\$c6)) (or (eats (\$c1) (\$c2)) (eats (\$c2) (\$c3)))) (68))
(93 (instantiate 13 ((v0 . (\$c1)))) (or (not (Wolf (\$c1))) (or (not (Grain v1)) (not (eats (\$c1) v1)))) NIL)
(94 (resolve 93 (1) 20 ()) (or (not (Grain v1)) (not (eats (\$c1) v1))) NIL)
(95 (instantiate 94 ((v1 . v0))) (or (not (Grain v0)) (not (eats (\$c1) v0))) NIL)
(96 (instantiate 95 ((v0 . (\$c6)))) (or (not (Grain (\$c6))) (not (eats (\$c1) (\$c6)))) NIL)
(97 (resolve 96 (1) 24 ()) (not (eats (\$c1) (\$c6))) NIL)
(98 (resolve 97 () 92 (1)) (or (eats (\$c1) (\$c2)) (eats (\$c2) (\$c3))) (86))
(99 (instantiate 12 ((v0 . (\$c1)))) (or (not (Wolf (\$c1))) (or (not (Fox v1)) (not (eats (\$c1) v1)))) NIL)
(100 (resolve 99 (1) 20 ()) (or (not (Fox v1)) (not (eats (\$c1) v1))) NIL)
(101 (instantiate 100 ((v1 . v0))) (or (not (Fox v0)) (not (eats (\$c1) v0))) NIL)
(102 (instantiate 101 ((v0 . (\$c2)))) (or (not (Fox (\$c2))) (not (eats (\$c1) (\$c2)))) NIL)
(103 (resolve 102 (1) 21 ()) (not (eats (\$c1) (\$c2))) NIL)
(104 (resolve 103 () 98 (1)) (eats (\$c2) (\$c3)) (91))
(105 (instantiate 15 ((v0 . (\$c2)))) (or (not (animal (\$c2))) (or (not (animal v1)) (or (not (eats (\$c2) v1)) (Grain (\$f3 (\$c2) v1))))) NIL)
(106 (resolve 105 (1) 33 ()) (or (not (animal v1)) (or (not (eats (\$c2) v1)) (Grain (\$f3 (\$c2) v1)))) NIL)
(107 (instantiate 106 ((v1 . v0))) (or (not (animal v0)) (or (not (eats (\$c2) v0)) (Grain (\$f3 (\$c2) v0)))) NIL)
(108 (instantiate 107 ((v0 . (\$c3)))) (or (not (animal (\$c3))) (or (not (eats (\$c2) (\$c3))) (Grain (\$f3 (\$c2) (\$c3))))) NIL)
(109 (resolve 108 (1) 40 ()) (or (not (eats (\$c2) (\$c3))) (Grain (\$f3 (\$c2) (\$c3)))) NIL)
(110 (resolve 109 (1) 104 ()) (Grain (\$f3 (\$c2) (\$c3))) (92))
(111 (instantiate 5 ((v0 . (\$f3 (\$c2) (\$c3))))) (or (not (Grain (\$f3 (\$c2) (\$c3)))) (plant (\$f3 (\$c2) (\$c3)))) NIL)
(112 (resolve 111 (1) 110 ()) (plant (\$f3 (\$c2) (\$c3))) (93))
(113 (instantiate 6 ((v0 . (\$c3)))) (or (not (animal (\$c3))) (or (not (plant v1)) (or (eats (\$c3) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c3))) (or (not (plant v3)) (or (not (eats v2 v3)) (eats (\$c3) v2)))))))) NIL)
(114 (resolve 113 (1) 40 ()) (or (not (plant v1)) (or (eats (\$c3) v1) (or (not (animal v2)) (or (not (Smaller v2 (\$c3))) (or (not (plant v3)) (or (not (eats v2 v3)) (eats (\$c3) v2))))))) NIL)
(115 (instantiate 114 ((v1 . v0)(v2 . v1)(v3 . v2))) (or (not (plant v0)) (or (eats (\$c3) v0) (or (not (animal v1)) (or (not (Smaller v1 (\$c3))) (or (not (plant v2)) (or (not (eats v1 v2)) (eats (\$c3) v1))))))) NIL)
(116 (instantiate 115 ((v0 . (\$f3 (\$c2) (\$c3))))) (or (not (plant (\$f3 (\$c2) (\$c3)))) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (animal v1)) (or (not (Smaller v1 (\$c3))) (or (not (plant v2)) (or (not (eats v1 v2)) (eats (\$c3) v1))))))) NIL)
(117 (resolve 116 (1) 112 ()) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (animal v1)) (or (not (Smaller v1 (\$c3))) (or (not (plant v2)) (or (not (eats v1 v2)) (eats (\$c3) v1)))))) NIL)
(118 (instantiate 117 ((v1 . v0)(v2 . v1))) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (animal v0)) (or (not (Smaller v0 (\$c3))) (or (not (plant v1)) (or (not (eats v0 v1)) (eats (\$c3) v0)))))) NIL)
(119 (instantiate 118 ((v0 . (\$c5)))) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (animal (\$c5))) (or (not (Smaller (\$c5) (\$c3))) (or (not (plant v1)) (or (not (eats (\$c5) v1)) (eats (\$c3) (\$c5))))))) NIL)
(120 (resolve 119 (2 1) 51 ()) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (Smaller (\$c5) (\$c3))) (or (not (plant v1)) (or (not (eats (\$c5) v1)) (eats (\$c3) (\$c5)))))) NIL)
(121 (instantiate 120 ((v1 . v0))) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (Smaller (\$c5) (\$c3))) (or (not (plant v0)) (or (not (eats (\$c5) v0)) (eats (\$c3) (\$c5)))))) NIL)
(122 (resolve 121 (2 1) 49 ()) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (plant v0)) (or (not (eats (\$c5) v0)) (eats (\$c3) (\$c5))))) NIL)
(123 (instantiate 122 ((v0 . (\$f2 (\$c5))))) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (plant (\$f2 (\$c5)))) (or (not (eats (\$c5) (\$f2 (\$c5)))) (eats (\$c3) (\$c5))))) NIL)
(124 (resolve 123 (2 1) 44 ()) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (or (not (eats (\$c5) (\$f2 (\$c5)))) (eats (\$c3) (\$c5)))) NIL)
(125 (resolve 124 (2 1) 42 ()) (or (eats (\$c3) (\$f3 (\$c2) (\$c3))) (eats (\$c3) (\$c5))) (94))
(126 (instantiate 16 ((v0 . (\$c2)))) (or (not (animal (\$c2))) (or (not (animal v1)) (or (not (eats (\$c2) v1)) (not (eats v1 (\$f3 (\$c2) v1)))))) NIL)
(127 (resolve 126 (1) 33 ()) (or (not (animal v1)) (or (not (eats (\$c2) v1)) (not (eats v1 (\$f3 (\$c2) v1))))) NIL)
(128 (instantiate 127 ((v1 . v0))) (or (not (animal v0)) (or (not (eats (\$c2) v0)) (not (eats v0 (\$f3 (\$c2) v0))))) NIL)
(129 (instantiate 128 ((v0 . (\$c3)))) (or (not (animal (\$c3))) (or (not (eats (\$c2) (\$c3))) (not (eats (\$c3) (\$f3 (\$c2) (\$c3)))))) NIL)
(130 (resolve 129 (1) 40 ()) (or (not (eats (\$c2) (\$c3))) (not (eats (\$c3) (\$f3 (\$c2) (\$c3))))) NIL)
(131 (resolve 130 (1) 104 ()) (not (eats (\$c3) (\$f3 (\$c2) (\$c3)))) NIL)
(132 (resolve 131 () 125 (1)) (eats (\$c3) (\$c5)) (95))
(133 (instantiate 14 ((v0 . (\$c3)))) (or (not (Bird (\$c3))) (or (not (Snail v1)) (not (eats (\$c3) v1)))) NIL)
(134 (resolve 133 (1) 22 ()) (or (not (Snail v1)) (not (eats (\$c3) v1))) NIL)
(135 (instantiate 134 ((v1 . v0))) (or (not (Snail v0)) (not (eats (\$c3) v0))) NIL)
(136 (instantiate 135 ((v0 . (\$c5)))) (or (not (Snail (\$c5))) (not (eats (\$c3) (\$c5)))) NIL)
(137 (resolve 136 (1) 23 ()) (not (eats (\$c3) (\$c5))) NIL)
(138 (resolve 137 () 132 ()) false (99))
)
;; END OF PROOF OBJECT
```

## SCOTT 6

K. Hodgson, J. Slaney
Australian National University, Australia
{kahlil,jks}@arp.anu.edu.au
```---------------- PROOF ----------------

0: (wt=8) 1 []  (0xbxb) -sum(A,B,C)|sum(B,A,C).
0: (wt=8) 2 []  (0xbxb) -product(A,B,C)|product(B,A,C).
0: (wt=20) 3 []  (0xbxb) -product(A,B,C)| -product(A,D,E)| -sum(B,D,F)| -product(A,F,G)|sum(C,E,G).
0: (wt=20) 4 []  (0xbxb) -product(A,B,C)| -product(A,D,E)| -sum(B,D,F)| -sum(C,E,G)|product(A,F,G).
0: (wt=20) 5 []  (0xbxb) -product(A,B,C)| -product(D,B,E)| -sum(A,D,F)| -product(F,B,G)|sum(C,E,G).
0: (wt=20) 6 []  (0xbxb) -product(A,B,C)| -product(D,B,E)| -sum(A,D,F)| -sum(C,E,G)|product(F,B,G).
0: (wt=20) 7 []  (0xoxo) -sum(A,B,C)| -sum(A,D,E)| -product(B,D,F)| -sum(A,F,G)|product(C,E,G).
0: (wt=20) 9 []  (0xoxo) -sum(A,B,C)| -sum(D,B,E)| -product(A,D,F)| -sum(F,B,G)|product(C,E,G).
0: (wt=20) 10 []  (0xoxo) -sum(A,B,C)| -sum(D,B,E)| -product(A,D,F)| -product(C,E,G)|sum(F,B,G).
0: (wt=11) 11 []  (0x0xo) -sum(A,B,C)| -sum(A,B,D)|equal(C,D).
0: (wt=11) 12 []  (0x0xo) -product(A,B,C)| -product(A,B,D)|equal(C,D).
1: (wt=4) 14 []  (0x1x1) sum(x,y,x_plus_y).
3: (wt=6) 15 []  (0x1x1) product(inverse(x),inverse(y),x_inverse_times_y_inverse).
11: (wt=4) 16 []  (0xcxc) -equal(inverse(x_plus_y),x_inverse_times_y_inverse).
12: (wt=6) 18 []  (0x1x1) sum(A,B,add(A,B)).
17: (wt=6) 19 []  (0x1x1) product(A,B,multiply(A,B)).
7: (wt=4) 20 []  (0xbx0) sum(additive_identity,A,A).
8: (wt=4) 21 []  (0xbx0) sum(A,additive_identity,A).
9: (wt=4) 22 []  (0x1x1) product(multiplicative_identity,A,A).
10: (wt=4) 23 []  (0xbxb) product(A,multiplicative_identity,A).
13: (wt=5) 24 []  (0x1x0) sum(inverse(A),A,multiplicative_identity).
15: (wt=5) 25 []  (0xbx0) sum(A,inverse(A),multiplicative_identity).
4: (wt=5) 26 []  (0x1x1) product(inverse(A),A,additive_identity).
5: (wt=5) 27 []  (0xbxb) product(A,inverse(A),additive_identity).
21: (wt=5) 29,28 []  (0x1x1) equal(inverse(inverse(A)),A).
2: (wt=4) 30 [hyper,14,1]  (0xbxb) sum(y,x,x_plus_y).
6: (wt=6) 31 [hyper,15,2]  (0xbxb) product(inverse(y),inverse(x),x_inverse_times_y_inverse).
18: (wt=5) 35 [ur,16,12,23]  (0x0x1) -product(x_inverse_times_y_inverse,multiplicative_identity,inverse(x_plus_y)).
19: (wt=5) 45,44 [hyper,18,11,30,flip.1]  (0x1x1) equal(add(y,x),x_plus_y).
23: (wt=5) 51,50 [hyper,18,11,14,flip.1]  (0x1x1) equal(add(x,y),x_plus_y).
28: (wt=6) 57 [hyper,18,9,20,18,23,demod,49]  (0x1x0) product(A,add(multiplicative_identity,A),A).
43: (wt=7) 58 [hyper,18,9,18,30,26,demod,49]  (0x1x1) product(add(inverse(y),x),x_plus_y,x).
56: (wt=6) 59 [hyper,18,9,18,30,22,demod,45]  (0x1x1) product(add(multiplicative_identity,x),x_plus_y,x_plus_y).
36: (wt=6) 61 [hyper,18,9,18,20,22,demod,49]  (0x1x0) product(add(multiplicative_identity,A),A,A).
47: (wt=7) 68 [hyper,18,9,18,14,26,demod,49]  (0x1x0) product(add(inverse(x),y),x_plus_y,y).
27: (wt=6) 129 [hyper,18,1]  (0x1x1) sum(A,B,add(B,A)).
29: (wt=4) 131,130 [hyper,24,11,21]  (0x1x1) equal(inverse(additive_identity),multiplicative_identity).
58: (wt=6) 133,132 [hyper,24,11,18]  (0x1x0) equal(add(inverse(A),A),multiplicative_identity).
64: (wt=6) 138 [hyper,24,9,24,18,23]  (0x1x0) product(multiplicative_identity,add(multiplicative_identity,A),multiplicative_identity).
57: (wt=5) 183,182 [hyper,19,12,23,flip.1]  (0x0x1) equal(multiply(A,multiplicative_identity),A).
60: (wt=5) 185,184 [hyper,19,12,22,flip.1]  (0x0x1) equal(multiply(multiplicative_identity,A),A).
281: (wt=9) 200 [hyper,19,10,24,18,19,demod,185]  (0x1x1) sum(multiply(inverse(A),B),A,add(B,A)).
316: (wt=10) 352 [hyper,19,6,27,18,20]  (0x1x0) product(add(A,B),inverse(A),multiply(B,inverse(A))).
0: (wt=8) 494 [hyper,19,3,23,23,18]  (0x1x1) sum(A,A,multiply(A,add(multiplicative_identity,multiplicative_identity))).
140: (wt=6) 529 [hyper,19,2]  (0x1x1) product(A,B,multiply(B,A)).
141: (wt=10) 537 [ur,35,4,19,19,24]  (0x0x1) -sum(multiply(x_inverse_times_y_inverse,inverse(A)),multiply(x_inverse_times_y_inverse,A),inverse(x_plus_y)).
0: (wt=5) 800,799 [hyper,57,12,22]  (0x1x0) equal(add(multiplicative_identity,multiplicative_identity),multiplicative_identity).
32: (wt=4) 946 [back_demod,494,demod,800,183]  (0x1x0) sum(A,A,A).
62: (wt=6) 2172 [hyper,58,5,58,19,21]  (0x1x1) sum(x,multiply(additive_identity,x_plus_y),x).
79: (wt=6) 2487 [hyper,68,5,68,19,21]  (0x1x0) sum(y,multiply(additive_identity,x_plus_y),y).
69: (wt=5) 4098,4097 [hyper,138,12,22]  (0x0x0) equal(add(multiplicative_identity,A),multiplicative_identity).
65: (wt=4) 4114 [back_demod,3524,demod,4098,4098,185]  (0x1x1) sum(x_plus_y,x,x_plus_y).
77: (wt=4) 4118 [back_demod,3508,demod,4098,4098,185]  (0x1x1) sum(y,x_plus_y,x_plus_y).
109: (wt=6) 4137 [back_demod,1731,demod,4098,4098,185]  (0x1x0) sum(inverse(y),x_inverse_times_y_inverse,inverse(y)).
112: (wt=6) 4138 [back_demod,1729,demod,4098,4098,185]  (0x1x0) sum(A,multiply(B,A),A).
124: (wt=6) 4139 [back_demod,1722,demod,4098,4098,185]  (0x1x0) sum(inverse(x),x_inverse_times_y_inverse,inverse(x)).
80: (wt=4) 4221 [hyper,4114,9,20,19,129,demod,3884]  (0x1x1) product(x,x_plus_y,x).
82: (wt=4) 4970 [hyper,2487,7,129,4118,19,demod,49]  (0x1x0) product(y,x_plus_y,y).
104: (wt=5) 5022,5021 [hyper,4221,12,19]  (0x1x1) equal(multiply(x,x_plus_y),x).
85: (wt=4) 5139 [hyper,4970,2]  (0x1x0) product(x_plus_y,y,y).
0: (wt=7) 5351 [hyper,5139,9,18,129,25,demod,133]  (0x1x0) product(add(x_plus_y,inverse(y)),multiplicative_identity,multiplicative_identity).
148: (wt=6) 6832 [hyper,4138,7,18,946,19]  (0x1x0) product(add(A,B),A,A).
155: (wt=4) 13774 [hyper,6403,7,129,129,529,demod,47,47]  (0x1x1) product(y,x_inverse_times_y_inverse,additive_identity).
188: (wt=4) 18441 [hyper,7880,6,13774,529,129,demod,51]  (0x1x1) product(x_plus_y,x_inverse_times_y_inverse,additive_identity).
350: (wt=5) 19488,19487 [hyper,18441,12,529]  (0x1x1) equal(multiply(x_inverse_times_y_inverse,x_plus_y),additive_identity).
424: (wt=5) 55542 [hyper,255,3,6832,18,338,demod,5022,5022,31128,45]  (0x1x0) sum(inverse(x),x_plus_y,multiplicative_identity).
0: (wt=6) 58785,58784 [hyper,55542,11,129]  (0x1x0) equal(add(x_plus_y,inverse(x)),multiplicative_identity).
0: (wt=7) 59151 [back_demod,38911,demod,58785,4098]  (0x0x0) -product(add(x_plus_y,inverse(y)),multiplicative_identity,multiplicative_identity).
0: (wt=0) 59152 [binary,59151.1,5351.1]  (0x0x0) \$F.

------------ end of proof -------------
---------------- PROOF ----------------

0: (wt=4) 1 []  (0xxx0) theorem(A)| -axiom(A).
0: (wt=8) 2 []  (0xxxb) theorem(A)| -theorem(implies(B,A))| -theorem(B).
26: (wt=10) 3 []  (0xxxc) -theorem(implies(implies(p,implies(p,q)),implies(p,q))).
1: (wt=6) 5 []  (0xxx1) axiom(implies(or(A,A),A)).
3: (wt=6) 6 []  (0xxx1) axiom(implies(A,or(B,A))).
6: (wt=8) 7 []  (0xxx1) axiom(implies(or(A,B),or(B,A))).
7: (wt=12) 8 []  (0xxxb) axiom(implies(or(A,or(B,C)),or(B,or(A,C)))).
4: (wt=12) 9 []  (0xxx1) axiom(implies(implies(A,B),implies(or(C,A),or(C,B)))).
0: (wt=0) 10 []  (0xxx0) equal(implies(A,B),or(not(A),B)).
5: (wt=8) 12,11 [copy,10,flip.1]  (0xxxb) equal(or(not(A),B),implies(A,B)).
2: (wt=6) 13 [hyper,5,1]  (0xxxb) theorem(implies(or(A,A),A)).
13: (wt=6) 14 [hyper,6,1]  (0xxx1) theorem(implies(A,or(B,A))).
18: (wt=12) 15 [hyper,9,1]  (0xxx1) theorem(implies(implies(A,B),implies(or(C,A),or(C,B)))).
9: (wt=6) 17 [para_from,11.1.1,6.1.1.2]  (0xxx1) axiom(implies(A,implies(B,A))).
15: (wt=8) 20 [hyper,7,1]  (0xxx0) theorem(implies(or(A,B),or(B,A))).
8: (wt=9) 22 [para_into,7.1.1.2,11.1.1]  (0xxxb) axiom(implies(or(A,not(B)),implies(B,A))).
31: (wt=12) 23 [hyper,8,1]  (0xxx1) theorem(implies(or(A,or(B,C)),or(B,or(A,C)))).
10: (wt=12) 24 [para_into,8.1.1.1.2,11.1.1,demod,12]  (0xxx1) axiom(implies(or(A,implies(B,C)),implies(B,or(A,C)))).
20: (wt=9) 26 [hyper,22,1]  (0xxx0) theorem(implies(or(A,not(B)),implies(B,A))).
11: (wt=6) 28 [hyper,17,1]  (0xxxb) theorem(implies(A,implies(B,A))).
19: (wt=12) 29 [hyper,24,1]  (0xxxb) theorem(implies(or(A,implies(B,C)),implies(B,or(A,C)))).
25: (wt=9) 41 [para_into,20.1.1.1,11.1.1]  (0xxx0) theorem(implies(implies(A,B),or(B,not(A)))).
161: (wt=10) 47 [hyper,15,2,28]  (0xxx1) theorem(implies(or(A,B),or(A,implies(C,B)))).
23: (wt=10) 50 [hyper,15,2,13]  (0xxx1) theorem(implies(or(A,or(B,B)),or(A,B))).
221: (wt=12) 55 [para_into,29.1.1.1,11.1.1,demod,12]  (0xxx1) theorem(implies(implies(A,implies(B,C)),implies(B,implies(A,C)))).
86: (wt=13) 57 [hyper,26,2,15]  (0xxx0) theorem(implies(or(A,or(B,not(C))),or(A,implies(C,B)))).
27: (wt=10) 69 [para_into,50.1.1.1,11.1.1,demod,12]  (0xxx1) theorem(implies(implies(A,or(B,B)),implies(A,B))).
431: (wt=20) 103 [ur,3,2,13]  (0xxx1) -theorem(or(implies(implies(p,implies(p,q)),implies(p,q)),implies(implies(p,implies(p,q)),implies(p,q)))).
35: (wt=4) 110 [hyper,69,2,14]  (0xxx1) theorem(implies(A,A)).
39: (wt=5) 174 [hyper,110,2,41]  (0xxx1) theorem(or(A,not(A))).
89: (wt=7) 186 [hyper,174,2,14]  (0xxx1) theorem(or(A,or(B,not(B)))).
117: (wt=7) 938 [hyper,186,2,23]  (0xxx1) theorem(or(A,or(B,not(A)))).
118: (wt=6) 1735 [hyper,938,2,57]  (0xxx0) theorem(or(A,implies(A,B))).
208: (wt=8) 3437 [hyper,47,2,1735]  (0xxx0) theorem(or(A,implies(B,implies(A,C)))).
228: (wt=8) 6139 [hyper,3437,2,20]  (0xxx0) theorem(or(implies(A,implies(B,C)),B)).
333: (wt=8) 7106 [hyper,55,2,110]  (0xxx1) theorem(implies(A,implies(implies(A,B),B))).
0: (wt=12) 17192 [hyper,7106,2,15]  (0xxx1) theorem(implies(or(A,B),or(A,implies(implies(B,C),C)))).
0: (wt=28) 29455 [ur,103,2,6139]  (0xxx0) -theorem(implies(or(implies(A,implies(B,C)),B),or(implies(implies(p,implies(p,q)),implies(p,q)),implies(implies(p,implies(p,q)),implies(p,q))))).
0: (wt=0) 29456 [binary,29455.1,17192.1]  (0xxx0) \$F.

------------ end of proof -------------

---------------- PROOF ----------------

0: (wt=0) 1 []  (00) -equal(apply(strong_fixed_point,fixed_pt),apply(fixed_pt,apply(strong_fixed_point,fixed_pt))).
2: (wt=9) 2 [copy,1,flip.1]  (0b) -equal(apply(fixed_pt,apply(strong_fixed_point,fixed_pt)),apply(strong_fixed_point,fixed_pt)).
4: (wt=15) 4 []  (01) equal(apply(apply(apply(s,A),B),C),apply(apply(A,C),apply(B,C))).
1: (wt=7) 6,5 []  (00) equal(apply(apply(k,A),B),A).
0: (wt=0) 7 []  (00) equal(strong_fixed_point,apply(apply(s,apply(k,apply(apply(s,apply(apply(s,k),k)),apply(apply(s,k),k)))),apply(apply(s,apply(k,apply(apply(s,s),apply(s,k)))),apply(apply(s,apply(k,s)),k)))).
5: (wt=39) 8 [copy,7,flip.1]  (00) equal(apply(apply(s,apply(k,apply(apply(s,apply(apply(s,k),k)),apply(apply(s,k),k)))),apply(apply(s,apply(k,apply(apply(s,s),apply(s,k)))),apply(apply(s,apply(k,s)),k))),strong_fixed_point).
6: (wt=15) 10 [copy,4,flip.1]  (01) equal(apply(apply(A,B),apply(C,B)),apply(apply(apply(s,A),C),B)).
0: (wt=39) 11 [para_from,8.1.1,4.1.1.1,demod,6,flip.1]  (00) equal(apply(apply(apply(s,apply(apply(s,k),k)),apply(apply(s,k),k)),apply(apply(apply(s,apply(k,apply(apply(s,s),apply(s,k)))),apply(apply(s,apply(k,s)),k)),A)),apply(strong_fixed_point,A)).
15: (wt=15) 17,16 [para_into,10.1.1.1,5.1.1,flip.1]  (01) equal(apply(apply(apply(s,apply(k,A)),B),C),apply(A,apply(B,C))).
7: (wt=9) 24,23 [para_into,10.1.1,5.1.1,flip.1]  (00) equal(apply(apply(apply(s,k),A),B),B).
10: (wt=31) 27 [back_demod,11,demod,17,17]  (00) equal(apply(apply(apply(s,apply(apply(s,k),k)),apply(apply(s,k),k)),apply(apply(apply(s,s),apply(s,k)),apply(s,apply(k,A)))),apply(strong_fixed_point,A)).
16: (wt=35) 61 [para_into,27.1.1.2,4.1.1]  (00) equal(apply(apply(apply(s,apply(apply(s,k),k)),apply(apply(s,k),k)),apply(apply(s,apply(s,apply(k,A))),apply(apply(s,k),apply(s,apply(k,A))))),apply(strong_fixed_point,A)).
28: (wt=39) 156,155 [para_into,61.1.1,4.1.1,demod,24,24]  (00) equal(apply(apply(apply(s,apply(s,apply(k,A))),apply(apply(s,k),apply(s,apply(k,A)))),apply(apply(s,apply(s,apply(k,A))),apply(apply(s,k),apply(s,apply(k,A))))),apply(strong_fixed_point,A)).
0: (wt=9) 1244 [para_into,155.1.1,4.1.1,demod,24,17,156]  (00) equal(apply(A,apply(strong_fixed_point,A)),apply(strong_fixed_point,A)).
0: (wt=0) 1246 [binary,1244.1,2.1]  (00) \$F.

------------ end of proof -------------
```

## Vampire 2.0 and Vampire CASC-JC

A. Riazanov, A. Voronkov
Computer Science Department, The University of Manchester
{riazanoa,voronkov}@cs.man.ac.uk

### How to Read Vampire Proofs

A proof is a collection of clauses. The clauses are printed as follows:
```<clause> : <number>"." <clause body> <auxilliary info> "["<background list>"]"
% nonempty clause

: <number>'. #'  <auxilliary info> '['<background list>']'
% empty clause

<clause body> : <literals>
% all literals are selected
: <literals>1 | <literals>2
% <literals>1 are selected
% <literals>2 are nonselected

<background list> : <flags><ancestors>

<ancestors> :        % empty (must be an input clause)
: <number> ("," <number>)*

<flags> : (<flag> )+

<flag> : "in"      % input clause
: "pp"      % clause obtained by preprocessing
: "br"      % generated by binary resolution
: "hr"      % generated by hyperresolution
: "fs"      % generated by forward superposition
: "bs"      % generated by backward superposition
: "er"      % generated by equality resolution
: "ef"      % generated by equality factoring
: "fd"      % simplified by forward demodulation
: "bd"      % simplified by backward demodulation
: "ers"     % simplified by equality resolution
: "fsr"     % simplified by forward subsumption resolution
: "sp"      % splitting was used
: "rea"     % "reanimated" passive clause (selected in Discount algorithm)
: "nm"      % the clause is a part of a name introduction in
% splitting, or obtained by preprocessing from such
% a clause
: "ns"      % negative selection was used (does not mean that
% all the selected literals are negative)

<literals> :  <literal> [" \/ " <literals>]

<literal> : <standard literal>
: <equational literal>
: <splitting literal>

<standard literal> : ["~"]<atom> % "~" is for negation
<atom> : <predicate symbol> % propositional variable
: <predicate symbol><arguments>
<equational literal> : <term> = <term>  % unoriented positive equality
: <term> != <term> % unoriented negative equality
: <term> == <term>  % oriented positive equality
: <term> !== <term> % oriented negative equality

<splitting literal> : "["<predicate symbol>"]"

<term> : <variable>
: <constant>
: <function symbol><arguments>
<variable> : "X"<number>
<arguments> : "("<term> (","<term>)* ")"
```

### Tabulated Proofs

When Vampire is called with the options --proof and --tab , it writes the proof in Prolog syntax into the tabulation file. Every proof step is a Prolog fact of the form
```vproof(<JobId>,[<clause body> <clause number> <ancestors> <flags>]).
```
<JobId> is an atom, uniquely identifying the job that produced the proof. <ancestors> is a list of ancestor numbers. <flags> is a list of flags, every flag is an atom. <clause body> is a list of literals.
```<literal> : "++"<atom>      % unselected positive literal
: "+++"<atom>     % selected positive literal
: "--"<atom>      % unselected negative literal
: "---"<atom>     % selected negative literal

<atom> : <term>
: "("<term>" = "<term>")"   % unoriented equality
: "("<term>" => "<term>")"  % oriented equality

<term> : <function symbol>["("<term>(","<term>)*")"]
: <variable>
```
<function symbol> is a Prolog alphanumeric identifier. <variable> is a quoted Prolog atom "'X""'" To process such proofs with Prolog, '++','+++','--' and '---' should be declared prefix operators and '=>' infix operator of appropriate precedence.

### Human Readable Proof

Problem SET497-6.p
```%======================== Proof: =========================
% 1. member(z,z) /3/3/0/ 0pe [in ]
% 2. member(z,diagonalise(element_relation)) /4/4/0/ 0pe [in ]
% 120. X0=null_class \/ intersection(X0,regular(X0))=null_class /9/9/0/ 2pe [in ]
% 121. X0=null_class \/ member(regular(X0),X0) /7/7/0/ 1pe [in ]
% 144. union(X0,singleton(X0))=successor(X0) /7/7/0/ 1pe [in ]
% 161. complement(intersection(complement(X0),complement(X1)))=union(X0,X1) /10/10/0/ 1pe [in ]
% 162. member(X0,complement(X1)) \/ ~member(X0,universal_class) \/ member(X0,X1) /10/10/0/ 0pe [in ]
% 163. ~member(X0,complement(X1)) \/ ~member(X0,X1) /7/7/0/ 0pe [in ]
% 164. ~member(X0,X2) \/ ~member(X0,X1) \/ member(X0,intersection(X1,X2)) /11/11/0/ 0pe [in ]
% 165. ~member(X0,intersection(X1,X2)) \/ member(X0,X2) /8/8/0/ 0pe [in ]
% 166. ~member(X0,intersection(X1,X2)) \/ member(X0,X1) /8/8/0/ 0pe [in ]
% 175. unordered_pair(X0,X0)=singleton(X0) /6/6/0/ 1pe [in ]
% 178. ~member(X0,universal_class) \/ member(X0,unordered_pair(X0,X1)) /8/8/0/ 0pe [in ]
% 179. X0=X1 \/ ~member(X0,unordered_pair(X1,X2)) \/ X0=X2 /11/11/0/ 2pe [in ]
% 183. subclass(X0,universal_class) /3/3/0/ 0pe [in ]
% 186. ~member(X2,X0) \/ ~subclass(X0,X1) \/ member(X2,X1) /9/9/0/ 0pe [in ]
% 190. member(z,z) /3/3/0/ 0pe [pp 1]
% 191. member(z,diagonalise(element_relation)) /4/4/0/ 0pe [pp 2]
% 237. intersection(X0,regular(X0))==null_class | X0=null_class /9/9/5/ 2pe [pp 120]
% 238. member(regular(X0),X0) | X0=null_class /7/7/3/ 1pe [pp 121]
% 261. union(X0,singleton(X0))==successor(X0) /7/7/3/ 1pe [pp 144]
% 278. complement(intersection(complement(X0),complement(X1)))==union(X0,X1) /10/10/4/ 1pe [pp 161]% 279. ~member(X0,universal_class) | member(X0,complement(X1)) \/ member(X0,X1) /10/10/7/ 0pe [pp 162]
% 280. ~member(X0,complement(X1)) | ~member(X0,X1) /7/7/3/ 0pe [pp 163]
% 281. ~member(X0,X1) | ~member(X0,X2) \/ member(X0,intersection(X1,X2)) /11/11/8/ 0pe [pp ns 164]
% 282. ~member(X0,intersection(X1,X2)) | member(X0,X2) /8/8/3/ 0pe [pp 165]
% 283. ~member(X0,intersection(X1,X2)) | member(X0,X1) /8/8/3/ 0pe [pp 166]
% 292. unordered_pair(X0,X0)==singleton(X0) /6/6/3/ 1pe [pp 175]
% 295. ~member(X0,universal_class) | member(X0,unordered_pair(X0,X1)) /8/8/5/ 0pe [pp 178]
% 296. ~member(X0,unordered_pair(X1,X2)) | X0=X1 \/ X0=X2 /11/11/6/ 2pe [pp 179]
% 299. subclass(X0,universal_class) /3/3/0/ 0pe [pp 183]
% 302. ~subclass(X0,X1) | ~member(X2,X0) \/ member(X2,X1) /9/9/6/ 0pe [pp 186]
% 303. member(z,z) /3/3/0/ 0pe [pp 190]
% 304. member(z,diagonalise(element_relation)) /4/4/0/ 0pe [pp 191]
% 350. intersection(X0,regular(X0))==null_class | X0=null_class /9/9/5/ 2pe [pp 237]
% 351. member(regular(X0),X0) | X0=null_class /7/7/3/ 1pe [pp 238]
% 374. union(X0,singleton(X0))==successor(X0) /7/7/3/ 1pe [pp 261]
% 391. complement(intersection(complement(X0),complement(X1)))==union(X0,X1) /10/10/4/ 1pe [pp 278]% 392. ~member(X0,universal_class) | member(X0,complement(X1)) \/ member(X0,X1) /10/10/7/ 0pe [pp 279]
% 393. ~member(X0,complement(X1)) | ~member(X0,X1) /7/7/3/ 0pe [pp 280]
% 394. ~member(X0,X1) | ~member(X0,X2) \/ member(X0,intersection(X2,X1)) /11/11/8/ 0pe [pp ns 281]
% 395. ~member(X0,intersection(X1,X2)) | member(X0,X2) /8/8/3/ 0pe [pp 282]
% 396. ~member(X0,intersection(X1,X2)) | member(X0,X1) /8/8/3/ 0pe [pp 283]
% 405. unordered_pair(X0,X0)==singleton(X0) /6/6/3/ 1pe [pp 292]
% 408. ~member(X0,universal_class) | member(X0,unordered_pair(X0,X1)) /8/8/5/ 0pe [pp 295]
% 409. ~member(X0,unordered_pair(X1,X2)) | X0=X1 \/ X0=X2 /11/11/6/ 2pe [pp 296]
% 412. subclass(X0,universal_class) /3/3/0/ 0pe [pp 299]
% 415. ~subclass(X0,X1) | ~member(X2,X0) \/ member(X2,X1) /9/9/6/ 0pe [pp 302]
% 424. member(z,z) /3/3/0/ 0pe [pp 303]
% 425. member(z,diagonalise(element_relation)) /4/4/0/ 0pe [pp 304]
% 457. intersection(X0,regular(X0))==null_class | X0=null_class /9/9/5/ 2pe [pp 350]
% 458. member(regular(X0),X0) | X0=null_class /7/7/3/ 1pe [pp 351]
% 474. union(X0,singleton(X0))==successor(X0) /7/7/3/ 1pe [pp 374]
% 491. complement(intersection(complement(X0),complement(X1)))==union(X0,X1) /10/10/4/ 1pe [pp 391]% 492. ~member(X0,universal_class) | member(X0,complement(X1)) \/ member(X0,X1) /10/10/7/ 0pe [pp 392]
% 493. ~member(X0,complement(X1)) | ~member(X0,X1) /7/7/3/ 0pe [pp 393]
% 494. ~member(X0,X1) | ~member(X0,X2) \/ member(X0,intersection(X1,X2)) /11/11/8/ 0pe [pp ns 394]
% 495. ~member(X0,intersection(X1,X2)) | member(X0,X2) /8/8/3/ 0pe [pp 395]
% 496. ~member(X0,intersection(X1,X2)) | member(X0,X1) /8/8/3/ 0pe [pp 396]
% 505. unordered_pair(X0,X0)==singleton(X0) /6/6/3/ 1pe [pp 405]
% 508. ~member(X0,universal_class) | member(X0,unordered_pair(X0,X1)) /8/8/5/ 0pe [pp 408]
% 509. ~member(X0,unordered_pair(X1,X2)) | X0=X1 \/ X0=X2 /11/11/6/ 2pe [pp 409]
% 512. subclass(X0,universal_class) /3/3/0/ 0pe [pp 412]
% 515. ~subclass(X0,X1) | ~member(X2,X0) \/ member(X2,X1) /9/9/6/ 0pe [pp 415]
% 526. member(z,z) /3/3/0/ 0pe [pp 424]
% 527. member(z,diagonalise(element_relation)) /4/4/0/ 0pe [pp 425]
% 556. intersection(X0,regular(X0))==null_class | X0=null_class /9/9/5/ 2pe [pp 457]
% 557. member(regular(X0),X0) | X0=null_class /7/7/3/ 1pe [pp 458]
% 573. union(X0,singleton(X0))==successor(X0) /7/7/3/ 1pe [pp 474]
% 590. complement(intersection(complement(X0),complement(X1)))==union(X0,X1) /10/10/4/ 1pe [pp 491]% 591. ~member(X0,universal_class) | member(X0,complement(X1)) \/ member(X0,X1) /10/10/7/ 0pe [pp 492]
% 592. ~member(X0,complement(X1)) | ~member(X0,X1) /7/7/3/ 0pe [pp 493]
% 593. ~member(X0,X1) | ~member(X0,X2) \/ member(X0,intersection(X2,X1)) /11/11/8/ 0pe [pp ns 494]
% 594. ~member(X0,intersection(X1,X2)) | member(X0,X2) /8/8/3/ 0pe [pp 495]
% 595. ~member(X0,intersection(X1,X2)) | member(X0,X1) /8/8/3/ 0pe [pp 496]
% 604. unordered_pair(X0,X0)==singleton(X0) /6/6/3/ 1pe [pp 505]
% 607. ~member(X0,universal_class) | member(X0,unordered_pair(X0,X1)) /8/8/5/ 0pe [pp 508]
% 608. ~member(X0,unordered_pair(X1,X2)) | X0=X1 \/ X0=X2 /11/11/6/ 2pe [pp 509]
% 611. subclass(X0,universal_class) /3/3/0/ 0pe [pp 512]
% 614. ~subclass(X0,X1) | ~member(X2,X0) \/ member(X2,X1) /9/9/6/ 0pe [pp 515]
% * 620. member(z,z) /3/3/0/ 0pe vip [pp 526]
% * 621. member(z,diagonalise(element_relation)) /4/4/0/ 0pe vip [pp 527]
% * 650. intersection(X0,regular(X0))==null_class | X0=null_class /9/9/5/ 2pe vip [pp 556]
% * 651. member(regular(X0),X0) | X0=null_class /7/7/3/ 1pe vip [pp 557]
% * 667. union(X0,singleton(X0))==successor(X0) /7/7/3/ 1pe [pp 573]
% * 685. complement(intersection(complement(X0),complement(X1)))==union(X0,X1) /10/10/4/ 1pe [pp 590]
% * 687. ~member(X0,universal_class) | member(X0,complement(X1)) \/ member(X0,X1) /10/10/7/ 0pe [pp 591]
% * 688. ~member(X0,complement(X1)) | ~member(X0,X1) /7/7/3/ 0pe vip [pp 592]
% * 689. ~member(X0,X1) | ~member(X0,X2) \/ member(X0,intersection(X1,X2)) /11/11/8/ 0pe [pp ns 593]
% * 690. ~member(X0,intersection(X1,X2)) | member(X0,X2) /8/8/3/ 0pe vip [pp 594]
% * 691. ~member(X0,intersection(X1,X2)) | member(X0,X1) /8/8/3/ 0pe vip [pp 595]
% * 700. unordered_pair(X0,X0)==singleton(X0) /6/6/3/ 1pe [pp 604]
% * 703. ~member(X0,universal_class) | member(X0,unordered_pair(X0,X1)) /8/8/5/ 0pe [pp 607]
% * 704. ~member(X0,unordered_pair(X1,X2)) | X0=X1 \/ X0=X2 /11/11/6/ 2pe [pp 608]
% * 707. subclass(X0,universal_class) /3/3/0/ 0pe vip [pp 611]
% * 710. ~subclass(X0,X1) | ~member(X2,X0) \/ member(X2,X1) /9/9/6/ 0pe [pp 614]
% * 753. ~member(regular(complement(X0)),X0) | complement(X0)==null_class /9/9/4/ 1pe [br 651,688]
% * 757. ~member(z,X0) | member(z,intersection(z,X0)) /8/8/5/ 0pe [br 620,689]
% * 758. ~member(z,X0) | member(z,intersection(diagonalise(element_relation),X0)) /9/9/6/ 0pe [br 621,689]
% * 761. member(regular(intersection(X0,X1)),X1) | intersection(X0,X1)==null_class /11/11/5/ 1pe [br 651,690]
% * 768. member(regular(intersection(X0,X1)),X0) | intersection(X0,X1)==null_class /11/11/5/ 1pe [br 651,691]
% * 798. ~member(X0,singleton(X1)) | X0=X1 /7/7/3/ 1pe vip [fs 700,704]
% * 822. ~member(X0,X1) | member(X0,universal_class) /6/6/3/ 0pe [br 707,710]
% * 999. member(z,universal_class) /3/3/0/ 0pe vip [br 620,822]
% * 1000. member(regular(X0),universal_class) | X0=null_class /7/7/3/ 1pe vip [br 651,822]
% * 1005. member(z,unordered_pair(z,X0)) /5/5/0/ 0pe vip [br 703,999]
% * 1007. member(z,complement(X0)) | member(z,X0) /7/7/3/ 0pe vip [br 687,999]
% * 1083. member(z,singleton(z)) /4/4/0/ 0pe vip [fs 700,1005]
% * 1085. ~member(z,X0) | member(z,intersection(singleton(z),X0)) /9/9/6/ 0pe [br 689,1083]
% * 1568. regular(singleton(X0))==X0 | singleton(X0)==null_class /9/9/6/ 2pe vip [br 651,798]
% * 1669. member(z,intersection(complement(X0),complement(X1))) | member(z,union(X0,X1)) /12/12/5/ 0pe [fs 685,1007]
% * 2598. complement(universal_class)==null_class /4/4/2/ 1pe vip [br 1000,753]
% * 2619. ~member(X0,null_class) /3/3/0/ 0pe vip [bs fsr 822,688,2598]
% * 2730. member(z,intersection(diagonalise(element_relation),singleton(z))) /7/7/0/ 0pe vip [br 1083,758]
% * 2771. ~member(z,X0) | member(z,intersection(intersection(diagonalise(element_relation),singleton(z)),X0)) /12/12/9/ 0pe [br 689,2730]
% * 2824. intersection(X0,null_class)==null_class /5/5/2/ 1pe vip [br 2619,761]
% * 2971. intersection(null_class,X0)==null_class /5/5/2/ 1pe vip [br 2619,768]
% * 20420. member(z,intersection(singleton(z),z)) /6/6/0/ 0pe vip [br 620,1085]
% * 23048. intersection(singleton(X0),X0)==null_class | singleton(X0)==null_class /10/10/6/ 2pe [bs 650,1568]
% * 110195. member(z,union(X0,X1)) | member(z,complement(X0)) /9/9/4/ 0pe [br 691,1669]
% * 110426. member(z,complement(X0)) | member(z,successor(X0)) /8/8/4/ 0pe [fs 667,110195]
% * 110427. ~member(z,X0) | member(z,successor(X0)) /7/7/4/ 0pe [br 688,110426]
% * 110491. member(z,successor(z)) /4/4/0/ 0pe vip [br 620,110427]
% * 110884. ~member(z,X0) | member(z,intersection(successor(z),X0)) /9/9/6/ 0pe [br 689,110491]
% * 120575. member(z,intersection(successor(z),intersection(singleton(z),z))) /9/9/0/ 0pe [br 20420,110884]
% * 144335. member(z,intersection(intersection(diagonalise(element_relation),singleton(z)),universal_class)) /9/9/0/ 0pe vip [br 999,2771]
% 144354. member(z,intersection(z,intersection(intersection(diagonalise(element_relation),singleton(z)),universal_class))) /11/11/0/ 0pe [br 757,144335]
% 144460. singleton(z)==null_class /4/4/2/ 1pe vip [bs fd fsr 2619,2824,120575,23048]
% 144462. # /1/0/0/ 0pe vip [fd bd fsr 2619,2824,2971,2824,144354,144460]
%==================  End of proof. ========================
```

### Machine Readable Proof

Problem SET497-6.p
```vproof('9520011456592226',[[+++member(z,z)],1,[],[in]]).
vproof('9520011456592226',[[+++member(z,diagonalise(element_relation))],2,[],[in]]).
vproof('9520011456592226',[[+++('X0' = null_class),+++(intersection('X0',regular('X0')) = null_class)],120,[],[in]]).
vproof('9520011456592226',[[+++('X0' = null_class),+++member(regular('X0'),'X0')],121,[],[in]]).
vproof('9520011456592226',[[+++(union('X0',singleton('X0')) = successor('X0'))],144,[],[in]]).
vproof('9520011456592226',[[+++(complement(intersection(complement('X0'),complement('X1'))) = union('X0','X1'))],161,[],[in]]).
vproof('9520011456592226',[[+++member('X0',complement('X1')),---member('X0',universal_class),+++member('X0','X1')],162,[],[in]]).
vproof('9520011456592226',[[---member('X0',complement('X1')),---member('X0','X1')],163,[],[in]]).
vproof('9520011456592226',[[---member('X0','X2'),---member('X0','X1'),+++member('X0',intersection('X1','X2'))],164,[],[in]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),+++member('X0','X2')],165,[],[in]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),+++member('X0','X1')],166,[],[in]]).
vproof('9520011456592226',[[+++(unordered_pair('X0','X0') = singleton('X0'))],175,[],[in]]).
vproof('9520011456592226',[[---member('X0',universal_class),+++member('X0',unordered_pair('X0','X1'))],178,[],[in]]).
vproof('9520011456592226',[[+++('X0' = 'X1'),---member('X0',unordered_pair('X1','X2')),+++('X0' = 'X2')],179,[],[in]]).
vproof('9520011456592226',[[+++subclass('X0',universal_class)],183,[],[in]]).
vproof('9520011456592226',[[---member('X2','X0'),---subclass('X0','X1'),+++member('X2','X1')],186,[],[in]]).
vproof('9520011456592226',[[+++member(z,z)],190,[1],[pp]]).
vproof('9520011456592226',[[+++member(z,diagonalise(element_relation))],191,[2],[pp]]).
vproof('9520011456592226',[[+++(intersection('X0',regular('X0')) => null_class),++('X0' = null_class)],237,[120],[pp]]).
vproof('9520011456592226',[[+++member(regular('X0'),'X0'),++('X0' = null_class)],238,[121],[pp]]).
vproof('9520011456592226',[[+++(union('X0',singleton('X0')) => successor('X0'))],261,[144],[pp]]).
vproof('9520011456592226',[[+++(complement(intersection(complement('X0'),complement('X1'))) => union('X0','X1'))],278,[161],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',complement('X1')),++member('X0','X1')],279,[162],[pp]]).
vproof('9520011456592226',[[---member('X0',complement('X1')),--member('X0','X1')],280,[163],[pp]]).
vproof('9520011456592226',[[---member('X0','X1'),--member('X0','X2'),++member('X0',intersection('X1','X2'))],281,[164],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X2')],282,[165],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X1')],283,[166],[pp]]).
vproof('9520011456592226',[[+++(unordered_pair('X0','X0') => singleton('X0'))],292,[175],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',unordered_pair('X0','X1'))],295,[178],[pp]]).
vproof('9520011456592226',[[---member('X0',unordered_pair('X1','X2')),++('X0' = 'X1'),++('X0' = 'X2')],296,[179],[pp]]).
vproof('9520011456592226',[[+++subclass('X0',universal_class)],299,[183],[pp]]).
vproof('9520011456592226',[[---subclass('X0','X1'),--member('X2','X0'),++member('X2','X1')],302,[186],[pp]]).
vproof('9520011456592226',[[+++member(z,z)],303,[190],[pp]]).
vproof('9520011456592226',[[+++member(z,diagonalise(element_relation))],304,[191],[pp]]).
vproof('9520011456592226',[[+++(intersection('X0',regular('X0')) => null_class),++('X0' = null_class)],350,[237],[pp]]).
vproof('9520011456592226',[[+++member(regular('X0'),'X0'),++('X0' = null_class)],351,[238],[pp]]).
vproof('9520011456592226',[[+++(union('X0',singleton('X0')) => successor('X0'))],374,[261],[pp]]).
vproof('9520011456592226',[[+++(complement(intersection(complement('X0'),complement('X1'))) => union('X0','X1'))],391,[278],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',complement('X1')),++member('X0','X1')],392,[279],[pp]]).
vproof('9520011456592226',[[---member('X0',complement('X1')),--member('X0','X1')],393,[280],[pp]]).
vproof('9520011456592226',[[---member('X0','X1'),--member('X0','X2'),++member('X0',intersection('X2','X1'))],394,[281],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X2')],395,[282],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X1')],396,[283],[pp]]).
vproof('9520011456592226',[[+++(unordered_pair('X0','X0') => singleton('X0'))],405,[292],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',unordered_pair('X0','X1'))],408,[295],[pp]]).
vproof('9520011456592226',[[---member('X0',unordered_pair('X1','X2')),++('X0' = 'X1'),++('X0' = 'X2')],409,[296],[pp]]).
vproof('9520011456592226',[[+++subclass('X0',universal_class)],412,[299],[pp]]).
vproof('9520011456592226',[[---subclass('X0','X1'),--member('X2','X0'),++member('X2','X1')],415,[302],[pp]]).
vproof('9520011456592226',[[+++member(z,z)],424,[303],[pp]]).
vproof('9520011456592226',[[+++member(z,diagonalise(element_relation))],425,[304],[pp]]).
vproof('9520011456592226',[[+++(intersection('X0',regular('X0')) => null_class),++('X0' = null_class)],457,[350],[pp]]).
vproof('9520011456592226',[[+++member(regular('X0'),'X0'),++('X0' = null_class)],458,[351],[pp]]).
vproof('9520011456592226',[[+++(union('X0',singleton('X0')) => successor('X0'))],474,[374],[pp]]).
vproof('9520011456592226',[[+++(complement(intersection(complement('X0'),complement('X1'))) => union('X0','X1'))],491,[391],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',complement('X1')),++member('X0','X1')],492,[392],[pp]]).
vproof('9520011456592226',[[---member('X0',complement('X1')),--member('X0','X1')],493,[393],[pp]]).
vproof('9520011456592226',[[---member('X0','X1'),--member('X0','X2'),++member('X0',intersection('X1','X2'))],494,[394],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X2')],495,[395],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X1')],496,[396],[pp]]).
vproof('9520011456592226',[[+++(unordered_pair('X0','X0') => singleton('X0'))],505,[405],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',unordered_pair('X0','X1'))],508,[408],[pp]]).
vproof('9520011456592226',[[---member('X0',unordered_pair('X1','X2')),++('X0' = 'X1'),++('X0' = 'X2')],509,[409],[pp]]).
vproof('9520011456592226',[[+++subclass('X0',universal_class)],512,[412],[pp]]).
vproof('9520011456592226',[[---subclass('X0','X1'),--member('X2','X0'),++member('X2','X1')],515,[415],[pp]]).
vproof('9520011456592226',[[+++member(z,z)],526,[424],[pp]]).
vproof('9520011456592226',[[+++member(z,diagonalise(element_relation))],527,[425],[pp]]).
vproof('9520011456592226',[[+++(intersection('X0',regular('X0')) => null_class),++('X0' = null_class)],556,[457],[pp]]).
vproof('9520011456592226',[[+++member(regular('X0'),'X0'),++('X0' = null_class)],557,[458],[pp]]).
vproof('9520011456592226',[[+++(union('X0',singleton('X0')) => successor('X0'))],573,[474],[pp]]).
vproof('9520011456592226',[[+++(complement(intersection(complement('X0'),complement('X1'))) => union('X0','X1'))],590,[491],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',complement('X1')),++member('X0','X1')],591,[492],[pp]]).
vproof('9520011456592226',[[---member('X0',complement('X1')),--member('X0','X1')],592,[493],[pp]]).
vproof('9520011456592226',[[---member('X0','X1'),--member('X0','X2'),++member('X0',intersection('X2','X1'))],593,[494],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X2')],594,[495],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X1')],595,[496],[pp]]).
vproof('9520011456592226',[[+++(unordered_pair('X0','X0') => singleton('X0'))],604,[505],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',unordered_pair('X0','X1'))],607,[508],[pp]]).
vproof('9520011456592226',[[---member('X0',unordered_pair('X1','X2')),++('X0' = 'X1'),++('X0' = 'X2')],608,[509],[pp]]).
vproof('9520011456592226',[[+++subclass('X0',universal_class)],611,[512],[pp]]).
vproof('9520011456592226',[[---subclass('X0','X1'),--member('X2','X0'),++member('X2','X1')],614,[515],[pp]]).
vproof('9520011456592226',[[+++member(z,z)],620,[526],[pp]]).
vproof('9520011456592226',[[+++member(z,diagonalise(element_relation))],621,[527],[pp]]).
vproof('9520011456592226',[[+++(intersection('X0',regular('X0')) => null_class),++('X0' = null_class)],650,[556],[pp]]).
vproof('9520011456592226',[[+++member(regular('X0'),'X0'),++('X0' = null_class)],651,[557],[pp]]).
vproof('9520011456592226',[[+++(union('X0',singleton('X0')) => successor('X0'))],667,[573],[pp]]).
vproof('9520011456592226',[[+++(complement(intersection(complement('X0'),complement('X1'))) => union('X0','X1'))],685,[590],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',complement('X1')),++member('X0','X1')],687,[591],[pp]]).
vproof('9520011456592226',[[---member('X0',complement('X1')),--member('X0','X1')],688,[592],[pp]]).
vproof('9520011456592226',[[---member('X0','X1'),--member('X0','X2'),++member('X0',intersection('X1','X2'))],689,[593],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X2')],690,[594],[pp]]).
vproof('9520011456592226',[[---member('X0',intersection('X1','X2')),++member('X0','X1')],691,[595],[pp]]).
vproof('9520011456592226',[[+++(unordered_pair('X0','X0') => singleton('X0'))],700,[604],[pp]]).
vproof('9520011456592226',[[---member('X0',universal_class),++member('X0',unordered_pair('X0','X1'))],703,[607],[pp]]).
vproof('9520011456592226',[[---member('X0',unordered_pair('X1','X2')),++('X0' = 'X1'),++('X0' = 'X2')],704,[608],[pp]]).
vproof('9520011456592226',[[+++subclass('X0',universal_class)],707,[611],[pp]]).
vproof('9520011456592226',[[---subclass('X0','X1'),--member('X2','X0'),++member('X2','X1')],710,[614],[pp]]).
vproof('9520011456592226',[[---member(regular(complement('X0')),'X0'),++(complement('X0') => null_class)],753,[651,688],[br]]).
vproof('9520011456592226',[[---member(z,'X0'),++member(z,intersection(z,'X0'))],757,[620,689],[br]]).
vproof('9520011456592226',[[---member(z,'X0'),++member(z,intersection(diagonalise(element_relation),'X0'))],758,[621,689],[br]]).
vproof('9520011456592226',[[+++member(regular(intersection('X0','X1')),'X1'),++(intersection('X0','X1') => null_class)],761,[651,690],[br]]).
vproof('9520011456592226',[[+++member(regular(intersection('X0','X1')),'X0'),++(intersection('X0','X1') => null_class)],768,[651,691],[br]]).
vproof('9520011456592226',[[---member('X0',singleton('X1')),++('X0' = 'X1')],798,[700,704],[fs]]).
vproof('9520011456592226',[[---member('X0','X1'),++member('X0',universal_class)],822,[707,710],[br]]).
vproof('9520011456592226',[[+++member(z,universal_class)],999,[620,822],[br]]).
vproof('9520011456592226',[[+++member(regular('X0'),universal_class),++('X0' = null_class)],1000,[651,822],[br]]).
vproof('9520011456592226',[[+++member(z,unordered_pair(z,'X0'))],1005,[703,999],[br]]).
vproof('9520011456592226',[[+++member(z,complement('X0')),++member(z,'X0')],1007,[687,999],[br]]).
vproof('9520011456592226',[[+++member(z,singleton(z))],1083,[700,1005],[fs]]).
vproof('9520011456592226',[[---member(z,'X0'),++member(z,intersection(singleton(z),'X0'))],1085,[689,1083],[br]]).
vproof('9520011456592226',[[+++(regular(singleton('X0')) => 'X0'),++(singleton('X0') => null_class)],1568,[651,798],[br]]).
vproof('9520011456592226',[[+++member(z,intersection(complement('X0'),complement('X1'))),++member(z,union('X0','X1'))],1669,[685,1007],[fs]]).
vproof('9520011456592226',[[+++(complement(universal_class) => null_class)],2598,[1000,753],[br]]).
vproof('9520011456592226',[[---member('X0',null_class)],2619,[822,688,2598],[bs,fsr]]).
vproof('9520011456592226',[[+++member(z,intersection(diagonalise(element_relation),singleton(z)))],2730,[1083,758],[br]]).
vproof('9520011456592226',[[---member(z,'X0'),++member(z,intersection(intersection(diagonalise(element_relation),singleton(z)),'X0'))],2771,[689,2730],[br]]).
vproof('9520011456592226',[[+++(intersection('X0',null_class) => null_class)],2824,[2619,761],[br]]).
vproof('9520011456592226',[[+++(intersection(null_class,'X0') => null_class)],2971,[2619,768],[br]]).
vproof('9520011456592226',[[+++member(z,intersection(singleton(z),z))],20420,[620,1085],[br]]).
vproof('9520011456592226',[[+++(intersection(singleton('X0'),'X0') => null_class),++(singleton('X0') => null_class)],23048,[650,1568],[bs]]).
vproof('9520011456592226',[[+++member(z,union('X0','X1')),++member(z,complement('X0'))],107744,[691,1669],[br]]).
vproof('9520011456592226',[[+++member(z,complement('X0')),++member(z,successor('X0'))],108260,[667,107744],[fs]]).
vproof('9520011456592226',[[---member(z,'X0'),++member(z,successor('X0'))],108261,[688,108260],[br]]).
vproof('9520011456592226',[[+++member(z,successor(z))],108325,[620,108261],[br]]).
vproof('9520011456592226',[[---member(z,'X0'),++member(z,intersection(successor(z),'X0'))],108718,[689,108325],[br]]).
vproof('9520011456592226',[[+++member(z,intersection(successor(z),intersection(singleton(z),z)))],118516,[20420,108718],[br]]).
vproof('9520011456592226',[[+++member(z,intersection(intersection(diagonalise(element_relation),singleton(z)),universal_class))],142519,[999,2771],[br]]).
vproof('9520011456592226',[[+++member(z,intersection(z,intersection(intersection(diagonalise(element_relation),singleton(z)),universal_class)))],142538,[757,142519],[br]]).
vproof('9520011456592226',[[+++(singleton(z) => null_class)],142584,[2619,2824,118516,23048],[bs,fd,fsr]]).
vproof('9520011456592226',[[],142585,[2619,2824,2971,2824,142538,142584],[fd,bd,fsr]]).
```