# Entrants' Sample Solutions

## Bliksem 1.12a

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

```(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) {  }.
```

```(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
```

```clause( 0, [ product( identity, X, X ) ] ) .
clause( 1, [ product( X, identity, X ) ] ) .
clause( 3, [ product( X, inverse( X ), identity ) ] ) .
clause( 4, [ product( X, Y, multiply( X, Y ) ) ] ) .
clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) ) ]) .
clause( 6, [ ~( product( Y, T, U ) ), ~( product( X, Y, Z ) ), product( X, U, W ), ~( product( Z, T, W ) ) ] ) .
clause( 7, [ ~( product( X, Y, Z ) ), ~( product( X, U, W ) ), product( Z, T, W ), ~( product( Y, T, U ) ) ] ) .
clause( 8, [ product( X, X, identity ) ] ) .
clause( 9, [ product( a, b, c ) ] ) .
clause( 10, [ ~( product( b, a, c ) ) ] ) .
clause( 17, [ =( Z, multiply( X, Y ) ), ~( product( X, Y, Z ) ) ] ) .
clause( 22, [ =( Y, X ), ~( product( X, identity, Y ) ) ] ) .
clause( 28, [ ~( product( X, Y, Z ) ), product( T, Z, Y ), ~( product( T, X , identity ) ) ] ) .
clause( 41, [ ~( product( X, identity, T ) ), product( Z, Y, T ), ~( product( X, Y, Z ) ) ] ) .
clause( 42, [ =( multiply( X, identity ), X ) ] ) .
clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] ) .
clause( 145, [ product( X, identity, inverse( X ) ) ] ) .
clause( 146, [ product( a, c, b ) ] ) .
clause( 169, [ =( inverse( X ), X ) ] ) .
clause( 236, [ ~( product( a, identity, X ) ), product( b, c, X ) ] ) .
clause( 307, [ product( b, X, c ), ~( product( a, identity, X ) ) ] ) .
clause( 320, [] ) .

found a proof!

% ABCDEFGHIJKLMNOPQRSTUVWXYZ

initialclauses(
[ clause( 322, [ product( identity, X, X ) ] )
, clause( 323, [ product( X, identity, X ) ] )
, clause( 324, [ product( inverse( X ), X, identity ) ] )
, clause( 325, [ product( X, inverse( X ), identity ) ] )
, clause( 326, [ product( X, Y, multiply( X, Y ) ) ] )
, clause( 327, [ ~( product( X, Y, Z ) ), ~( product( X, Y, T ) ), =( Z, T) ] )
, clause( 328, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~( product( Z, T, W ) ), product( X, U, W ) ] )
, clause( 329, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~( product( X, U, W ) ), product( Z, T, W ) ] )
, clause( 330, [ product( X, X, identity ) ] )
, clause( 331, [ product( a, b, c ) ] )
, clause( 332, [ ~( product( b, a, c ) ) ] )
] ).

subsumption(
clause( 0, [ product( identity, X, X ) ] )
, clause( 322, [ product( identity, X, X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

subsumption(
clause( 1, [ product( X, identity, X ) ] )
, clause( 323, [ product( X, identity, X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

subsumption(
clause( 3, [ product( X, inverse( X ), identity ) ] )
, clause( 325, [ product( X, inverse( X ), identity ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

subsumption(
clause( 4, [ product( X, Y, multiply( X, Y ) ) ] )
, clause( 326, [ product( X, Y, multiply( X, Y ) ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
)] ) ).

subsumption(
clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) ) ]
)
, clause( 327, [ ~( product( X, Y, Z ) ), ~( product( X, Y, T ) ), =( Z, T
) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T )] ),
permutation( 0, [ ==>( 0, 0 ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).

subsumption(
clause( 6, [ ~( product( Y, T, U ) ), ~( product( X, Y, Z ) ), product( X,
U, W ), ~( product( Z, T, W ) ) ] )
, clause( 328, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~(
product( Z, T, W ) ), product( X, U, W ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T ), :=( U
, U ), :=( W, W )] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 ), ==>( 2
, 3 ), ==>( 3, 2 )] ) ).

subsumption(
clause( 7, [ ~( product( X, Y, Z ) ), ~( product( X, U, W ) ), product( Z,
T, W ), ~( product( Y, T, U ) ) ] )
, clause( 329, [ ~( product( X, Y, Z ) ), ~( product( Y, T, U ) ), ~(
product( X, U, W ) ), product( Z, T, W ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T ), :=( U
, U ), :=( W, W )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 3 ), ==>( 2
, 1 ), ==>( 3, 2 )] ) ).

subsumption(
clause( 8, [ product( X, X, identity ) ] )
, clause( 330, [ product( X, X, identity ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

subsumption(
clause( 9, [ product( a, b, c ) ] )
, clause( 331, [ product( a, b, c ) ] )
, substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).

subsumption(
clause( 10, [ ~( product( b, a, c ) ) ] )
, clause( 332, [ ~( product( b, a, c ) ) ] )
, substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).

resolution(
clause( 376, [ ~( product( X, Y, Z ) ), =( Z, multiply( X, Y ) ) ] )
, clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) )
] )
, 2, clause( 4, [ product( X, Y, multiply( X, Y ) ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, multiply(
X, Y ) )] ), substitution( 1, [ :=( X, X ), :=( Y, Y )] )).

subsumption(
clause( 17, [ =( Z, multiply( X, Y ) ), ~( product( X, Y, Z ) ) ] )
, clause( 376, [ ~( product( X, Y, Z ) ), =( Z, multiply( X, Y ) ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z )] ),
permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 )] ) ).

resolution(
clause( 378, [ ~( product( X, identity, Y ) ), =( Y, X ) ] )
, clause( 5, [ ~( product( X, Y, Z ) ), =( Z, T ), ~( product( X, Y, T ) )
] )
, 2, clause( 1, [ product( X, identity, X ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, identity ), :=( Z, Y ), :=( T, X
)] ), substitution( 1, [ :=( X, X )] )).

subsumption(
clause( 22, [ =( Y, X ), ~( product( X, identity, Y ) ) ] )
, clause( 378, [ ~( product( X, identity, Y ) ), =( Y, X ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 1
), ==>( 1, 0 )] ) ).

resolution(
clause( 381, [ ~( product( X, Y, Z ) ), ~( product( T, X, identity ) ),
product( T, Z, Y ) ] )
, clause( 6, [ ~( product( Y, T, U ) ), ~( product( X, Y, Z ) ), product( X
, U, W ), ~( product( Z, T, W ) ) ] )
, 3, clause( 0, [ product( identity, X, X ) ] )
, 0, substitution( 0, [ :=( X, T ), :=( Y, X ), :=( Z, identity ), :=( T, Y
), :=( U, Z ), :=( W, Y )] ), substitution( 1, [ :=( X, Y )] )).

subsumption(
clause( 28, [ ~( product( X, Y, Z ) ), product( T, Z, Y ), ~( product( T, X
, identity ) ) ] )
, clause( 381, [ ~( product( X, Y, Z ) ), ~( product( T, X, identity ) ),
product( T, Z, Y ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T )] ),
permutation( 0, [ ==>( 0, 0 ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).

resolution(
clause( 387, [ ~( product( X, Y, Z ) ), ~( product( X, identity, T ) ),
product( Z, Y, T ) ] )
, clause( 7, [ ~( product( X, Y, Z ) ), ~( product( X, U, W ) ), product( Z
, T, W ), ~( product( Y, T, U ) ) ] )
, 3, clause( 8, [ product( X, X, identity ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, Y ),
:=( U, identity ), :=( W, T )] ), substitution( 1, [ :=( X, Y )] )).

subsumption(
clause( 41, [ ~( product( X, identity, T ) ), product( Z, Y, T ), ~(
product( X, Y, Z ) ) ] )
, clause( 387, [ ~( product( X, Y, Z ) ), ~( product( X, identity, T ) ),
product( Z, Y, T ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, T )] ),
permutation( 0, [ ==>( 0, 2 ), ==>( 1, 0 ), ==>( 2, 1 )] ) ).

eqswap(
clause( 391, [ =( Y, X ), ~( product( Y, identity, X ) ) ] )
, clause( 22, [ =( Y, X ), ~( product( X, identity, Y ) ) ] )
, 0, substitution( 0, [ :=( X, Y ), :=( Y, X )] )).

resolution(
clause( 392, [ =( X, multiply( X, identity ) ) ] )
, clause( 391, [ =( Y, X ), ~( product( Y, identity, X ) ) ] )
, 1, clause( 4, [ product( X, Y, multiply( X, Y ) ) ] )
, 0, substitution( 0, [ :=( X, multiply( X, identity ) ), :=( Y, X )] ),
substitution( 1, [ :=( X, X ), :=( Y, identity )] )).

eqswap(
clause( 393, [ =( multiply( X, identity ), X ) ] )
, clause( 392, [ =( X, multiply( X, identity ) ) ] )
, 0, substitution( 0, [ :=( X, X )] )).

subsumption(
clause( 42, [ =( multiply( X, identity ), X ) ] )
, clause( 393, [ =( multiply( X, identity ), X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

resolution(
clause( 395, [ ~( product( X, Y, Z ) ), product( X, Z, Y ) ] )
, clause( 28, [ ~( product( X, Y, Z ) ), product( T, Z, Y ), ~( product( T
, X, identity ) ) ] )
, 2, clause( 8, [ product( X, X, identity ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z ), :=( T, X )] ),
substitution( 1, [ :=( X, X )] )).

subsumption(
clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, clause( 395, [ ~( product( X, Y, Z ) ), product( X, Z, Y ) ] )
, substitution( 0, [ :=( X, X ), :=( Y, Y ), :=( Z, Z )] ),
permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 )] ) ).

resolution(
clause( 396, [ product( X, identity, inverse( X ) ) ] )
, clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, 1, clause( 3, [ product( X, inverse( X ), identity ) ] )
, 0, substitution( 0, [ :=( X, X ), :=( Y, inverse( X ) ), :=( Z, identity
)] ), substitution( 1, [ :=( X, X )] )).

subsumption(
clause( 145, [ product( X, identity, inverse( X ) ) ] )
, clause( 396, [ product( X, identity, inverse( X ) ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

resolution(
clause( 397, [ product( a, c, b ) ] )
, clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, 1, clause( 9, [ product( a, b, c ) ] )
, 0, substitution( 0, [ :=( X, a ), :=( Y, b ), :=( Z, c )] ),
substitution( 1, [] )).

subsumption(
clause( 146, [ product( a, c, b ) ] )
, clause( 397, [ product( a, c, b ) ] )
, substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).

eqswap(
clause( 398, [ =( multiply( Y, Z ), X ), ~( product( Y, Z, X ) ) ] )
, clause( 17, [ =( Z, multiply( X, Y ) ), ~( product( X, Y, Z ) ) ] )
, 0, substitution( 0, [ :=( X, Y ), :=( Y, Z ), :=( Z, X )] )).

resolution(
clause( 400, [ =( multiply( X, identity ), inverse( X ) ) ] )
, clause( 398, [ =( multiply( Y, Z ), X ), ~( product( Y, Z, X ) ) ] )
, 1, clause( 145, [ product( X, identity, inverse( X ) ) ] )
, 0, substitution( 0, [ :=( X, inverse( X ) ), :=( Y, X ), :=( Z, identity
)] ), substitution( 1, [ :=( X, X )] )).

paramod(
clause( 401, [ =( X, inverse( X ) ) ] )
, clause( 42, [ =( multiply( X, identity ), X ) ] )
, 0, clause( 400, [ =( multiply( X, identity ), inverse( X ) ) ] )
, 0, 1, substitution( 0, [ :=( X, X )] ), substitution( 1, [ :=( X, X )] )
).

eqswap(
clause( 402, [ =( inverse( X ), X ) ] )
, clause( 401, [ =( X, inverse( X ) ) ] )
, 0, substitution( 0, [ :=( X, X )] )).

subsumption(
clause( 169, [ =( inverse( X ), X ) ] )
, clause( 402, [ =( inverse( X ), X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).

resolution(
clause( 403, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, clause( 41, [ ~( product( X, identity, T ) ), product( Z, Y, T ), ~(
product( X, Y, Z ) ) ] )
, 2, clause( 146, [ product( a, c, b ) ] )
, 0, substitution( 0, [ :=( X, a ), :=( Y, c ), :=( Z, b ), :=( T, X )] ),
substitution( 1, [] )).

subsumption(
clause( 236, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, clause( 403, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1,
1 )] ) ).

resolution(
clause( 405, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, clause( 140, [ product( X, Z, Y ), ~( product( X, Y, Z ) ) ] )
, 1, clause( 236, [ ~( product( a, identity, X ) ), product( b, c, X ) ] )
, 1, substitution( 0, [ :=( X, b ), :=( Y, c ), :=( Z, X )] ),
substitution( 1, [ :=( X, X )] )).

subsumption(
clause( 307, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, clause( 405, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1,
1 )] ) ).

resolution(
clause( 407, [ product( b, inverse( a ), c ) ] )
, clause( 307, [ product( b, X, c ), ~( product( a, identity, X ) ) ] )
, 1, clause( 145, [ product( X, identity, inverse( X ) ) ] )
, 0, substitution( 0, [ :=( X, inverse( a ) )] ), substitution( 1, [ :=( X
, a )] )).

paramod(
clause( 408, [ product( b, a, c ) ] )
, clause( 169, [ =( inverse( X ), X ) ] )
, 0, clause( 407, [ product( b, inverse( a ), c ) ] )
, 0, 2, substitution( 0, [ :=( X, a )] ), substitution( 1, [] )).

resolution(
clause( 409, [] )
, clause( 10, [ ~( product( b, a, c ) ) ] )
, 0, clause( 408, [ product( b, a, c ) ] )
, 0, substitution( 0, [] ), substitution( 1, [] )).

subsumption(
clause( 320, [] )
, clause( 409, [] )
, substitution( 0, [] ), permutation( 0, [] ) ).

end.
```

## EP 0.7

Stephan Schulz
Institut für Informatik, Technische Universität München, Germany, and Safelogic AB, Sweden
schulz@informatik.tu-muenchen.de

Here is a list of all inferences:

er
Equality resolution: x!=a v x=x ==> a=a
pm
Paramodulation. Note that E considers all literals as equational, and thus also performs resolution by a combination of top-level paramodulation and clause normalization.
ef
Equality factoring (factor equations on one side only, move the remaining disequation into the precondition): 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, each rw-expression corresponds to exacly one rewrite step with the named clause.
sr
Simplify-reflect: An (equational) version of unit-cutting. As as example, see this positive simplify-reflect step: [a=b], [f(a)!=f(b)] => [].
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

The first proof uses all but "ef", although it uses some in fairly trivial ways. Note that clause normalization is inherently performed after all inferences but rewriting. The other proofs are for some fairly well-known problems, and show the rules in more realistic context.

test_all_rules

```      1 : [++equal(a, b),++equal(a, c)] : initial
2 : [++equal(i(X1), i(X2))] : initial
3 : [++equal(b, c),--equal(X1, X2),--equal(X3, X4),--equal(c, d)] : initial
4 : [++equal(c, d),--equal(h(i(a)), h(i(e)))] : initial
5 : [++equal(f(X1,X2), f(X2,X1))] : initial
6 : [++equal(g(X1,X2), g(X2,X1))] : initial
7 : [++equal(f(X1,f(X2,X3)), f(f(X1,X2),X3))] : initial
8 : [--equal(f(f(X1,X2),f(X3,g(X4,X5))), f(f(g(X4,X5),X3),f(X2,X1))),--equal(k(X1,X1), k(a,b))] : initial
13 : [--equal(k(X1,X1), k(a,b))] : ar(8,5,6,7)
23 : [++equal(c, b),--equal(X1, X2),--equal(d, c)] : er(3)
25 : [++equal(c, b),--equal(d, c)] : er(23)
26 : [++equal(d, c)] : sr(4,2)
27 : [++equal(c, b),--equal(c, c)] : rw(25,26)
28 : [++equal(c, b)] : cn(27)
30 : [++equal(b, a)] : pm(28,1)
33 : [--equal(k(X1,X1), k(a,a))] : rw(13,30)
114 : [] : er(33)
115 : [] : 114 : "proof"
```

