# constant = constant #################################

a:0.
.
a
a
equal
false
false

a:0 b:0.
.
b
a
uncomparable
false
false

a:0 b:0.
b>a.
b
a
greater
true
false

# constant = variable #################################

a:0.
.
a
X
uncomparable
false
false

# variable = variable #################################

.
.
X
Y
uncomparable
false
false

.
.
X
X
equal
false
false

# ground term = constant #################################

f:1 a:0.
.
f(a)
a
greater
true
false

f:1 a:0.
f>a.
f(a)
a
greater
true
false

f:1 a:0.
a>f.
f(a)
a
greater
true
false

f:2 a:0 b:0.
.
f(a,b)
a
greater
true
false

f:2 a:0 b:0.
a>f a>b.
f(a,b)
a
greater
true
false

f:2 a:0 b:0.
.
f(b,a)
a
greater
true
false

f:2 a:0 b:0.
a>f a>b.
f(b,a)
a
greater
true
false

f:2 a:0 b:0.
.
f(b,f(b,a))
a
greater
true
false

f:2 a:0 b:0.
a>f a>b.
f(b,f(b,a))
a
greater
true
false

f:1 a:0 b:0.
.
f(a)
b
uncomparable
false
false

f:1 a:0 b:0.
a>b.
f(a)
b
greater
true
false

f:1 a:0 b:0.
b>a b>f.
f(a)
b
lesser
false
true

f:2 a:0 b:0.
.
f(b,b)
a
uncomparable
false
false

f:2 a:0 b:0.
f>a.
f(b,b)
a
greater
true
false

f:2 a:0 b:0.
b>a.
f(b,b)
a
greater
true
false

f:2 a:0 b:0.
a>f a>b.
f(b,b)
a
lesser
false
true

f:2 a:0 b:0 c:0.
a>f a>b.
f(b,c)
a
uncomparable
false
false

f:2 a:0 b:0 c:0.
a>f a>b a>c.
f(b,c)
a
lesser
false
true

f:2 a:0 b:0 c:0.
c>a.
f(b,c)
a
greater
true
false

# ground term = variable #################################

f:1 a:0.
.
f(a)
X
uncomparable
false
false

f:2 a:0.
.
f(a,a)
X
uncomparable
false
false

# variable term = variable #################################

f:1.
.
f(X)
Y
uncomparable
false
false

f:2.
.
f(X,Y)
Z
uncomparable
false
false

f:1.
.
f(X)
X
greater
true
false

f:2.
.
f(X,Y)
X
greater
true
false

f:2.
.
f(Y,X)
X
greater
true
false

f:2.
.
f(Y,f(Y,X))
X
greater
true
false

f:2 g:1.
.
f(Y,f(Y,g(g(g(g(X))))))
X
greater
true
false

# ground term = ground term #################################

f:1 a:0.
.
f(a)
f(a)
equal
false
false

f:1 a:0.
f>a.
f(a)
f(a)
equal
false
false

f:1 a:0.
a>f.
f(a)
f(a)
equal
false
false

f:2 a:0 b:0.
.
f(a,b)
f(a,b)
equal
false
false

f:2 a:0 b:0.
f>a f>b.
f(a,b)
f(a,b)
equal
false
false

f:2 a:0 b:0.
a>f b>f.
f(a,b)
f(a,b)
equal
false
false

f:2 a:0 b:0.
.
f(a,b)
f(b,a)
uncomparable
false
false

f:2 a:0 b:0.
a>b.
f(a,b)
f(b,a)
greater
true
false

f:2 a:0 b:0.
b>a.
f(a,b)
f(b,a)
lesser
false
true

f:2 a:0 b:0.
f>a f>b.
f(a,b)
f(b,a)
uncomparable
false
false

f:2 a:0 b:0.
a>f.
f(a,b)
f(b,a)
uncomparable
false
false

f:2 a:0 b:0.
b>f.
f(a,b)
f(b,a)
uncomparable
false
false

f:2 a:0 b:0.
a>f b>f.
f(a,b)
f(b,a)
uncomparable
false
false

f:1 g:1 a:0 b:0.
.
f(a)
g(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
f>g.
f(a)
g(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
f>b.
f(a)
g(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
a>b.
f(a)
g(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
f>g f>b.
f(a)
g(b)
greater
true
false

f:1 g:1 a:0 b:0.
a>g a>b.
f(a)
g(b)
greater
true
false

f:1 g:1 a:0 b:0.
f>g a>b.
f(a)
g(b)
greater
true
false

f:1 g:1 a:0 b:0.
f>b a>g.
f(a)
g(b)
uncomparable
false
false

f:1 a:0 b:0.
.
f(a)
f(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
f>b.
f(a)
f(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
b>f.
f(a)
f(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
a>f.
f(a)
f(b)
uncomparable
false
false

f:1 g:1 a:0 b:0.
f>b a>b.
f(a)
f(b)
greater
true
false

f:1 g:1 a:0 b:0.
a>b.
f(a)
f(b)
greater
true
false

f:2 a:0 b:0 c:0.
.
f(a,b)
f(a,c)
uncomparable
false
false

f:2 a:0 b:0 c:0.
f>c.
f(a,b)
f(a,c)
uncomparable
false
false

f:2 a:0 b:0 c:0.
c>f.
f(a,b)
f(a,c)
uncomparable
false
false

f:2 a:0 b:0 c:0.
b>f.
f(a,b)
f(a,c)
uncomparable
false
false

f:2 a:0 b:0 c:0.
b>c.
f(a,b)
f(a,c)
greater
true
false

f:2 a:0 b:0 c:0.
a>c.
f(a,b)
f(a,c)
uncomparable
false
false

f:2 a:0 b:0 c:0.
c>a.
f(a,b)
f(a,c)
uncomparable
false
false

# to be cont'd

# variable term = variable term #################################

f:1.
.
f(X)
f(X)
equal
false
false

f:1.
.
f(X)
f(Y)
uncomparable
false
false

f:1 g:1.
.
f(X)
g(Y)
uncomparable
false
false

f:1 g:1.
f>g.
f(X)
g(Y)
uncomparable
false
false

f:1.
.
f(X)
f(Y)
uncomparable
false
false

f:1 g:1.
.
f(X)
g(X)
uncomparable
false
false

f:1 g:1.
f>g.
f(X)
g(X)
greater
true
false

f:2.
.
f(X,Y)
f(X,X)
uncomparable
false
false

f:2.
.
f(X,X)
f(X,X)
equal
false
false

multiply:2.
.
multiply(X1,X2)
multiply(X2,X1)
uncomparable
false
false

# test examples producing errors in previous versions ##############

f:2 i:1 a:0.
i>f f>a.
f(X,f(i(X),Y))
f(a,Y)
greater
true
false

f:2 i:1 a:0.
i>a.
f(X,f(i(X),Y))
f(a,Y)
greater
true
false

f:2 i:1 a:0.
.
f(X,f(i(X),Y))
f(a,Y)
uncomparable
false
false

f:2 i:1 a:0.
a>f a>i.
f(X,f(i(X),Y))
f(a,Y)
uncomparable
false
false


# special cases

m:3 i:1.
.
m(i(X2),i(X2),X2)
m(X1,i(X2),X2)
uncomparable
false
false


m:3 i:1.
.
m(X1,X2,m(i(X2),i(X2),X2))
m(X1,i(X2),X2)
uncomparable
false
false
