(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
0(#) → #
+(x, #) → x
+(#, x) → x
+(0(x), 0(y)) → 0(+(x, y))
+(0(x), 1(y)) → 1(+(x, y))
+(1(x), 0(y)) → 1(+(x, y))
+(1(x), 1(y)) → 0(+(+(x, y), 1(#)))
+(x, +(y, z)) → +(+(x, y), z)
-(x, #) → x
-(#, x) → #
-(0(x), 0(y)) → 0(-(x, y))
-(0(x), 1(y)) → 1(-(-(x, y), 1(#)))
-(1(x), 0(y)) → 1(-(x, y))
-(1(x), 1(y)) → 0(-(x, y))
not(false) → true
not(true) → false
and(x, true) → x
and(x, false) → false
if(true, x, y) → x
if(false, x, y) → y
ge(0(x), 0(y)) → ge(x, y)
ge(0(x), 1(y)) → not(ge(y, x))
ge(1(x), 0(y)) → ge(x, y)
ge(1(x), 1(y)) → ge(x, y)
ge(x, #) → true
ge(#, 1(x)) → false
ge(#, 0(x)) → ge(#, x)
val(l(x)) → x
val(n(x, y, z)) → x
min(l(x)) → x
min(n(x, y, z)) → min(y)
max(l(x)) → x
max(n(x, y, z)) → max(z)
bs(l(x)) → true
bs(n(x, y, z)) → and(and(ge(x, max(y)), ge(min(z), x)), and(bs(y), bs(z)))
size(l(x)) → 1(#)
size(n(x, y, z)) → +(+(size(x), size(y)), 1(#))
wb(l(x)) → true
wb(n(x, y, z)) → and(if(ge(size(y), size(z)), ge(1(#), -(size(y), size(z))), ge(1(#), -(size(z), size(y)))), and(wb(y), wb(z)))
Rewrite Strategy: FULL
(1) RenamingProof (EQUIVALENT transformation)
Renamed function symbols to avoid clashes with predefined symbol.
(2) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
0(#) → #
+'(x, #) → x
+'(#, x) → x
+'(0(x), 0(y)) → 0(+'(x, y))
+'(0(x), 1(y)) → 1(+'(x, y))
+'(1(x), 0(y)) → 1(+'(x, y))
+'(1(x), 1(y)) → 0(+'(+'(x, y), 1(#)))
+'(x, +'(y, z)) → +'(+'(x, y), z)
-(x, #) → x
-(#, x) → #
-(0(x), 0(y)) → 0(-(x, y))
-(0(x), 1(y)) → 1(-(-(x, y), 1(#)))
-(1(x), 0(y)) → 1(-(x, y))
-(1(x), 1(y)) → 0(-(x, y))
not(false) → true
not(true) → false
and(x, true) → x
and(x, false) → false
if(true, x, y) → x
if(false, x, y) → y
ge(0(x), 0(y)) → ge(x, y)
ge(0(x), 1(y)) → not(ge(y, x))
ge(1(x), 0(y)) → ge(x, y)
ge(1(x), 1(y)) → ge(x, y)
ge(x, #) → true
ge(#, 1(x)) → false
ge(#, 0(x)) → ge(#, x)
val(l(x)) → x
val(n(x, y, z)) → x
min(l(x)) → x
min(n(x, y, z)) → min(y)
max(l(x)) → x
max(n(x, y, z)) → max(z)
bs(l(x)) → true
bs(n(x, y, z)) → and(and(ge(x, max(y)), ge(min(z), x)), and(bs(y), bs(z)))
size(l(x)) → 1(#)
size(n(x, y, z)) → +'(+'(size(x), size(y)), 1(#))
wb(l(x)) → true
wb(n(x, y, z)) → and(if(ge(size(y), size(z)), ge(1(#), -(size(y), size(z))), ge(1(#), -(size(z), size(y)))), and(wb(y), wb(z)))
S is empty.
Rewrite Strategy: FULL
(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(4) Obligation:
TRS:
Rules:
0(#) → #
+'(x, #) → x
+'(#, x) → x
+'(0(x), 0(y)) → 0(+'(x, y))
+'(0(x), 1(y)) → 1(+'(x, y))
+'(1(x), 0(y)) → 1(+'(x, y))
+'(1(x), 1(y)) → 0(+'(+'(x, y), 1(#)))
+'(x, +'(y, z)) → +'(+'(x, y), z)
-(x, #) → x
-(#, x) → #
-(0(x), 0(y)) → 0(-(x, y))
-(0(x), 1(y)) → 1(-(-(x, y), 1(#)))
-(1(x), 0(y)) → 1(-(x, y))
-(1(x), 1(y)) → 0(-(x, y))
not(false) → true
not(true) → false
and(x, true) → x
and(x, false) → false
if(true, x, y) → x
if(false, x, y) → y
ge(0(x), 0(y)) → ge(x, y)
ge(0(x), 1(y)) → not(ge(y, x))
ge(1(x), 0(y)) → ge(x, y)
ge(1(x), 1(y)) → ge(x, y)
ge(x, #) → true
ge(#, 1(x)) → false
ge(#, 0(x)) → ge(#, x)
val(l(x)) → x
val(n(x, y, z)) → x
min(l(x)) → x
min(n(x, y, z)) → min(y)
max(l(x)) → x
max(n(x, y, z)) → max(z)
bs(l(x)) → true
bs(n(x, y, z)) → and(and(ge(x, max(y)), ge(min(z), x)), and(bs(y), bs(z)))
size(l(x)) → 1(#)
size(n(x, y, z)) → +'(+'(size(x), size(y)), 1(#))
wb(l(x)) → true
wb(n(x, y, z)) → and(if(ge(size(y), size(z)), ge(1(#), -(size(y), size(z))), ge(1(#), -(size(z), size(y)))), and(wb(y), wb(z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
(5) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
+',
-,
ge,
min,
max,
bs,
size,
wbThey will be analysed ascendingly in the following order:
+' < size
- < wb
ge < bs
ge < wb
min < bs
max < bs
size < wb
(6) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
+', -, ge, min, max, bs, size, wb
They will be analysed ascendingly in the following order:
+' < size
- < wb
ge < bs
ge < wb
min < bs
max < bs
size < wb
(7) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
+'(
gen_#:1:l:n3_2(
+(
1,
n5_2)),
gen_#:1:l:n3_2(
+(
1,
n5_2))) →
*4_2, rt ∈ Ω(n5
2)
Induction Base:
+'(gen_#:1:l:n3_2(+(1, 0)), gen_#:1:l:n3_2(+(1, 0)))
Induction Step:
+'(gen_#:1:l:n3_2(+(1, +(n5_2, 1))), gen_#:1:l:n3_2(+(1, +(n5_2, 1)))) →RΩ(1)
0(+'(+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))), 1(#))) →IH
0(+'(*4_2, 1(#)))
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(8) Complex Obligation (BEST)
(9) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
-, ge, min, max, bs, size, wb
They will be analysed ascendingly in the following order:
- < wb
ge < bs
ge < wb
min < bs
max < bs
size < wb
(10) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
-(
gen_#:1:l:n3_2(
n365471_2),
gen_#:1:l:n3_2(
n365471_2)) →
gen_#:1:l:n3_2(
0), rt ∈ Ω(1 + n365471
2)
Induction Base:
-(gen_#:1:l:n3_2(0), gen_#:1:l:n3_2(0)) →RΩ(1)
gen_#:1:l:n3_2(0)
Induction Step:
-(gen_#:1:l:n3_2(+(n365471_2, 1)), gen_#:1:l:n3_2(+(n365471_2, 1))) →RΩ(1)
0(-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2))) →IH
0(gen_#:1:l:n3_2(0)) →RΩ(1)
#
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(11) Complex Obligation (BEST)
(12) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
ge, min, max, bs, size, wb
They will be analysed ascendingly in the following order:
ge < bs
ge < wb
min < bs
max < bs
size < wb
(13) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
ge(
gen_#:1:l:n3_2(
n367605_2),
gen_#:1:l:n3_2(
n367605_2)) →
true, rt ∈ Ω(1 + n367605
2)
Induction Base:
ge(gen_#:1:l:n3_2(0), gen_#:1:l:n3_2(0)) →RΩ(1)
true
Induction Step:
ge(gen_#:1:l:n3_2(+(n367605_2, 1)), gen_#:1:l:n3_2(+(n367605_2, 1))) →RΩ(1)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) →IH
true
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(14) Complex Obligation (BEST)
(15) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
min, max, bs, size, wb
They will be analysed ascendingly in the following order:
min < bs
max < bs
size < wb
(16) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol min.
(17) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
max, bs, size, wb
They will be analysed ascendingly in the following order:
max < bs
size < wb
(18) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol max.
(19) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
bs, size, wb
They will be analysed ascendingly in the following order:
size < wb
(20) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol bs.
(21) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
size, wb
They will be analysed ascendingly in the following order:
size < wb
(22) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol size.
(23) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
wb
(24) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol wb.
(25) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(26) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
(27) BOUNDS(n^1, INF)
(28) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
ge(gen_#:1:l:n3_2(n367605_2), gen_#:1:l:n3_2(n367605_2)) → true, rt ∈ Ω(1 + n3676052)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(29) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
(30) BOUNDS(n^1, INF)
(31) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
-(gen_#:1:l:n3_2(n365471_2), gen_#:1:l:n3_2(n365471_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3654712)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(32) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
(33) BOUNDS(n^1, INF)
(34) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(35) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
+'(gen_#:1:l:n3_2(+(1, n5_2)), gen_#:1:l:n3_2(+(1, n5_2))) → *4_2, rt ∈ Ω(n52)
(36) BOUNDS(n^1, INF)