SET103-6

```      6 : [++subclass(X1,universal_class)] : initial
10 : [--member(y,universal_class)] : initial
13 : [++equal(unordered_pair(X1,X1), singleton(X1))] : initial
16 : [++equal(X1, null_class),++member(regular(X1),X1)] : initial
37 : [++member(X1,X2),--subclass(X3,X2),--member(X1,X3)] : initial
46 : [++equal(X1, X2),++equal(X1, X3),--member(X1,unordered_pair(X2,X3))] : initial
48 : [++equal(unordered_pair(singleton(X1),unordered_pair(X1,singleton(X2))), ordered_pair(X1,X2))] : initial
49 : [--equal(unordered_pair(singleton(x),unordered_pair(x,null_class)), ordered_pair(x,y))] : initial
234 : [++member(X1,universal_class),--member(X1,X2)] : pm(6,37)
255 : [++member(regular(X1),universal_class),++equal(X1, null_class)] : pm(16,234)
354 : [++equal(X1, X2),--member(X1,singleton(X2))] : pm(13,46)
441 : [++equal(regular(singleton(X1)), X1),++equal(singleton(X1), null_class)] : pm(16,354)
475 : [++member(X1,universal_class),++equal(singleton(X1), null_class)] : pm(441,255)
490 : [++equal(singleton(y), null_class)] : pm(475,10)
501 : [++equal(unordered_pair(singleton(X1),unordered_pair(X1,null_class)), ordered_pair(X1,y))] : pm(490,48)
6935 : [--equal(ordered_pair(x,y), ordered_pair(x,y))] : rw(49,501)
6936 : [] : cn(6935)
6937 : [] : 6936 : "proof"
```

