0 QTRS
↳1 Overlay + Local Confluence (⇔)
↳2 QTRS
↳3 DependencyPairsProof (⇔)
↳4 QDP
↳5 DependencyGraphProof (⇔)
↳6 AND
↳7 QDP
↳8 UsableRulesProof (⇔)
↳9 QDP
↳10 QReductionProof (⇔)
↳11 QDP
↳12 QDPSizeChangeProof (⇔)
↳13 YES
↳14 QDP
↳15 UsableRulesProof (⇔)
↳16 QDP
↳17 QReductionProof (⇔)
↳18 QDP
↳19 QDPSizeChangeProof (⇔)
↳20 YES
↳21 QDP
↳22 UsableRulesProof (⇔)
↳23 QDP
↳24 QReductionProof (⇔)
↳25 QDP
↳26 QDPSizeChangeProof (⇔)
↳27 YES
↳28 QDP
↳29 UsableRulesProof (⇔)
↳30 QDP
↳31 QReductionProof (⇔)
↳32 QDP
↳33 QDPSizeChangeProof (⇔)
↳34 YES
↳35 QDP
↳36 UsableRulesProof (⇔)
↳37 QDP
↳38 QReductionProof (⇔)
↳39 QDP
↳40 Induction-Processor (⇐)
↳41 AND
↳42 QDP
↳43 PisEmptyProof (⇔)
↳44 YES
↳45 QTRS
↳46 Overlay + Local Confluence (⇔)
↳47 QTRS
↳48 DependencyPairsProof (⇔)
↳49 QDP
↳50 DependencyGraphProof (⇔)
↳51 AND
↳52 QDP
↳53 UsableRulesProof (⇔)
↳54 QDP
↳55 QReductionProof (⇔)
↳56 QDP
↳57 QDPSizeChangeProof (⇔)
↳58 YES
↳59 QDP
↳60 UsableRulesProof (⇔)
↳61 QDP
↳62 QReductionProof (⇔)
↳63 QDP
↳64 QDPSizeChangeProof (⇔)
↳65 YES
↳66 QDP
↳67 UsableRulesProof (⇔)
↳68 QDP
↳69 QReductionProof (⇔)
↳70 QDP
↳71 QDPSizeChangeProof (⇔)
↳72 YES
↳73 QDP
↳74 UsableRulesProof (⇔)
↳75 QDP
↳76 QReductionProof (⇔)
↳77 QDP
↳78 QDPSizeChangeProof (⇔)
↳79 YES
↳80 QDP
↳81 UsableRulesProof (⇔)
↳82 QDP
↳83 QReductionProof (⇔)
↳84 QDP
↳85 QDPSizeChangeProof (⇔)
↳86 YES
↳87 QDP
↳88 UsableRulesProof (⇔)
↳89 QDP
↳90 QReductionProof (⇔)
↳91 QDP
↳92 QDPSizeChangeProof (⇔)
↳93 YES
↳94 QDP
↳95 UsableRulesProof (⇔)
↳96 QDP
↳97 QReductionProof (⇔)
↳98 QDP
↳99 QDPSizeChangeProof (⇔)
↳100 YES
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
LE(s(x), s(y)) → LE(x, y)
EQ(s(x), s(y)) → EQ(x, y)
IF1(true, x, y, xs) → MIN(x, xs)
IF1(false, x, y, xs) → MIN(y, xs)
IF2(false, x, y, xs) → DEL(x, xs)
MINSORT(cons(x, y)) → MIN(x, y)
MINSORT(cons(x, y)) → MINSORT(del(min(x, y), cons(x, y)))
MINSORT(cons(x, y)) → DEL(min(x, y), cons(x, y))
MIN(x, cons(y, z)) → IF1(le(x, y), x, y, z)
MIN(x, cons(y, z)) → LE(x, y)
DEL(x, cons(y, z)) → IF2(eq(x, y), x, y, z)
DEL(x, cons(y, z)) → EQ(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
EQ(s(x), s(y)) → EQ(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
EQ(s(x), s(y)) → EQ(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
EQ(s(x), s(y)) → EQ(x, y)
From the DPs we obtained the following set of size-change graphs:
DEL(x, cons(y, z)) → IF2(eq(x, y), x, y, z)
IF2(false, x, y, xs) → DEL(x, xs)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
DEL(x, cons(y, z)) → IF2(eq(x, y), x, y, z)
IF2(false, x, y, xs) → DEL(x, xs)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
DEL(x, cons(y, z)) → IF2(eq(x, y), x, y, z)
IF2(false, x, y, xs) → DEL(x, xs)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
From the DPs we obtained the following set of size-change graphs:
LE(s(x), s(y)) → LE(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
LE(s(x), s(y)) → LE(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
LE(s(x), s(y)) → LE(x, y)
From the DPs we obtained the following set of size-change graphs:
MIN(x, cons(y, z)) → IF1(le(x, y), x, y, z)
IF1(true, x, y, xs) → MIN(x, xs)
IF1(false, x, y, xs) → MIN(y, xs)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
MIN(x, cons(y, z)) → IF1(le(x, y), x, y, z)
IF1(true, x, y, xs) → MIN(x, xs)
IF1(false, x, y, xs) → MIN(y, xs)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
MIN(x, cons(y, z)) → IF1(le(x, y), x, y, z)
IF1(true, x, y, xs) → MIN(x, xs)
IF1(false, x, y, xs) → MIN(y, xs)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
From the DPs we obtained the following set of size-change graphs:
MINSORT(cons(x, y)) → MINSORT(del(min(x, y), cons(x, y)))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
minsort(nil) → nil
minsort(cons(x, y)) → cons(min(x, y), minsort(del(min(x, y), cons(x, y))))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
del(x, nil) → nil
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
MINSORT(cons(x, y)) → MINSORT(del(min(x, y), cons(x, y)))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
del(x, nil) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
minsort(nil)
minsort(cons(x0, x1))
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
minsort(nil)
minsort(cons(x0, x1))
MINSORT(cons(x, y)) → MINSORT(del(min(x, y), cons(x, y)))
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
del(x, nil) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
POL(0) = 0
POL(MINSORT(x1)) = x1
POL(cons(x1, x2)) = 1 + x1 + x2
POL(del(x1, x2)) = x2
POL(eq(x1, x2)) = 1 + x2
POL(false) = 0
POL(if1(x1, x2, x3, x4)) = x2 + x3 + x4
POL(if2(x1, x2, x3, x4)) = 1 + x3 + x4
POL(le(x1, x2)) = 0
POL(min(x1, x2)) = x1 + x2
POL(nil) = 1
POL(s(x1)) = 1 + x1
POL(true) = 0
[x, x0, x1, x2, x3, x113, y94, xs36, x126, y105, y41, z7, x139, x50, x11, y8, z'', y62, x87, x100, y83, y126, x164, x177, y147, x24, y19, x37, y30] equal_bool(true, false) -> false equal_bool(false, true) -> false equal_bool(true, true) -> true equal_bool(false, false) -> true true and x -> x false and x -> false true or x -> true false or x -> x not(false) -> true not(true) -> false isa_true(true) -> true isa_true(false) -> false isa_false(true) -> false isa_false(false) -> true equal_sort[a0](0, 0) -> true equal_sort[a0](0, s(x0)) -> false equal_sort[a0](s(x0), 0) -> false equal_sort[a0](s(x0), s(x1)) -> equal_sort[a0](x0, x1) equal_sort[a32](nil, nil) -> true equal_sort[a32](nil, cons(x0, x1)) -> false equal_sort[a32](cons(x0, x1), nil) -> false equal_sort[a32](cons(x0, x1), cons(x2, x3)) -> equal_sort[a32](x0, x2) and equal_sort[a32](x1, x3) equal_sort[a61](witness_sort[a61], witness_sort[a61]) -> true if2'(true, x113, y94, xs36) -> true if2'(false, x126, y105, cons(y41, z7)) -> if2'(eq(x126, y41), x126, y41, z7) if2'(false, x126, y105, nil) -> false del'(x139, nil) -> false equal_bool(eq(x50, y41), true) -> true | del'(x50, cons(y41, z7)) -> true equal_bool(eq(x50, y41), true) -> false | del'(x50, cons(y41, z7)) -> del'(x50, z7) min(x, nil) -> x equal_bool(le(x11, y8), true) -> true | min(x11, cons(y8, z'')) -> min(x11, z'') equal_bool(le(x11, y8), true) -> false | min(x11, cons(y8, z'')) -> min(y8, z'') eq(0, 0) -> true eq(0, s(y62)) -> false eq(s(x87), 0) -> false eq(s(x100), s(y83)) -> eq(x100, y83) if2(true, x113, y94, xs36) -> xs36 if2(false, x126, y105, cons(y41, z7)) -> cons(y105, if2(eq(x126, y41), x126, y41, z7)) if2(false, x126, y105, nil) -> cons(y105, nil) del(x139, nil) -> nil equal_bool(eq(x50, y41), true) -> true | del(x50, cons(y41, z7)) -> z7 equal_bool(eq(x50, y41), true) -> false | del(x50, cons(y41, z7)) -> cons(y41, del(x50, z7)) le(0, y126) -> true le(s(x164), 0) -> false le(s(x177), s(y147)) -> le(x177, y147) if1(true, x24, y19, nil) -> x24 if1(true, x24, y19, cons(y8, z'')) -> if1(le(x24, y8), x24, y8, z'') if1(false, x37, y30, nil) -> y30 if1(false, x37, y30, cons(y8, z'')) -> if1(le(y30, y8), y30, y8, z'')
proof of internal # AProVE Commit ID: 9a00b172b26c9abb2d4c4d5eaf341e919eb0fbf1 nowonder 20100222 unpublished dirty Partial correctness of the following Program [x, x0, x1, x2, x3, x113, y94, xs36, x126, y105, y41, z7, x139, x50, x11, y8, z'', y62, x87, x100, y83, y126, x164, x177, y147, x24, y19, x37, y30] equal_bool(true, false) -> false equal_bool(false, true) -> false equal_bool(true, true) -> true equal_bool(false, false) -> true true and x -> x false and x -> false true or x -> true false or x -> x not(false) -> true not(true) -> false isa_true(true) -> true isa_true(false) -> false isa_false(true) -> false isa_false(false) -> true equal_sort[a0](0, 0) -> true equal_sort[a0](0, s(x0)) -> false equal_sort[a0](s(x0), 0) -> false equal_sort[a0](s(x0), s(x1)) -> equal_sort[a0](x0, x1) equal_sort[a32](nil, nil) -> true equal_sort[a32](nil, cons(x0, x1)) -> false equal_sort[a32](cons(x0, x1), nil) -> false equal_sort[a32](cons(x0, x1), cons(x2, x3)) -> equal_sort[a32](x0, x2) and equal_sort[a32](x1, x3) equal_sort[a61](witness_sort[a61], witness_sort[a61]) -> true if2'(true, x113, y94, xs36) -> true if2'(false, x126, y105, cons(y41, z7)) -> if2'(eq(x126, y41), x126, y41, z7) if2'(false, x126, y105, nil) -> false del'(x139, nil) -> false equal_bool(eq(x50, y41), true) -> true | del'(x50, cons(y41, z7)) -> true equal_bool(eq(x50, y41), true) -> false | del'(x50, cons(y41, z7)) -> del'(x50, z7) min(x, nil) -> x equal_bool(le(x11, y8), true) -> true | min(x11, cons(y8, z'')) -> min(x11, z'') equal_bool(le(x11, y8), true) -> false | min(x11, cons(y8, z'')) -> min(y8, z'') eq(0, 0) -> true eq(0, s(y62)) -> false eq(s(x87), 0) -> false eq(s(x100), s(y83)) -> eq(x100, y83) if2(true, x113, y94, xs36) -> xs36 if2(false, x126, y105, cons(y41, z7)) -> cons(y105, if2(eq(x126, y41), x126, y41, z7)) if2(false, x126, y105, nil) -> cons(y105, nil) del(x139, nil) -> nil equal_bool(eq(x50, y41), true) -> true | del(x50, cons(y41, z7)) -> z7 equal_bool(eq(x50, y41), true) -> false | del(x50, cons(y41, z7)) -> cons(y41, del(x50, z7)) le(0, y126) -> true le(s(x164), 0) -> false le(s(x177), s(y147)) -> le(x177, y147) if1(true, x24, y19, nil) -> x24 if1(true, x24, y19, cons(y8, z'')) -> if1(le(x24, y8), x24, y8, z'') if1(false, x37, y30, nil) -> y30 if1(false, x37, y30, cons(y8, z'')) -> if1(le(y30, y8), y30, y8, z'') using the following formula: x:sort[a0],y:sort[a32].del'(min(x, y), cons(x, y))=true could be successfully shown: (0) Formula (1) Conditional Evaluation [EQUIVALENT] (2) AND (3) Formula (4) Symbolic evaluation [EQUIVALENT] (5) YES (6) Formula (7) Hypothesis Lifting [EQUIVALENT] (8) Formula (9) Induction by algorithm [EQUIVALENT] (10) AND (11) Formula (12) Symbolic evaluation [EQUIVALENT] (13) Formula (14) Induction by data structure [EQUIVALENT] (15) AND (16) Formula (17) Symbolic evaluation [EQUIVALENT] (18) YES (19) Formula (20) Symbolic evaluation under hypothesis [EQUIVALENT] (21) YES (22) Formula (23) Conditional Evaluation [EQUIVALENT] (24) Formula (25) Conditional Evaluation [EQUIVALENT] (26) Formula (27) Conditional Evaluation [EQUIVALENT] (28) AND (29) Formula (30) Symbolic evaluation [EQUIVALENT] (31) YES (32) Formula (33) Symbolic evaluation under hypothesis [EQUIVALENT] (34) YES (35) Formula (36) Conditional Evaluation [EQUIVALENT] (37) Formula (38) Conditional Evaluation [EQUIVALENT] (39) Formula (40) Conditional Evaluation [EQUIVALENT] (41) AND (42) Formula (43) Symbolic evaluation [EQUIVALENT] (44) YES (45) Formula (46) Symbolic evaluation under hypothesis [EQUIVALENT] (47) YES ---------------------------------------- (0) Obligation: Formula: x:sort[a0],y:sort[a32].del'(min(x, y), cons(x, y))=true There are no hypotheses. ---------------------------------------- (1) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: true=true Hypotheses: x:sort[a0],y:sort[a32].equal_bool(eq(min(x, y), x), true)=true Formula: x:sort[a0],y:sort[a32].del'(min(x, y), y)=true Hypotheses: x:sort[a0],y:sort[a32].equal_bool(eq(min(x, y), x), true)=false ---------------------------------------- (2) Complex Obligation (AND) ---------------------------------------- (3) Obligation: Formula: true=true Hypotheses: x:sort[a0],y:sort[a32].equal_bool(eq(min(x, y), x), true)=true ---------------------------------------- (4) Symbolic evaluation (EQUIVALENT) Could be reduced to the following new obligation by simple symbolic evaluation: True ---------------------------------------- (5) YES ---------------------------------------- (6) Obligation: Formula: x:sort[a0],y:sort[a32].del'(min(x, y), y)=true Hypotheses: x:sort[a0],y:sort[a32].equal_bool(eq(min(x, y), x), true)=false ---------------------------------------- (7) Hypothesis Lifting (EQUIVALENT) Formula could be generalised by hypothesis lifting to the following new obligation: Formula: x:sort[a0],y:sort[a32].(equal_bool(eq(min(x, y), x), true)=false->del'(min(x, y), y)=true) There are no hypotheses. ---------------------------------------- (8) Obligation: Formula: x:sort[a0],y:sort[a32].(equal_bool(eq(min(x, y), x), true)=false->del'(min(x, y), y)=true) There are no hypotheses. ---------------------------------------- (9) Induction by algorithm (EQUIVALENT) Induction by algorithm min(x, y) generates the following cases: 1. Base Case: Formula: x':sort[a0].(equal_bool(eq(min(x', nil), x'), true)=false->del'(min(x', nil), nil)=true) There are no hypotheses. 1. Step Case: Formula: x11:sort[a0],y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, cons(y8, z'')), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true 2. Step Case: Formula: x11:sort[a0],y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, cons(y8, z'')), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false ---------------------------------------- (10) Complex Obligation (AND) ---------------------------------------- (11) Obligation: Formula: x':sort[a0].(equal_bool(eq(min(x', nil), x'), true)=false->del'(min(x', nil), nil)=true) There are no hypotheses. ---------------------------------------- (12) Symbolic evaluation (EQUIVALENT) Could be reduced to the following new obligation by simple symbolic evaluation: x':sort[a0].~(equal_bool(eq(x', x'), true)=false) ---------------------------------------- (13) Obligation: Formula: x':sort[a0].~(equal_bool(eq(x', x'), true)=false) There are no hypotheses. ---------------------------------------- (14) Induction by data structure (EQUIVALENT) Induction by data structure sort[a0] generates the following cases: 1. Base Case: Formula: ~(equal_bool(eq(0, 0), true)=false) There are no hypotheses. 1. Step Case: Formula: n:sort[a0].~(equal_bool(eq(s(n), s(n)), true)=false) Hypotheses: n:sort[a0].~(equal_bool(eq(n, n), true)=false) ---------------------------------------- (15) Complex Obligation (AND) ---------------------------------------- (16) Obligation: Formula: ~(equal_bool(eq(0, 0), true)=false) There are no hypotheses. ---------------------------------------- (17) Symbolic evaluation (EQUIVALENT) Could be reduced to the following new obligation by simple symbolic evaluation: True ---------------------------------------- (18) YES ---------------------------------------- (19) Obligation: Formula: n:sort[a0].~(equal_bool(eq(s(n), s(n)), true)=false) Hypotheses: n:sort[a0].~(equal_bool(eq(n, n), true)=false) ---------------------------------------- (20) Symbolic evaluation under hypothesis (EQUIVALENT) Could be shown using symbolic evaluation under hypothesis, by using the following hypotheses: n:sort[a0].~(equal_bool(eq(n, n), true)=false) ---------------------------------------- (21) YES ---------------------------------------- (22) Obligation: Formula: x11:sort[a0],y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, cons(y8, z'')), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true ---------------------------------------- (23) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: x11:sort[a0],z'':sort[a32],y8:sort[a0].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true ---------------------------------------- (24) Obligation: Formula: x11:sort[a0],z'':sort[a32],y8:sort[a0].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true ---------------------------------------- (25) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: x11:sort[a0],z'':sort[a32],y8:sort[a0].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), cons(y8, z''))=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true ---------------------------------------- (26) Obligation: Formula: x11:sort[a0],z'':sort[a32],y8:sort[a0].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), cons(y8, z''))=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true ---------------------------------------- (27) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->true=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true x11:sort[a0],z'':sort[a32],y8:sort[a0].equal_bool(eq(min(x11, z''), y8), true)=true Formula: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true x11:sort[a0],z'':sort[a32],y8:sort[a0].equal_bool(eq(min(x11, z''), y8), true)=false ---------------------------------------- (28) Complex Obligation (AND) ---------------------------------------- (29) Obligation: Formula: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->true=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true x11:sort[a0],z'':sort[a32],y8:sort[a0].equal_bool(eq(min(x11, z''), y8), true)=true ---------------------------------------- (30) Symbolic evaluation (EQUIVALENT) Could be reduced to the following new obligation by simple symbolic evaluation: True ---------------------------------------- (31) YES ---------------------------------------- (32) Obligation: Formula: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) Hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=true x11:sort[a0],z'':sort[a32],y8:sort[a0].equal_bool(eq(min(x11, z''), y8), true)=false ---------------------------------------- (33) Symbolic evaluation under hypothesis (EQUIVALENT) Could be shown using symbolic evaluation under hypothesis, by using the following hypotheses: x11:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, z''), x11), true)=false->del'(min(x11, z''), z'')=true) ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: Formula: x11:sort[a0],y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(x11, cons(y8, z'')), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false ---------------------------------------- (36) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false ---------------------------------------- (37) Obligation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->del'(min(x11, cons(y8, z'')), cons(y8, z''))=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false ---------------------------------------- (38) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->del'(min(y8, z''), cons(y8, z''))=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false ---------------------------------------- (39) Obligation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->del'(min(y8, z''), cons(y8, z''))=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false ---------------------------------------- (40) Conditional Evaluation (EQUIVALENT) The formula could be reduced to the following new obligations by conditional evaluation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->true=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false y8:sort[a0],z'':sort[a32].equal_bool(eq(min(y8, z''), y8), true)=true Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->del'(min(y8, z''), z'')=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false y8:sort[a0],z'':sort[a32].equal_bool(eq(min(y8, z''), y8), true)=false ---------------------------------------- (41) Complex Obligation (AND) ---------------------------------------- (42) Obligation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->true=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false y8:sort[a0],z'':sort[a32].equal_bool(eq(min(y8, z''), y8), true)=true ---------------------------------------- (43) Symbolic evaluation (EQUIVALENT) Could be reduced to the following new obligation by simple symbolic evaluation: True ---------------------------------------- (44) YES ---------------------------------------- (45) Obligation: Formula: y8:sort[a0],z'':sort[a32],x11:sort[a0].(equal_bool(eq(min(y8, z''), x11), true)=false->del'(min(y8, z''), z'')=true) Hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) x11:sort[a0],y8:sort[a0].equal_bool(le(x11, y8), true)=false y8:sort[a0],z'':sort[a32].equal_bool(eq(min(y8, z''), y8), true)=false ---------------------------------------- (46) Symbolic evaluation under hypothesis (EQUIVALENT) Could be shown using symbolic evaluation under hypothesis, by using the following hypotheses: y8:sort[a0],z'':sort[a32].(equal_bool(eq(min(y8, z''), y8), true)=false->del'(min(y8, z''), z'')=true) y8:sort[a0],z'':sort[a32].equal_bool(eq(min(y8, z''), y8), true)=false ---------------------------------------- (47) YES
min(x, nil) → x
min(x, cons(y, z)) → if1(le(x, y), x, y, z)
if1(true, x, y, xs) → min(x, xs)
if1(false, x, y, xs) → min(y, xs)
del(x, cons(y, z)) → if2(eq(x, y), x, y, z)
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, del(x, xs))
del(x, nil) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
min(x0, nil)
min(x0, cons(x1, x2))
del(x0, nil)
del(x0, cons(x1, x2))
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
DEL'(x50, cons(y41, z7)) → IF2'(eq(x50, y41), x50, y41, z7)
DEL'(x50, cons(y41, z7)) → EQ(x50, y41)
IF2'(false, x126, y105, xs41) → DEL'(x126, xs41)
MIN(x11, cons(y8, z'')) → IF1(le(x11, y8), x11, y8, z'')
MIN(x11, cons(y8, z'')) → LE(x11, y8)
IF1(true, x24, y19, xs6) → MIN(x24, xs6)
IF1(false, x37, y30, xs11) → MIN(y30, xs11)
DEL(x50, cons(y41, z7)) → IF2(eq(x50, y41), x50, y41, z7)
DEL(x50, cons(y41, z7)) → EQ(x50, y41)
EQ(s(x100), s(y83)) → EQ(x100, y83)
IF2(false, x126, y105, xs41) → DEL(x126, xs41)
LE(s(x177), s(y147)) → LE(x177, y147)
EQUAL_SORT[A0](s(x0), s(x1)) → EQUAL_SORT[A0](x0, x1)
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → AND(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x0, x2)
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x1, x3)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x1, x3)
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x0, x2)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x1, x3)
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x0, x2)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x1, x3)
EQUAL_SORT[A32](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A32](x0, x2)
From the DPs we obtained the following set of size-change graphs:
EQUAL_SORT[A0](s(x0), s(x1)) → EQUAL_SORT[A0](x0, x1)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQUAL_SORT[A0](s(x0), s(x1)) → EQUAL_SORT[A0](x0, x1)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQUAL_SORT[A0](s(x0), s(x1)) → EQUAL_SORT[A0](x0, x1)
From the DPs we obtained the following set of size-change graphs:
LE(s(x177), s(y147)) → LE(x177, y147)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
LE(s(x177), s(y147)) → LE(x177, y147)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
LE(s(x177), s(y147)) → LE(x177, y147)
From the DPs we obtained the following set of size-change graphs:
EQ(s(x100), s(y83)) → EQ(x100, y83)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQ(s(x100), s(y83)) → EQ(x100, y83)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
EQ(s(x100), s(y83)) → EQ(x100, y83)
From the DPs we obtained the following set of size-change graphs:
IF2(false, x126, y105, xs41) → DEL(x126, xs41)
DEL(x50, cons(y41, z7)) → IF2(eq(x50, y41), x50, y41, z7)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
IF2(false, x126, y105, xs41) → DEL(x126, xs41)
DEL(x50, cons(y41, z7)) → IF2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
IF2(false, x126, y105, xs41) → DEL(x126, xs41)
DEL(x50, cons(y41, z7)) → IF2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
From the DPs we obtained the following set of size-change graphs:
IF1(true, x24, y19, xs6) → MIN(x24, xs6)
MIN(x11, cons(y8, z'')) → IF1(le(x11, y8), x11, y8, z'')
IF1(false, x37, y30, xs11) → MIN(y30, xs11)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
IF1(true, x24, y19, xs6) → MIN(x24, xs6)
MIN(x11, cons(y8, z'')) → IF1(le(x11, y8), x11, y8, z'')
IF1(false, x37, y30, xs11) → MIN(y30, xs11)
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
IF1(true, x24, y19, xs6) → MIN(x24, xs6)
MIN(x11, cons(y8, z'')) → IF1(le(x11, y8), x11, y8, z'')
IF1(false, x37, y30, xs11) → MIN(y30, xs11)
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
From the DPs we obtained the following set of size-change graphs:
IF2'(false, x126, y105, xs41) → DEL'(x126, xs41)
DEL'(x50, cons(y41, z7)) → IF2'(eq(x50, y41), x50, y41, z7)
del'(x50, cons(y41, z7)) → if2'(eq(x50, y41), x50, y41, z7)
if2'(true, x113, y94, xs36) → true
if2'(false, x126, y105, xs41) → del'(x126, xs41)
del'(x139, nil) → false
min(x, nil) → x
min(x11, cons(y8, z'')) → if1(le(x11, y8), x11, y8, z'')
if1(true, x24, y19, xs6) → min(x24, xs6)
if1(false, x37, y30, xs11) → min(y30, xs11)
del(x50, cons(y41, z7)) → if2(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
if2(true, x113, y94, xs36) → xs36
if2(false, x126, y105, xs41) → cons(y105, del(x126, xs41))
del(x139, nil) → nil
le(0, y126) → true
le(s(x164), 0) → false
le(s(x177), s(y147)) → le(x177, y147)
equal_bool(true, false) → false
equal_bool(false, true) → false
equal_bool(true, true) → true
equal_bool(false, false) → true
and(true, x) → x
and(false, x) → false
or(true, x) → true
or(false, x) → x
not(false) → true
not(true) → false
isa_true(true) → true
isa_true(false) → false
isa_false(true) → false
isa_false(false) → true
equal_sort[a0](0, 0) → true
equal_sort[a0](0, s(x0)) → false
equal_sort[a0](s(x0), 0) → false
equal_sort[a0](s(x0), s(x1)) → equal_sort[a0](x0, x1)
equal_sort[a32](nil, nil) → true
equal_sort[a32](nil, cons(x0, x1)) → false
equal_sort[a32](cons(x0, x1), nil) → false
equal_sort[a32](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a32](x0, x2), equal_sort[a32](x1, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61]) → true
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
IF2'(false, x126, y105, xs41) → DEL'(x126, xs41)
DEL'(x50, cons(y41, z7)) → IF2'(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
del'(x0, nil)
min(x0, nil)
min(x0, cons(x1, x2))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
del(x0, nil)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
equal_bool(true, false)
equal_bool(false, true)
equal_bool(true, true)
equal_bool(false, false)
and(true, x0)
and(false, x0)
or(true, x0)
or(false, x0)
not(false)
not(true)
isa_true(true)
isa_true(false)
isa_false(true)
isa_false(false)
equal_sort[a0](0, 0)
equal_sort[a0](0, s(x0))
equal_sort[a0](s(x0), 0)
equal_sort[a0](s(x0), s(x1))
equal_sort[a32](nil, nil)
equal_sort[a32](nil, cons(x0, x1))
equal_sort[a32](cons(x0, x1), nil)
equal_sort[a32](cons(x0, x1), cons(x2, x3))
equal_sort[a61](witness_sort[a61], witness_sort[a61])
IF2'(false, x126, y105, xs41) → DEL'(x126, xs41)
DEL'(x50, cons(y41, z7)) → IF2'(eq(x50, y41), x50, y41, z7)
eq(0, 0) → true
eq(0, s(y62)) → false
eq(s(x87), 0) → false
eq(s(x100), s(y83)) → eq(x100, y83)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
From the DPs we obtained the following set of size-change graphs: