(0) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
Q is empty.
(1) Overlay + Local Confluence (EQUIVALENT transformation)
The TRS is overlay and locally confluent. By [NOC] we can switch to innermost.
(2) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
(3) DependencyPairsProof (EQUIVALENT transformation)
Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.
(4) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MAX(cons(x, cons(y, xs))) → IF1(ge(x, y), x, y, xs)
MAX(cons(x, cons(y, xs))) → GE(x, y)
IF1(true, x, y, xs) → MAX(cons(x, xs))
IF1(false, x, y, xs) → MAX(cons(y, xs))
DEL(x, cons(y, xs)) → IF2(eq(x, y), x, y, xs)
DEL(x, cons(y, xs)) → EQ(x, y)
IF2(false, x, y, xs) → DEL(x, xs)
EQ(s(x), s(y)) → EQ(x, y)
SORT(xs) → IF3(empty(xs), xs)
SORT(xs) → EMPTY(xs)
IF3(false, xs) → SORT(del(max(xs), xs))
IF3(false, xs) → DEL(max(xs), xs)
IF3(false, xs) → MAX(xs)
GE(s(x), s(y)) → GE(x, y)
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(5) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 5 SCCs with 5 less nodes.
(6) Complex Obligation (AND)
(7) Obligation:
Q DP problem:
The TRS P consists of the following rules:
GE(s(x), s(y)) → GE(x, y)
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(8) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(9) Obligation:
Q DP problem:
The TRS P consists of the following rules:
GE(s(x), s(y)) → GE(x, y)
R is empty.
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(10) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
(11) Obligation:
Q DP problem:
The TRS P consists of the following rules:
GE(s(x), s(y)) → GE(x, y)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(12) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- GE(s(x), s(y)) → GE(x, y)
The graph contains the following edges 1 > 1, 2 > 2
(13) YES
(14) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQ(s(x), s(y)) → EQ(x, y)
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(15) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(16) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQ(s(x), s(y)) → EQ(x, y)
R is empty.
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(17) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
(18) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQ(s(x), s(y)) → EQ(x, y)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(19) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- EQ(s(x), s(y)) → EQ(x, y)
The graph contains the following edges 1 > 1, 2 > 2
(20) YES
(21) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2(false, x, y, xs) → DEL(x, xs)
DEL(x, cons(y, xs)) → IF2(eq(x, y), x, y, xs)
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(22) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(23) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2(false, x, y, xs) → DEL(x, xs)
DEL(x, cons(y, xs)) → IF2(eq(x, y), x, y, xs)
The TRS R consists of the following rules:
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(24) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
(25) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2(false, x, y, xs) → DEL(x, xs)
DEL(x, cons(y, xs)) → IF2(eq(x, y), x, y, xs)
The TRS R consists of the following rules:
eq(0, 0) → true
eq(0, s(y)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
The set Q consists of the following terms:
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(26) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- DEL(x, cons(y, xs)) → IF2(eq(x, y), x, y, xs)
The graph contains the following edges 1 >= 2, 2 > 3, 2 > 4
- IF2(false, x, y, xs) → DEL(x, xs)
The graph contains the following edges 2 >= 1, 4 >= 2
(27) YES
(28) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x, y, xs) → MAX(cons(x, xs))
MAX(cons(x, cons(y, xs))) → IF1(ge(x, y), x, y, xs)
IF1(false, x, y, xs) → MAX(cons(y, xs))
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(29) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(30) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x, y, xs) → MAX(cons(x, xs))
MAX(cons(x, cons(y, xs))) → IF1(ge(x, y), x, y, xs)
IF1(false, x, y, xs) → MAX(cons(y, xs))
The TRS R consists of the following rules:
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(31) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
(32) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x, y, xs) → MAX(cons(x, xs))
MAX(cons(x, cons(y, xs))) → IF1(ge(x, y), x, y, xs)
IF1(false, x, y, xs) → MAX(cons(y, xs))
The TRS R consists of the following rules:
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(33) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04].
The following pairs can be oriented strictly and are deleted.
MAX(cons(x, cons(y, xs))) → IF1(ge(x, y), x, y, xs)
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(0) = 0
POL(IF1(x1, x2, x3, x4)) = 1 + x4
POL(MAX(x1)) = x1
POL(cons(x1, x2)) = 1 + x2
POL(false) = 0
POL(ge(x1, x2)) = 0
POL(s(x1)) = 0
POL(true) = 0
The following usable rules [FROCOS05] were oriented:
none
(34) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x, y, xs) → MAX(cons(x, xs))
IF1(false, x, y, xs) → MAX(cons(y, xs))
The TRS R consists of the following rules:
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(35) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.
(36) TRUE
(37) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF3(false, xs) → SORT(del(max(xs), xs))
SORT(xs) → IF3(empty(xs), xs)
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
if2(true, x, y, xs) → xs
if2(false, x, y, xs) → cons(y, 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)
sort(xs) → if3(empty(xs), xs)
if3(true, xs) → nil
if3(false, xs) → sort(del(max(xs), xs))
empty(nil) → true
empty(cons(x, xs)) → false
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(38) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(39) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF3(false, xs) → SORT(del(max(xs), xs))
SORT(xs) → IF3(empty(xs), xs)
The TRS R consists of the following rules:
empty(nil) → true
empty(cons(x, xs)) → false
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
sort(x0)
if3(true, x0)
if3(false, x0)
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(40) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
sort(x0)
if3(true, x0)
if3(false, x0)
(41) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF3(false, xs) → SORT(del(max(xs), xs))
SORT(xs) → IF3(empty(xs), xs)
The TRS R consists of the following rules:
empty(nil) → true
empty(cons(x, xs)) → false
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(42) Narrowing (EQUIVALENT transformation)
By narrowing [LPAR04] the rule
SORT(
xs) →
IF3(
empty(
xs),
xs) at position [0] we obtained the following new rules [LPAR04]:
SORT(nil) → IF3(true, nil)
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
(43) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF3(false, xs) → SORT(del(max(xs), xs))
SORT(nil) → IF3(true, nil)
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
The TRS R consists of the following rules:
empty(nil) → true
empty(cons(x, xs)) → false
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(44) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.
(45) Obligation:
Q DP problem:
The TRS P consists of the following rules:
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
IF3(false, xs) → SORT(del(max(xs), xs))
The TRS R consists of the following rules:
empty(nil) → true
empty(cons(x, xs)) → false
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(46) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(47) Obligation:
Q DP problem:
The TRS P consists of the following rules:
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
IF3(false, xs) → SORT(del(max(xs), xs))
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
empty(nil)
empty(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(48) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
empty(nil)
empty(cons(x0, x1))
(49) Obligation:
Q DP problem:
The TRS P consists of the following rules:
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
IF3(false, xs) → SORT(del(max(xs), xs))
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(50) Instantiation (EQUIVALENT transformation)
By instantiating [LPAR04] the rule
IF3(
false,
xs) →
SORT(
del(
max(
xs),
xs)) we obtained the following new rules [LPAR04]:
IF3(false, cons(z0, z1)) → SORT(del(max(cons(z0, z1)), cons(z0, z1)))
(51) Obligation:
Q DP problem:
The TRS P consists of the following rules:
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
IF3(false, cons(z0, z1)) → SORT(del(max(cons(z0, z1)), cons(z0, z1)))
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(52) Induction-Processor (SOUND transformation)
This DP could be deleted by the Induction-Processor:IF3(
false,
cons(
z0,
z1)) →
SORT(
del(
max(
cons(
z0,
z1)),
cons(
z0,
z1)))
This order was computed:Polynomial interpretation [POLO]:
POL(0) = 1
POL(IF3(x1, x2)) = x2
POL(SORT(x1)) = x1
POL(cons(x1, x2)) = 1 + x1 + x2
POL(del(x1, x2)) = x2
POL(eq(x1, x2)) = x2
POL(false) = 1
POL(ge(x1, x2)) = 1
POL(if1(x1, x2, x3, x4)) = 1 + x1 + x2 + x3 + x4
POL(if2(x1, x2, x3, x4)) = 1 + x3 + x4
POL(max(x1)) = 1 + x1
POL(nil) = 1
POL(s(x1)) = 1 + x1
POL(true) = 1
At least one of these decreasing rules is always used after the deleted DP:if2(
true,
x1499,
y1039,
xs689) →
xs689The following formula is valid:z2:sort[a34].(¬(
z2 =
nil)→
del'(
max(
z2 ),
z2 )=
true)
The transformed set:del'(
x67,
nil) →
falsedel'(
x81,
cons(
y55,
xs37)) →
if2'(
eq(
x81,
y55),
x81,
y55,
xs37)
if2'(
true,
x149,
y103,
xs68) →
trueif2'(
false,
x163,
y113,
xs75) →
del'(
x163,
xs75)
max(
nil) →
0max(
cons(
x11,
nil)) →
x11max(
cons(
x25,
cons(
y16,
xs10))) →
if1(
ge(
x25,
y16),
x25,
y16,
xs10)
if1(
true,
x39,
y26,
xs17) →
max(
cons(
x39,
xs17))
if1(
false,
x53,
y36,
xs24) →
max(
cons(
y36,
xs24))
del(
x67,
nil) →
nildel(
x81,
cons(
y55,
xs37)) →
if2(
eq(
x81,
y55),
x81,
y55,
xs37)
eq(
0,
0) →
trueeq(
0,
s(
y74)) →
falseeq(
s(
x121),
0) →
falseeq(
s(
x135),
s(
y93)) →
eq(
x135,
y93)
if2(
true,
x149,
y103,
xs68) →
xs68if2(
false,
x163,
y113,
xs75) →
cons(
y113,
del(
x163,
xs75))
ge(
x177,
0) →
truege(
0,
s(
x191)) →
falsege(
s(
x205),
s(
y141)) →
ge(
x205,
y141)
equal_bool(
true,
false) →
falseequal_bool(
false,
true) →
falseequal_bool(
true,
true) →
trueequal_bool(
false,
false) →
trueand(
true,
x) →
xand(
false,
x) →
falseor(
true,
x) →
trueor(
false,
x) →
xnot(
false) →
truenot(
true) →
falseisa_true(
true) →
trueisa_true(
false) →
falseisa_false(
true) →
falseisa_false(
false) →
trueequal_sort[a33](
0,
0) →
trueequal_sort[a33](
0,
s(
x0)) →
falseequal_sort[a33](
s(
x0),
0) →
falseequal_sort[a33](
s(
x0),
s(
x1)) →
equal_sort[a33](
x0,
x1)
equal_sort[a34](
nil,
nil) →
trueequal_sort[a34](
nil,
cons(
x0,
x1)) →
falseequal_sort[a34](
cons(
x0,
x1),
nil) →
falseequal_sort[a34](
cons(
x0,
x1),
cons(
x2,
x3)) →
and(
equal_sort[a34](
x0,
x2),
equal_sort[a34](
x1,
x3))
equal_sort[a63](
witness_sort[a63],
witness_sort[a63]) →
trueThe proof given by the theorem prover:The following program was given to the internal theorem prover:
[x, x0, x1, x2, x3, x67, x81, y55, xs37, x149, y103, xs68, x163, y113, x11, x25, y16, xs10, y74, x121, x135, y93, x177, x191, x205, y141, x39, y26, x53, y36, xs17, xs24]
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[a33](0, 0) -> true
equal_sort[a33](0, s(x0)) -> false
equal_sort[a33](s(x0), 0) -> false
equal_sort[a33](s(x0), s(x1)) -> equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) -> true
equal_sort[a34](nil, cons(x0, x1)) -> false
equal_sort[a34](cons(x0, x1), nil) -> false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) -> equal_sort[a34](x0, x2) and equal_sort[a34](x1, x3)
equal_sort[a63](witness_sort[a63], witness_sort[a63]) -> true
del'(x67, nil) -> false
equal_bool(eq(x81, y55), true) -> true | del'(x81, cons(y55, xs37)) -> true
equal_bool(eq(x81, y55), true) -> false | del'(x81, cons(y55, xs37)) -> del'(x81, xs37)
if2'(true, x149, y103, xs68) -> true
if2'(false, x163, y113, nil) -> false
if2'(false, x163, y113, cons(y55, xs37)) -> if2'(eq(x163, y55), x163, y55, xs37)
max(nil) -> 0
max(cons(x11, nil)) -> x11
equal_bool(ge(x25, y16), true) -> true | max(cons(x25, cons(y16, xs10))) -> max(cons(x25, xs10))
equal_bool(ge(x25, y16), true) -> false | max(cons(x25, cons(y16, xs10))) -> max(cons(y16, xs10))
del(x67, nil) -> nil
equal_bool(eq(x81, y55), true) -> true | del(x81, cons(y55, xs37)) -> xs37
equal_bool(eq(x81, y55), true) -> false | del(x81, cons(y55, xs37)) -> cons(y55, del(x81, xs37))
eq(0, 0) -> true
eq(0, s(y74)) -> false
eq(s(x121), 0) -> false
eq(s(x135), s(y93)) -> eq(x135, y93)
if2(true, x149, y103, xs68) -> xs68
if2(false, x163, y113, nil) -> cons(y113, nil)
if2(false, x163, y113, cons(y55, xs37)) -> cons(y113, if2(eq(x163, y55), x163, y55, xs37))
ge(x177, 0) -> true
ge(0, s(x191)) -> false
ge(s(x205), s(y141)) -> ge(x205, y141)
if1(true, x39, y26, nil) -> x39
if1(true, x39, y26, cons(y16, xs10)) -> if1(ge(x39, y16), x39, y16, xs10)
if1(false, x53, y36, nil) -> y36
if1(false, x53, y36, cons(y16, xs10)) -> if1(ge(y36, y16), y36, y16, xs10)
if1(true, x39, y26, xs17) -> 0
if1(false, x53, y36, xs24) -> 0
The following output was given by the internal theorem prover:
proof of internal
# AProVE Commit ID: 9a00b172b26c9abb2d4c4d5eaf341e919eb0fbf1 nowonder 20100222 unpublished dirty
Partial correctness of the following Program
[x, x0, x1, x2, x3, x67, x81, y55, xs37, x149, y103, xs68, x163, y113, x11, x25, y16, xs10, y74, x121, x135, y93, x177, x191, x205, y141, x39, y26, x53, y36, xs17, xs24]
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[a33](0, 0) -> true
equal_sort[a33](0, s(x0)) -> false
equal_sort[a33](s(x0), 0) -> false
equal_sort[a33](s(x0), s(x1)) -> equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) -> true
equal_sort[a34](nil, cons(x0, x1)) -> false
equal_sort[a34](cons(x0, x1), nil) -> false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) -> equal_sort[a34](x0, x2) and equal_sort[a34](x1, x3)
equal_sort[a63](witness_sort[a63], witness_sort[a63]) -> true
del'(x67, nil) -> false
equal_bool(eq(x81, y55), true) -> true | del'(x81, cons(y55, xs37)) -> true
equal_bool(eq(x81, y55), true) -> false | del'(x81, cons(y55, xs37)) -> del'(x81, xs37)
if2'(true, x149, y103, xs68) -> true
if2'(false, x163, y113, nil) -> false
if2'(false, x163, y113, cons(y55, xs37)) -> if2'(eq(x163, y55), x163, y55, xs37)
max(nil) -> 0
max(cons(x11, nil)) -> x11
equal_bool(ge(x25, y16), true) -> true | max(cons(x25, cons(y16, xs10))) -> max(cons(x25, xs10))
equal_bool(ge(x25, y16), true) -> false | max(cons(x25, cons(y16, xs10))) -> max(cons(y16, xs10))
del(x67, nil) -> nil
equal_bool(eq(x81, y55), true) -> true | del(x81, cons(y55, xs37)) -> xs37
equal_bool(eq(x81, y55), true) -> false | del(x81, cons(y55, xs37)) -> cons(y55, del(x81, xs37))
eq(0, 0) -> true
eq(0, s(y74)) -> false
eq(s(x121), 0) -> false
eq(s(x135), s(y93)) -> eq(x135, y93)
if2(true, x149, y103, xs68) -> xs68
if2(false, x163, y113, nil) -> cons(y113, nil)
if2(false, x163, y113, cons(y55, xs37)) -> cons(y113, if2(eq(x163, y55), x163, y55, xs37))
ge(x177, 0) -> true
ge(0, s(x191)) -> false
ge(s(x205), s(y141)) -> ge(x205, y141)
if1(true, x39, y26, nil) -> x39
if1(true, x39, y26, cons(y16, xs10)) -> if1(ge(x39, y16), x39, y16, xs10)
if1(false, x53, y36, nil) -> y36
if1(false, x53, y36, cons(y16, xs10)) -> if1(ge(y36, y16), y36, y16, xs10)
if1(true, x39, y26, xs17) -> 0
if1(false, x53, y36, xs24) -> 0
using the following formula:
z2:sort[a34].(~(z2=nil)->del'(max(z2), z2)=true)
could be successfully shown:
(0) Formula
(1) Induction by algorithm [EQUIVALENT]
(2) AND
(3) Formula
(4) Symbolic evaluation [EQUIVALENT]
(5) YES
(6) Formula
(7) Symbolic evaluation [EQUIVALENT]
(8) Formula
(9) Induction by data structure [EQUIVALENT]
(10) AND
(11) Formula
(12) Symbolic evaluation [EQUIVALENT]
(13) YES
(14) Formula
(15) Conditional Evaluation [EQUIVALENT]
(16) AND
(17) Formula
(18) Symbolic evaluation [EQUIVALENT]
(19) YES
(20) Formula
(21) Symbolic evaluation [EQUIVALENT]
(22) Formula
(23) Hypothesis Lifting [EQUIVALENT]
(24) Formula
(25) Symbolic evaluation under hypothesis [SOUND]
(26) Formula
(27) Hypothesis Lifting [EQUIVALENT]
(28) Formula
(29) Hypothesis Lifting [EQUIVALENT]
(30) Formula
(31) Conditional Evaluation [EQUIVALENT]
(32) AND
(33) Formula
(34) Symbolic evaluation under hypothesis [EQUIVALENT]
(35) YES
(36) Formula
(37) Symbolic evaluation [EQUIVALENT]
(38) YES
(39) Formula
(40) Symbolic evaluation [EQUIVALENT]
(41) Formula
(42) Conditional Evaluation [EQUIVALENT]
(43) Formula
(44) Conditional Evaluation [EQUIVALENT]
(45) AND
(46) Formula
(47) Symbolic evaluation [EQUIVALENT]
(48) YES
(49) Formula
(50) Conditional Evaluation [EQUIVALENT]
(51) AND
(52) Formula
(53) Symbolic evaluation [EQUIVALENT]
(54) YES
(55) Formula
(56) Hypothesis Lifting [EQUIVALENT]
(57) Formula
(58) Conditional Evaluation [EQUIVALENT]
(59) Formula
(60) Symbolic evaluation [EQUIVALENT]
(61) YES
(62) Formula
(63) Symbolic evaluation [EQUIVALENT]
(64) Formula
(65) Conditional Evaluation [EQUIVALENT]
(66) Formula
(67) Conditional Evaluation [EQUIVALENT]
(68) AND
(69) Formula
(70) Symbolic evaluation [EQUIVALENT]
(71) YES
(72) Formula
(73) Symbolic evaluation under hypothesis [EQUIVALENT]
(74) YES
----------------------------------------
(0)
Obligation:
Formula:
z2:sort[a34].(~(z2=nil)->del'(max(z2), z2)=true)
There are no hypotheses.
----------------------------------------
(1) Induction by algorithm (EQUIVALENT)
Induction by algorithm max(z2) generates the following cases:
1. Base Case:
Formula:
(~(nil=nil)->del'(max(nil), nil)=true)
There are no hypotheses.
2. Base Case:
Formula:
x11:sort[a33].(~(cons(x11, nil)=nil)->del'(max(cons(x11, nil)), cons(x11, nil))=true)
There are no hypotheses.
1. Step Case:
Formula:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].(~(cons(x25, cons(y16, xs10))=nil)->del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true)
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
2. Step Case:
Formula:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].(~(cons(x25, cons(y16, xs10))=nil)->del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true)
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
----------------------------------------
(2)
Complex Obligation (AND)
----------------------------------------
(3)
Obligation:
Formula:
(~(nil=nil)->del'(max(nil), nil)=true)
There are no hypotheses.
----------------------------------------
(4) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(5)
YES
----------------------------------------
(6)
Obligation:
Formula:
x11:sort[a33].(~(cons(x11, nil)=nil)->del'(max(cons(x11, nil)), cons(x11, nil))=true)
There are no hypotheses.
----------------------------------------
(7) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
x11:sort[a33].del'(x11, cons(x11, nil))=true
----------------------------------------
(8)
Obligation:
Formula:
x11:sort[a33].del'(x11, cons(x11, nil))=true
There are no hypotheses.
----------------------------------------
(9) Induction by data structure (EQUIVALENT)
Induction by data structure sort[a33] generates the following cases:
1. Base Case:
Formula:
del'(0, cons(0, nil))=true
There are no hypotheses.
1. Step Case:
Formula:
n:sort[a33].del'(s(n), cons(s(n), nil))=true
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
----------------------------------------
(10)
Complex Obligation (AND)
----------------------------------------
(11)
Obligation:
Formula:
del'(0, cons(0, nil))=true
There are no hypotheses.
----------------------------------------
(12) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(13)
YES
----------------------------------------
(14)
Obligation:
Formula:
n:sort[a33].del'(s(n), cons(s(n), nil))=true
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
----------------------------------------
(15) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
true=true
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=true
Formula:
n:sort[a33].del'(s(n), nil)=true
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=false
----------------------------------------
(16)
Complex Obligation (AND)
----------------------------------------
(17)
Obligation:
Formula:
true=true
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=true
----------------------------------------
(18) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(19)
YES
----------------------------------------
(20)
Obligation:
Formula:
n:sort[a33].del'(s(n), nil)=true
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=false
----------------------------------------
(21) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
False
----------------------------------------
(22)
Obligation:
Formula:
False
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=false
----------------------------------------
(23) Hypothesis Lifting (EQUIVALENT)
Formula could be generalised by hypothesis lifting to the following new obligation:
Formula:
n:sort[a33].((del'(n, cons(n, nil))=true/\equal_bool(eq(s(n), s(n)), true)=false)->False)
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=false
----------------------------------------
(24)
Obligation:
Formula:
n:sort[a33].((del'(n, cons(n, nil))=true/\equal_bool(eq(s(n), s(n)), true)=false)->False)
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=false
----------------------------------------
(25) Symbolic evaluation under hypothesis (SOUND)
Could be reduced by symbolic evaluation under hypothesis to:
n:sort[a33].~(equal_bool(eq(n, n), true)=false)
By using the following hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
----------------------------------------
(26)
Obligation:
Formula:
n:sort[a33].~(equal_bool(eq(n, n), true)=false)
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
n:sort[a33].equal_bool(eq(s(n), s(n)), true)=false
----------------------------------------
(27) Hypothesis Lifting (EQUIVALENT)
Formula could be generalised by hypothesis lifting to the following new obligation:
Formula:
n:sort[a33].(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false))
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
----------------------------------------
(28)
Obligation:
Formula:
n:sort[a33].(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false))
Hypotheses:
n:sort[a33].del'(n, cons(n, nil))=true
----------------------------------------
(29) Hypothesis Lifting (EQUIVALENT)
Formula could be generalised by hypothesis lifting to the following new obligation:
Formula:
n:sort[a33].(del'(n, cons(n, nil))=true->(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false)))
There are no hypotheses.
----------------------------------------
(30)
Obligation:
Formula:
n:sort[a33].(del'(n, cons(n, nil))=true->(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false)))
There are no hypotheses.
----------------------------------------
(31) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
n:sort[a33].(true=true->(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false)))
Hypotheses:
n:sort[a33].equal_bool(eq(n, n), true)=true
Formula:
n:sort[a33].(del'(n, nil)=true->(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false)))
Hypotheses:
n:sort[a33].equal_bool(eq(n, n), true)=false
----------------------------------------
(32)
Complex Obligation (AND)
----------------------------------------
(33)
Obligation:
Formula:
n:sort[a33].(true=true->(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false)))
Hypotheses:
n:sort[a33].equal_bool(eq(n, n), true)=true
----------------------------------------
(34) Symbolic evaluation under hypothesis (EQUIVALENT)
Could be shown using symbolic evaluation under hypothesis, by using the following hypotheses:
n:sort[a33].equal_bool(eq(n, n), true)=true
----------------------------------------
(35)
YES
----------------------------------------
(36)
Obligation:
Formula:
n:sort[a33].(del'(n, nil)=true->(equal_bool(eq(n, n), true)=false->~(equal_bool(eq(n, n), true)=false)))
Hypotheses:
n:sort[a33].equal_bool(eq(n, n), true)=false
----------------------------------------
(37) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(38)
YES
----------------------------------------
(39)
Obligation:
Formula:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].(~(cons(x25, cons(y16, xs10))=nil)->del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true)
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
----------------------------------------
(40) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true
----------------------------------------
(41)
Obligation:
Formula:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
----------------------------------------
(42) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
x25:sort[a33],xs10:sort[a34],y16:sort[a33].del'(max(cons(x25, xs10)), cons(x25, cons(y16, xs10)))=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
----------------------------------------
(43)
Obligation:
Formula:
x25:sort[a33],xs10:sort[a34],y16:sort[a33].del'(max(cons(x25, xs10)), cons(x25, cons(y16, xs10)))=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
----------------------------------------
(44) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
true=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=true
Formula:
x25:sort[a33],xs10:sort[a34],y16:sort[a33].del'(max(cons(x25, xs10)), cons(y16, xs10))=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
----------------------------------------
(45)
Complex Obligation (AND)
----------------------------------------
(46)
Obligation:
Formula:
true=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=true
----------------------------------------
(47) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(48)
YES
----------------------------------------
(49)
Obligation:
Formula:
x25:sort[a33],xs10:sort[a34],y16:sort[a33].del'(max(cons(x25, xs10)), cons(y16, xs10))=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
----------------------------------------
(50) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
true=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=true
Formula:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), xs10)=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=false
----------------------------------------
(51)
Complex Obligation (AND)
----------------------------------------
(52)
Obligation:
Formula:
true=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=true
----------------------------------------
(53) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(54)
YES
----------------------------------------
(55)
Obligation:
Formula:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), xs10)=true
Hypotheses:
x25:sort[a33],xs10:sort[a34].del'(max(cons(x25, xs10)), cons(x25, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=false
----------------------------------------
(56) Hypothesis Lifting (EQUIVALENT)
Formula could be generalised by hypothesis lifting to the following new obligation:
Formula:
x25:sort[a33],xs10:sort[a34].(del'(max(cons(x25, xs10)), cons(x25, xs10))=true->del'(max(cons(x25, xs10)), xs10)=true)
Hypotheses:
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=false
----------------------------------------
(57)
Obligation:
Formula:
x25:sort[a33],xs10:sort[a34].(del'(max(cons(x25, xs10)), cons(x25, xs10))=true->del'(max(cons(x25, xs10)), xs10)=true)
Hypotheses:
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=false
----------------------------------------
(58) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
x25:sort[a33],xs10:sort[a34].(del'(max(cons(x25, xs10)), xs10)=true->del'(max(cons(x25, xs10)), xs10)=true)
Hypotheses:
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=false
----------------------------------------
(59)
Obligation:
Formula:
x25:sort[a33],xs10:sort[a34].(del'(max(cons(x25, xs10)), xs10)=true->del'(max(cons(x25, xs10)), xs10)=true)
Hypotheses:
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=true
x25:sort[a33],xs10:sort[a34].equal_bool(eq(max(cons(x25, xs10)), x25), true)=false
x25:sort[a33],xs10:sort[a34],y16:sort[a33].equal_bool(eq(max(cons(x25, xs10)), y16), true)=false
----------------------------------------
(60) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(61)
YES
----------------------------------------
(62)
Obligation:
Formula:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].(~(cons(x25, cons(y16, xs10))=nil)->del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true)
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
----------------------------------------
(63) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true
----------------------------------------
(64)
Obligation:
Formula:
x25:sort[a33],y16:sort[a33],xs10:sort[a34].del'(max(cons(x25, cons(y16, xs10))), cons(x25, cons(y16, xs10)))=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
----------------------------------------
(65) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
y16:sort[a33],xs10:sort[a34],x25:sort[a33].del'(max(cons(y16, xs10)), cons(x25, cons(y16, xs10)))=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
----------------------------------------
(66)
Obligation:
Formula:
y16:sort[a33],xs10:sort[a34],x25:sort[a33].del'(max(cons(y16, xs10)), cons(x25, cons(y16, xs10)))=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
----------------------------------------
(67) Conditional Evaluation (EQUIVALENT)
The formula could be reduced to the following new obligations by conditional evaluation:
Formula:
true=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
y16:sort[a33],xs10:sort[a34],x25:sort[a33].equal_bool(eq(max(cons(y16, xs10)), x25), true)=true
Formula:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
y16:sort[a33],xs10:sort[a34],x25:sort[a33].equal_bool(eq(max(cons(y16, xs10)), x25), true)=false
----------------------------------------
(68)
Complex Obligation (AND)
----------------------------------------
(69)
Obligation:
Formula:
true=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
y16:sort[a33],xs10:sort[a34],x25:sort[a33].equal_bool(eq(max(cons(y16, xs10)), x25), true)=true
----------------------------------------
(70) Symbolic evaluation (EQUIVALENT)
Could be reduced to the following new obligation by simple symbolic evaluation:
True
----------------------------------------
(71)
YES
----------------------------------------
(72)
Obligation:
Formula:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
Hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
x25:sort[a33],y16:sort[a33].equal_bool(ge(x25, y16), true)=false
y16:sort[a33],xs10:sort[a34],x25:sort[a33].equal_bool(eq(max(cons(y16, xs10)), x25), true)=false
----------------------------------------
(73) Symbolic evaluation under hypothesis (EQUIVALENT)
Could be shown using symbolic evaluation under hypothesis, by using the following hypotheses:
y16:sort[a33],xs10:sort[a34].del'(max(cons(y16, xs10)), cons(y16, xs10))=true
----------------------------------------
(74)
YES
(53) Complex Obligation (AND)
(54) Obligation:
Q DP problem:
The TRS P consists of the following rules:
SORT(cons(x0, x1)) → IF3(false, cons(x0, x1))
The TRS R consists of the following rules:
max(nil) → 0
max(cons(x, nil)) → x
max(cons(x, cons(y, xs))) → if1(ge(x, y), x, y, xs)
if1(true, x, y, xs) → max(cons(x, xs))
if1(false, x, y, xs) → max(cons(y, xs))
del(x, nil) → nil
del(x, cons(y, xs)) → if2(eq(x, y), x, y, xs)
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))
ge(x, 0) → true
ge(0, s(x)) → false
ge(s(x), s(y)) → ge(x, y)
The set Q consists of the following terms:
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(55) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(56) TRUE
(57) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
Q is empty.
(58) Overlay + Local Confluence (EQUIVALENT transformation)
The TRS is overlay and locally confluent. By [NOC] we can switch to innermost.
(59) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(60) DependencyPairsProof (EQUIVALENT transformation)
Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.
(61) Obligation:
Q DP problem:
The TRS P consists of the following rules:
DEL'(x81, cons(y55, xs37)) → IF2'(eq(x81, y55), x81, y55, xs37)
DEL'(x81, cons(y55, xs37)) → EQ(x81, y55)
IF2'(false, x163, y113, xs75) → DEL'(x163, xs75)
MAX(cons(x25, cons(y16, xs10))) → IF1(ge(x25, y16), x25, y16, xs10)
MAX(cons(x25, cons(y16, xs10))) → GE(x25, y16)
IF1(true, x39, y26, xs17) → MAX(cons(x39, xs17))
IF1(false, x53, y36, xs24) → MAX(cons(y36, xs24))
DEL(x81, cons(y55, xs37)) → IF2(eq(x81, y55), x81, y55, xs37)
DEL(x81, cons(y55, xs37)) → EQ(x81, y55)
EQ(s(x135), s(y93)) → EQ(x135, y93)
IF2(false, x163, y113, xs75) → DEL(x163, xs75)
GE(s(x205), s(y141)) → GE(x205, y141)
EQUAL_SORT[A33](s(x0), s(x1)) → EQUAL_SORT[A33](x0, x1)
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → AND(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x0, x2)
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x1, x3)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(62) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 7 SCCs with 4 less nodes.
(63) Complex Obligation (AND)
(64) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x1, x3)
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x0, x2)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(65) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(66) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x1, x3)
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x0, x2)
R is empty.
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(67) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(68) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x1, x3)
EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x0, x2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(69) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x1, x3)
The graph contains the following edges 1 > 1, 2 > 2
- EQUAL_SORT[A34](cons(x0, x1), cons(x2, x3)) → EQUAL_SORT[A34](x0, x2)
The graph contains the following edges 1 > 1, 2 > 2
(70) YES
(71) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQUAL_SORT[A33](s(x0), s(x1)) → EQUAL_SORT[A33](x0, x1)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(72) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(73) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQUAL_SORT[A33](s(x0), s(x1)) → EQUAL_SORT[A33](x0, x1)
R is empty.
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(74) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(75) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQUAL_SORT[A33](s(x0), s(x1)) → EQUAL_SORT[A33](x0, x1)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(76) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- EQUAL_SORT[A33](s(x0), s(x1)) → EQUAL_SORT[A33](x0, x1)
The graph contains the following edges 1 > 1, 2 > 2
(77) YES
(78) Obligation:
Q DP problem:
The TRS P consists of the following rules:
GE(s(x205), s(y141)) → GE(x205, y141)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(79) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(80) Obligation:
Q DP problem:
The TRS P consists of the following rules:
GE(s(x205), s(y141)) → GE(x205, y141)
R is empty.
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(81) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(82) Obligation:
Q DP problem:
The TRS P consists of the following rules:
GE(s(x205), s(y141)) → GE(x205, y141)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(83) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- GE(s(x205), s(y141)) → GE(x205, y141)
The graph contains the following edges 1 > 1, 2 > 2
(84) YES
(85) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQ(s(x135), s(y93)) → EQ(x135, y93)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(86) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(87) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQ(s(x135), s(y93)) → EQ(x135, y93)
R is empty.
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(88) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(89) Obligation:
Q DP problem:
The TRS P consists of the following rules:
EQ(s(x135), s(y93)) → EQ(x135, y93)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(90) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- EQ(s(x135), s(y93)) → EQ(x135, y93)
The graph contains the following edges 1 > 1, 2 > 2
(91) YES
(92) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2(false, x163, y113, xs75) → DEL(x163, xs75)
DEL(x81, cons(y55, xs37)) → IF2(eq(x81, y55), x81, y55, xs37)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(93) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(94) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2(false, x163, y113, xs75) → DEL(x163, xs75)
DEL(x81, cons(y55, xs37)) → IF2(eq(x81, y55), x81, y55, xs37)
The TRS R consists of the following rules:
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(95) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(96) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2(false, x163, y113, xs75) → DEL(x163, xs75)
DEL(x81, cons(y55, xs37)) → IF2(eq(x81, y55), x81, y55, xs37)
The TRS R consists of the following rules:
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
The set Q consists of the following terms:
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(97) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- DEL(x81, cons(y55, xs37)) → IF2(eq(x81, y55), x81, y55, xs37)
The graph contains the following edges 1 >= 2, 2 > 3, 2 > 4
- IF2(false, x163, y113, xs75) → DEL(x163, xs75)
The graph contains the following edges 2 >= 1, 4 >= 2
(98) YES
(99) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x39, y26, xs17) → MAX(cons(x39, xs17))
MAX(cons(x25, cons(y16, xs10))) → IF1(ge(x25, y16), x25, y16, xs10)
IF1(false, x53, y36, xs24) → MAX(cons(y36, xs24))
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(100) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(101) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x39, y26, xs17) → MAX(cons(x39, xs17))
MAX(cons(x25, cons(y16, xs10))) → IF1(ge(x25, y16), x25, y16, xs10)
IF1(false, x53, y36, xs24) → MAX(cons(y36, xs24))
The TRS R consists of the following rules:
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(102) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(103) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF1(true, x39, y26, xs17) → MAX(cons(x39, xs17))
MAX(cons(x25, cons(y16, xs10))) → IF1(ge(x25, y16), x25, y16, xs10)
IF1(false, x53, y36, xs24) → MAX(cons(y36, xs24))
The TRS R consists of the following rules:
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
The set Q consists of the following terms:
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(104) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04].
The following pairs can be oriented strictly and are deleted.
IF1(true, x39, y26, xs17) → MAX(cons(x39, xs17))
IF1(false, x53, y36, xs24) → MAX(cons(y36, xs24))
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO]:
POL(IF1(x1, x2, x3, x4)) = | 1 | + | | · | x1 | + | | · | x2 | + | | · | x3 | + | | · | x4 |
POL(cons(x1, x2)) = | | + | | · | x1 | + | | · | x2 |
POL(ge(x1, x2)) = | | + | | · | x1 | + | | · | x2 |
The following usable rules [FROCOS05] were oriented:
none
(105) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MAX(cons(x25, cons(y16, xs10))) → IF1(ge(x25, y16), x25, y16, xs10)
The TRS R consists of the following rules:
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
The set Q consists of the following terms:
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(106) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(107) TRUE
(108) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2'(false, x163, y113, xs75) → DEL'(x163, xs75)
DEL'(x81, cons(y55, xs37)) → IF2'(eq(x81, y55), x81, y55, xs37)
The TRS R consists of the following rules:
del'(x67, nil) → false
del'(x81, cons(y55, xs37)) → if2'(eq(x81, y55), x81, y55, xs37)
if2'(true, x149, y103, xs68) → true
if2'(false, x163, y113, xs75) → del'(x163, xs75)
max(nil) → 0
max(cons(x11, nil)) → x11
max(cons(x25, cons(y16, xs10))) → if1(ge(x25, y16), x25, y16, xs10)
if1(true, x39, y26, xs17) → max(cons(x39, xs17))
if1(false, x53, y36, xs24) → max(cons(y36, xs24))
del(x67, nil) → nil
del(x81, cons(y55, xs37)) → if2(eq(x81, y55), x81, y55, xs37)
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
if2(true, x149, y103, xs68) → xs68
if2(false, x163, y113, xs75) → cons(y113, del(x163, xs75))
ge(x177, 0) → true
ge(0, s(x191)) → false
ge(s(x205), s(y141)) → ge(x205, y141)
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[a33](0, 0) → true
equal_sort[a33](0, s(x0)) → false
equal_sort[a33](s(x0), 0) → false
equal_sort[a33](s(x0), s(x1)) → equal_sort[a33](x0, x1)
equal_sort[a34](nil, nil) → true
equal_sort[a34](nil, cons(x0, x1)) → false
equal_sort[a34](cons(x0, x1), nil) → false
equal_sort[a34](cons(x0, x1), cons(x2, x3)) → and(equal_sort[a34](x0, x2), equal_sort[a34](x1, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63]) → true
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(109) UsableRulesProof (EQUIVALENT transformation)
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.
(110) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2'(false, x163, y113, xs75) → DEL'(x163, xs75)
DEL'(x81, cons(y55, xs37)) → IF2'(eq(x81, y55), x81, y55, xs37)
The TRS R consists of the following rules:
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
The set Q consists of the following terms:
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, 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))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
We have to consider all minimal (P,Q,R)-chains.
(111) QReductionProof (EQUIVALENT transformation)
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].
del'(x0, nil)
del'(x0, cons(x1, x2))
if2'(true, x0, x1, x2)
if2'(false, x0, x1, x2)
max(nil)
max(cons(x0, nil))
max(cons(x0, cons(x1, x2)))
if1(true, x0, x1, x2)
if1(false, x0, x1, x2)
del(x0, nil)
del(x0, cons(x1, x2))
if2(true, x0, x1, x2)
if2(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(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[a33](0, 0)
equal_sort[a33](0, s(x0))
equal_sort[a33](s(x0), 0)
equal_sort[a33](s(x0), s(x1))
equal_sort[a34](nil, nil)
equal_sort[a34](nil, cons(x0, x1))
equal_sort[a34](cons(x0, x1), nil)
equal_sort[a34](cons(x0, x1), cons(x2, x3))
equal_sort[a63](witness_sort[a63], witness_sort[a63])
(112) Obligation:
Q DP problem:
The TRS P consists of the following rules:
IF2'(false, x163, y113, xs75) → DEL'(x163, xs75)
DEL'(x81, cons(y55, xs37)) → IF2'(eq(x81, y55), x81, y55, xs37)
The TRS R consists of the following rules:
eq(0, 0) → true
eq(0, s(y74)) → false
eq(s(x121), 0) → false
eq(s(x135), s(y93)) → eq(x135, y93)
The set Q consists of the following terms:
eq(0, 0)
eq(0, s(x0))
eq(s(x0), 0)
eq(s(x0), s(x1))
We have to consider all minimal (P,Q,R)-chains.
(113) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- DEL'(x81, cons(y55, xs37)) → IF2'(eq(x81, y55), x81, y55, xs37)
The graph contains the following edges 1 >= 2, 2 > 3, 2 > 4
- IF2'(false, x163, y113, xs75) → DEL'(x163, xs75)
The graph contains the following edges 2 >= 1, 4 >= 2
(114) YES