LUSK3

```      1 : [++equal(j(0,X1), X1)] : initial
2 : [++equal(j(X1,0), X1)] : initial
3 : [++equal(f(X1,X1), X1)] : initial
5 : [++equal(j(X1,g(X1)), 0)] : initial
6 : [++equal(j(X1,X2), j(X2,X1))] : initial
7 : [--equal(f(a,b), f(b,a))] : initial
8 : [++equal(j(j(X1,X2),X3), j(X1,j(X2,X3)))] : initial
10 : [++equal(f(X1,j(X2,X3)), j(f(X1,X2),f(X1,X3)))] : initial
11 : [++equal(f(j(X1,X2),X3), j(f(X1,X3),f(X2,X3)))] : initial
32 : [++equal(j(0,X1), j(X2,j(g(X2),X1)))] : pm(5,8)
34 : [++equal(j(X1,j(X2,X3)), j(X3,j(X1,X2)))] : pm(8,6)
41 : [++equal(X1, j(X2,j(g(X2),X1)))] : rw(32,1)
49 : [++equal(j(X1,0), g(g(X1)))] : pm(5,41)
58 : [++equal(X1, g(g(X1)))] : rw(49,2)
551 : [++equal(j(X1,f(X1,X2)), f(X1,j(X1,X2)))] : pm(3,10)
552 : [++equal(j(f(X1,X2),X1), f(X1,j(X2,X1)))] : pm(3,10)
569 : [++equal(j(X1,f(X1,X2)), f(X1,j(X2,X1)))] : rw(552,6)
581 : [++equal(f(X1,X1), j(X1,f(X1,0)))] : pm(2,551)
582 : [++equal(f(X1,0), j(X1,f(X1,g(X1))))] : pm(5,551)
602 : [++equal(X1, j(X1,f(X1,0)))] : rw(581,3)
617 : [++equal(j(X1,g(X1)), f(g(X1),0))] : pm(602,41)
629 : [++equal(0, f(g(X1),0))] : rw(617,5)
638 : [++equal(f(X1,0), 0)] : pm(58,629)
749 : [++equal(j(X1,f(X1,g(X1))), 0)] : rw(582,638)
754 : [++equal(j(X1,0), f(g(X1),g(g(X1))))] : pm(749,41)
771 : [++equal(X1, f(g(X1),g(g(X1))))] : rw(754,2)
772 : [++equal(X1, f(g(X1),X1))] : rw(771,58)
931 : [++equal(j(X1,f(X2,X1)), f(j(X1,X2),X1))] : pm(3,11)
932 : [++equal(j(f(X1,X2),X2), f(j(X1,X2),X2))] : pm(3,11)
968 : [++equal(j(X1,f(X2,X1)), f(j(X2,X1),X1))] : rw(932,6)
1041 : [++equal(f(X1,X1), j(X1,f(0,X1)))] : pm(2,931)
1042 : [++equal(f(0,X1), j(X1,f(g(X1),X1)))] : pm(5,931)
1068 : [++equal(X1, j(X1,f(0,X1)))] : rw(1041,3)
1069 : [++equal(f(0,X1), j(X1,X1))] : rw(1042,772)
1091 : [++equal(j(X1,g(X1)), f(0,g(X1)))] : pm(1068,41)
1114 : [++equal(0, f(0,g(X1)))] : rw(1091,5)
1141 : [++equal(f(0,X1), 0)] : pm(58,1114)
1213 : [++equal(0, j(X1,X1))] : rw(1069,1141)
1214 : [++equal(j(0,X1), j(X2,j(X2,X1)))] : pm(1213,8)
1226 : [++equal(j(X1,0), j(X2,j(X1,X2)))] : pm(1213,34)
1238 : [++equal(X1, j(X2,j(X2,X1)))] : rw(1214,1)
1253 : [++equal(X1, j(X2,j(X1,X2)))] : rw(1226,2)
1423 : [++equal(f(X1,j(X1,X2)), j(j(X1,X2),f(X2,j(X1,X2))))] : pm(1253,968)
1453 : [++equal(j(X1,f(X1,X2)), j(j(X1,X2),f(X2,j(X1,X2))))] : rw(1423,551)
1454 : [++equal(j(X1,f(X1,X2)), j(X1,f(X2,X1)))] : rw(rw(rw(1453,569),8),1238)
1710 : [++equal(j(X1,j(X1,f(X2,X1))), j(X1,f(X1,j(X1,X2))))] : pm(931,1454)
1767 : [++equal(f(X1,X2), j(X2,f(X2,j(X2,X1))))] : rw(1710,1238)
1768 : [++equal(f(X1,X2), f(X2,X1))] : rw(rw(1767,551),1238)
1814 : [--equal(f(a,b), f(a,b))] : rw(7,1768)
1815 : [] : cn(1814)
1816 : [] : 1815 : "proof"
```

PUZ031-1 (Schuberts Steamroller)

```      1 : [++wolf(a_wolf)] : initial
2 : [++fox(a_fox)] : initial
3 : [++bird(a_bird)] : initial
5 : [++snail(a_snail)] : initial
6 : [++grain(a_grain)] : initial
7 : [++animal(X1),--wolf(X1)] : initial
8 : [++animal(X1),--fox(X1)] : initial
9 : [++animal(X1),--bird(X1)] : initial
11 : [++animal(X1),--snail(X1)] : initial
12 : [++plant(X1),--grain(X1)] : initial
14 : [++plant(snail_food_of(X1)),--snail(X1)] : initial
16 : [++eats(X1,snail_food_of(X1)),--snail(X1)] : initial
18 : [++much_smaller(X1,X2),--snail(X1),--bird(X2)] : initial
19 : [++much_smaller(X1,X2),--bird(X1),--fox(X2)] : initial
20 : [++much_smaller(X1,X2),--fox(X1),--wolf(X2)] : initial
22 : [--wolf(X1),--fox(X2),--eats(X1,X2)] : initial
23 : [--wolf(X1),--grain(X2),--eats(X1,X2)] : initial
24 : [--bird(X1),--snail(X2),--eats(X1,X2)] : initial
25 : [--animal(X1),--animal(X2),--grain(X3),--eats(X1,X2),--eats(X2,X3)] : initial
26 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--much_smaller(X3,X1),--eats(X3,X4)] : initial
27 : [++animal(a_wolf)] : pm(1,7)
28 : [++animal(a_fox)] : pm(2,8)
29 : [++animal(a_bird)] : pm(3,9)
31 : [++animal(a_snail)] : pm(5,11)
59 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--eats(X3,X4),--snail(X3),--bird(X1)] : pm(18,26)
60 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--eats(X3,X4),--bird(X3),--fox(X1)] : pm(19,26)
61 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(X4),--eats(X3,X4),--fox(X3),--wolf(X1)] : pm(20,26)
160 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--plant(snail_food_of(X3)),--snail(X3),--bird(X1)] : pm(16,59)
258 : [++eats(X1,X2),++eats(X1,X3),--animal(X1),--plant(X2),--animal(X3),--snail(X3),--bird(X1)] : pm(14,160)
299 : [++eats(a_bird,X1),++eats(a_bird,X2),--plant(X1),--animal(X2),--snail(X2),--bird(a_bird)] : pm(29,258)
302 : [++eats(a_bird,X1),++eats(a_bird,X2),--plant(X1),--animal(X2),--snail(X2),--\$true] : rw(299,3)
303 : [++eats(a_bird,X1),++eats(a_bird,X2),--plant(X1),--animal(X2),--snail(X2)] : cn(302)
306 : [++eats(a_bird,X1),++eats(a_bird,X2),--animal(X2),--snail(X2),--grain(X1)] : pm(12,303)
315 : [++eats(a_bird,X1),++eats(a_bird,a_snail),--snail(a_snail),--grain(X1)] : pm(31,306)
316 : [++eats(a_bird,X1),++eats(a_bird,a_snail),--\$true,--grain(X1)] : rw(315,5)
317 : [++eats(a_bird,X1),++eats(a_bird,a_snail),--grain(X1)] : cn(316)
320 : [++eats(a_bird,a_grain),++eats(a_bird,a_snail)] : pm(6,317)
358 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--animal(a_bird),--plant(a_grain),--bird(a_bird),--fox(X1)] : pm(320,60)
373 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--\$true,--plant(a_grain),--bird(a_bird),--fox(X1)] : rw(358,29)
374 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--\$true,--plant(a_grain),--\$true,--fox(X1)] : rw(373,3)
375 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--plant(a_grain),--fox(X1)] : cn(374)
852 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--fox(X1),--grain(a_grain)] : pm(12,375)
853 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--fox(X1),--\$true] : rw(852,6)
854 : [++eats(X1,X2),++eats(X1,a_bird),++eats(a_bird,a_snail),--animal(X1),--plant(X2),--fox(X1)] : cn(853)
860 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--plant(X1),--fox(a_fox)] : pm(28,854)
868 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--plant(X1),--\$true] : rw(860,2)
869 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--plant(X1)] : cn(868)
871 : [++eats(a_fox,X1),++eats(a_fox,a_bird),++eats(a_bird,a_snail),--grain(X1)] : pm(12,869)
874 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),++eats(a_bird,a_snail)] : pm(6,871)
877 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),--bird(a_bird),--snail(a_snail)] : pm(874,24)
884 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),--\$true,--snail(a_snail)] : rw(877,3)
885 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird),--\$true,--\$true] : rw(884,5)
886 : [++eats(a_fox,a_grain),++eats(a_fox,a_bird)] : cn(885)
910 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--animal(a_fox),--plant(a_grain),--fox(a_fox),--wolf(X1)] : pm(886,61)
925 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--\$true,--plant(a_grain),--fox(a_fox),--wolf(X1)] : rw(910,28)
926 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--\$true,--plant(a_grain),--\$true,--wolf(X1)] : rw(925,2)
927 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--plant(a_grain),--wolf(X1)] : cn(926)
1375 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--wolf(X1),--grain(a_grain)] : pm(12,927)
1376 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--wolf(X1),--\$true] : rw(1375,6)
1377 : [++eats(X1,X2),++eats(X1,a_fox),++eats(a_fox,a_bird),--animal(X1),--plant(X2),--wolf(X1)] : cn(1376)
1382 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--plant(X1),--wolf(a_wolf)] : pm(27,1377)
1391 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--plant(X1),--\$true] : rw(1382,1)
1392 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--plant(X1)] : cn(1391)
1393 : [++eats(a_wolf,X1),++eats(a_wolf,a_fox),++eats(a_fox,a_bird),--grain(X1)] : pm(12,1392)
1396 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_fox,a_bird)] : pm(6,1393)
1400 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--animal(a_fox),--animal(a_bird),--grain(X1),--eats(a_bird,X1)] : pm(1396,25)
1406 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--\$true,--animal(a_bird),--grain(X1),--eats(a_bird,X1)] : rw(1400,28)
1407 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--\$true,--\$true,--grain(X1),--eats(a_bird,X1)] : rw(1406,29)
1408 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--grain(X1),--eats(a_bird,X1)] : cn(1407)
1426 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_bird,a_snail),--grain(a_grain)] : pm(320,1408)
1439 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_bird,a_snail),--\$true] : rw(1426,6)
1440 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),++eats(a_bird,a_snail)] : cn(1439)
1444 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--bird(a_bird),--snail(a_snail)] : pm(1440,24)
1454 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--\$true,--snail(a_snail)] : rw(1444,3)
1455 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox),--\$true,--\$true] : rw(1454,5)
1456 : [++eats(a_wolf,a_grain),++eats(a_wolf,a_fox)] : cn(1455)
1473 : [++eats(a_wolf,a_fox),--wolf(a_wolf),--grain(a_grain)] : pm(1456,23)
1483 : [++eats(a_wolf,a_fox),--\$true,--grain(a_grain)] : rw(1473,1)
1484 : [++eats(a_wolf,a_fox),--\$true,--\$true] : rw(1483,6)
1485 : [++eats(a_wolf,a_fox)] : cn(1484)
1499 : [--wolf(a_wolf),--fox(a_fox)] : pm(1485,22)
1508 : [--\$true,--fox(a_fox)] : rw(1499,1)
1509 : [--\$true,--\$true] : rw(1508,2)
1510 : [] : cn(1509)
1511 : [] : 1510 : "proof"
```

## Gandalf c-2.5

Tanel Tammet
Tallinn Technical University, Estonia
Safelogic AB, Sweden
tammet@cc.ttu.ee
```1 [] -wolf(X) | animal(X).
2 [] -fox(X) | animal(X).
3 [] -bird(X) | animal(X).
5 [] -snail(X) | animal(X).
6 [] wolf(a_wolf).
7 [] fox(a_fox).
8 [] bird(a_bird).
10 [] snail(a_snail).
11 [] grain(a_grain).
12 [] -grain(X) | plant(X).
13 [] -much_smaller(X,Y) | -eats(X,Z) | eats(Y,U) | eats(Y,X) | -plant(Z) | -plant(U) | -animal(X) | -animal(Y).
15 [] much_smaller(X,Y) | -snail(X) | -bird(Y).
16 [] much_smaller(X,Y) | -bird(X) | -fox(Y).
17 [] much_smaller(X,Y) | -fox(X) | -wolf(Y).
18 [] -eats(X,Y) | -fox(Y) | -wolf(X).
19 [] -eats(X,Y) | -grain(Y) | -wolf(X).
21 [] -eats(X,Y) | -snail(Y) | -bird(X).
24 [] plant(snail_food_of(X)) | -snail(X).
25 [] eats(X,snail_food_of(X)) | -snail(X).
26 [] -eats(X,Y) | -eats(Y,Z) | -grain(Z) | -animal(X) | -animal(Y).
27 [hyper:1,6] animal(a_wolf).
31 [hyper:2,7] animal(a_fox).
34 [hyper:17,7,6] much_smaller(a_fox,a_wolf).
36 [hyper:3,8] animal(a_bird).
40 [hyper:16,8,7] much_smaller(a_bird,a_fox).
50 [hyper:5,10] animal(a_snail).
52 [hyper:15,10,8] much_smaller(a_snail,a_bird).
54 [hyper:24,10] plant(snail_food_of(a_snail)).
55 [hyper:25,10] eats(a_snail,snail_food_of(a_snail)).
56 [hyper:12,11] plant(a_grain).
104 [hyper:13,55,52,56,cut:54,cut:50,cut:36] eats(a_bird,a_grain) | eats(a_bird,a_snail).
148 [hyper:21,104,cut:10,cut:8] eats(a_bird,a_grain).
159 [hyper:13,148,40,56,cut:56,cut:36,cut:31] eats(a_fox,a_grain) | eats(a_fox,a_bird).
189 [hyper:26,159,148,cut:31,cut:36,cut:11] eats(a_fox,a_grain).
200 [hyper:13,189,34,56,cut:56,cut:31,cut:27] eats(a_wolf,a_grain) | eats(a_wolf,a_fox).
215 [hyper:18,200,cut:7,cut:6] eats(a_wolf,a_grain).
```

## Otter 3.2

William McCune
Argonne National Laboratory, USA
mccune@mcs.anl.gov
```---------------- PROOF ----------------

1 [] animal(A)| -wolf(A).
2 [] animal(A)| -fox(A).
3 [] animal(A)| -bird(A).
5 [] animal(A)| -snail(A).
6 [] plant(A)| -grain(A).
7 [] eats(A,B)|eats(A,C)| -animal(A)| -plant(B)| -animal(C)| -plant(D)| -much_smaller(C,A)| -eats(C,D).
9 [] much_smaller(A,B)| -snail(A)| -bird(B).
10 [] much_smaller(A,B)| -bird(A)| -fox(B).
11 [] much_smaller(A,B)| -fox(A)| -wolf(B).
13 [] -wolf(A)| -grain(B)| -eats(A,B).
15 [] -bird(A)| -snail(B)| -eats(A,B).
18 [] plant(snail_food_of(A))| -snail(A).
19 [] eats(A,snail_food_of(A))| -snail(A).
20 [] -animal(A)| -animal(B)| -grain(C)| -eats(A,B)| -eats(B,C).
23 [factor,7.4.6] eats(A,B)|eats(A,C)| -animal(A)| -plant(B)| -animal(C)| -much_smaller(C,A)| -eats(C,B).
28 [] wolf(a_wolf).
29 [] fox(a_fox).
30 [] bird(a_bird).
32 [] snail(a_snail).
33 [] grain(a_grain).
34 [hyper,28,1] animal(a_wolf).
35 [hyper,29,11,28] much_smaller(a_fox,a_wolf).
36 [hyper,29,2] animal(a_fox).
37 [hyper,30,10,29] much_smaller(a_bird,a_fox).
38 [hyper,30,3] animal(a_bird).
44 [hyper,32,19] eats(a_snail,snail_food_of(a_snail)).
45 [hyper,32,18] plant(snail_food_of(a_snail)).
46 [hyper,32,9,30] much_smaller(a_snail,a_bird).
47 [hyper,32,5] animal(a_snail).
48 [hyper,33,6] plant(a_grain).
50 [hyper,44,7,38,48,47,45,46] eats(a_bird,a_grain)|eats(a_bird,a_snail).
55 [hyper,50,15,30,32] eats(a_bird,a_grain).
56 [hyper,55,23,36,48,38,37] eats(a_fox,a_grain)|eats(a_fox,a_bird).
62 [hyper,56,20,36,38,33,55] eats(a_fox,a_grain).
63 [hyper,62,23,34,48,36,35] eats(a_wolf,a_grain)|eats(a_wolf,a_fox).
67 [hyper,63,13,28,33] eats(a_wolf,a_fox).
69 [hyper,67,20,34,36,33,62] \$F.

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

## SCOTT 6.1

John Slaney
Australian National University, Australia
{kahlil,jks}@arp.anu.edu.au
```0: (wt=4) 1 []  (011) animal(A)| -wolf(A).
0: (wt=4) 2 []  (011) animal(A)| -fox(A).
0: (wt=4) 3 []  (011) animal(A)| -bird(A).
0: (wt=4) 5 []  (011) animal(A)| -snail(A).
0: (wt=4) 6 []  (011) plant(A)| -grain(A).
0: (wt=20) 7 []  (011) eats(A,B)|eats(A,C)| -animal(A)| -plant(B)| -animal(C)| -plant(D)| -much_smaller(C,A)| -eats(C,D).
0: (wt=7) 9 []  (011) much_smaller(A,B)| -snail(A)| -bird(B).
0: (wt=7) 10 []  (011) much_smaller(A,B)| -bird(A)| -fox(B).
0: (wt=7) 11 []  (011) much_smaller(A,B)| -fox(A)| -wolf(B).
0: (wt=7) 12 []  (011) -wolf(A)| -fox(B)| -eats(A,B).
0: (wt=7) 13 []  (011) -wolf(A)| -grain(B)| -eats(A,B).
0: (wt=7) 15 []  (011) -bird(A)| -snail(B)| -eats(A,B).
0: (wt=5) 18 []  (011) plant(snail_food_of(A))| -snail(A).
0: (wt=6) 19 []  (011) eats(A,snail_food_of(A))| -snail(A).
0: (wt=12) 20 []  (011) -animal(A)| -animal(B)| -grain(C)| -eats(A,B)| -eats(B,C).
0: (wt=18) 23 [factor,7.4.6]  (011) eats(A,B)|eats(A,C)| -animal(A)| -plant(B)| -animal(C)| -much_smaller(C,A)| -eats(C,B).
1: (wt=2) 28 []  (001) wolf(a_wolf).
2: (wt=2) 29 []  (011) fox(a_fox).
3: (wt=2) 30 []  (011) bird(a_bird).
5: (wt=2) 32 []  (010) snail(a_snail).
6: (wt=2) 33 []  (0bb) grain(a_grain).
8: (wt=2) 34 [hyper,28,1]  (011) animal(a_wolf).
10: (wt=3) 35 [hyper,29,11,28]  (011) much_smaller(a_fox,a_wolf).
9: (wt=2) 36 [hyper,29,2]  (0bb) animal(a_fox).
11: (wt=3) 37 [ur,29,12,28]  (011) -eats(a_wolf,a_fox).
13: (wt=3) 38 [hyper,30,10,29]  (0bb) much_smaller(a_bird,a_fox).
12: (wt=2) 39 [hyper,30,3]  (0bb) animal(a_bird).
19: (wt=4) 45 [hyper,32,19]  (011) eats(a_snail,snail_food_of(a_snail)).
20: (wt=3) 46 [hyper,32,18]  (011) plant(snail_food_of(a_snail)).
22: (wt=3) 47 [hyper,32,9,30]  (011) much_smaller(a_snail,a_bird).
21: (wt=2) 48 [hyper,32,5]  (011) animal(a_snail).
23: (wt=3) 49 [ur,32,15,30]  (010) -eats(a_bird,a_snail).
24: (wt=2) 50 [hyper,33,6]  (011) plant(a_grain).
7: (wt=3) 51 [ur,33,13,28]  (001) -eats(a_wolf,a_grain).
34: (wt=4) 55 [hyper,47,23,39,46,48,45,unit_del,49]  (011) eats(a_bird,snail_food_of(a_snail)).
35: (wt=3) 59 [hyper,50,7,39,48,46,47,45,unit_del,49]  (010) eats(a_bird,a_grain).
28: (wt=4) 61 [ur,50,7,51,37,34,36,46,35]  (00n) -eats(a_fox,snail_food_of(a_snail)).
0: (wt=3) 64 [hyper,55,23,36,46,39,38,unit_del,61]  (001) eats(a_fox,a_bird).
0: (wt=3) 69 [ur,59,20,36,39,33]  (000) -eats(a_fox,a_bird).
0: (wt=0) 70 [binary,69.1,64.1]  (000) \$F.
```

## Vampire 2.0, Vampire 5.0, and Vampire 5.0-CASC

Alexandre Riazanov, Andrei Voronkov
University of Manchester, England
{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 <tabulation file>, 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.

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. ========================
```

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]]).
```