(0) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
*(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
The (relative) TRS S consists of the following rules:
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
Rewrite Strategy: INNERMOST
(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:
*'(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*'(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
The (relative) TRS S consists of the following rules:
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
Rewrite Strategy: INNERMOST
(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(4) Obligation:
Innermost TRS:
Rules:
*'(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*'(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
(5) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
dyade,
dyade#1,
mult,
mult#1,
#add,
#natmultThey will be analysed ascendingly in the following order:
dyade = dyade#1
mult < dyade#1
mult = mult#1
#add < #natmult
(6) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
#add, dyade, dyade#1, mult, mult#1, #natmult
They will be analysed ascendingly in the following order:
dyade = dyade#1
mult < dyade#1
mult = mult#1
#add < #natmult
(7) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol #add.
(8) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
#natmult, dyade, dyade#1, mult, mult#1
They will be analysed ascendingly in the following order:
dyade = dyade#1
mult < dyade#1
mult = mult#1
(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol #natmult.
(10) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
mult#1, dyade, dyade#1, mult
They will be analysed ascendingly in the following order:
dyade = dyade#1
mult < dyade#1
mult = mult#1
(11) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
mult#1(
gen_:::nil:#0:#s:#neg:#pos2_3(
+(
1,
n112_3)),
gen_:::nil:#0:#s:#neg:#pos2_3(
b)) →
*3_3, rt ∈ Ω(n112
3)
Induction Base:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, 0)), gen_:::nil:#0:#s:#neg:#pos2_3(b))
Induction Step:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, +(n112_3, 1))), gen_:::nil:#0:#s:#neg:#pos2_3(b)) →RΩ(1)
::(*'(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)))) →RΩ(1)
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)))) →RΩ(1)
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b))) →IH
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), *3_3)
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(12) Complex Obligation (BEST)
(13) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n1123)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
mult, dyade, dyade#1
They will be analysed ascendingly in the following order:
dyade = dyade#1
mult < dyade#1
mult = mult#1
(14) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
mult(
gen_:::nil:#0:#s:#neg:#pos2_3(
a),
gen_:::nil:#0:#s:#neg:#pos2_3(
n1814224_3)) →
*3_3, rt ∈ Ω(n1814224
3)
Induction Base:
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(0))
Induction Step:
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(+(n1814224_3, 1))) →RΩ(1)
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(n1814224_3, 1)), gen_:::nil:#0:#s:#neg:#pos2_3(a)) →RΩ(1)
::(*'(gen_:::nil:#0:#s:#neg:#pos2_3(a), nil), mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3))) →RΩ(1)
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), nil), mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3))) →IH
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), nil), *3_3)
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(15) Complex Obligation (BEST)
(16) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n1123)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
mult#1, dyade, dyade#1
They will be analysed ascendingly in the following order:
dyade = dyade#1
mult < dyade#1
mult = mult#1
(17) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
mult#1(
gen_:::nil:#0:#s:#neg:#pos2_3(
+(
1,
n3572542_3)),
gen_:::nil:#0:#s:#neg:#pos2_3(
b)) →
*3_3, rt ∈ Ω(n3572542
3)
Induction Base:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, 0)), gen_:::nil:#0:#s:#neg:#pos2_3(b))
Induction Step:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, +(n3572542_3, 1))), gen_:::nil:#0:#s:#neg:#pos2_3(b)) →RΩ(1)
::(*'(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)))) →RΩ(1)
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)))) →RΩ(1)
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b))) →IH
::(#mult(gen_:::nil:#0:#s:#neg:#pos2_3(b), nil), *3_3)
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(18) Complex Obligation (BEST)
(19) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
dyade#1, dyade
They will be analysed ascendingly in the following order:
dyade = dyade#1
(20) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
dyade#1(
gen_:::nil:#0:#s:#neg:#pos2_3(
n5395010_3),
gen_:::nil:#0:#s:#neg:#pos2_3(
0)) →
gen_:::nil:#0:#s:#neg:#pos2_3(
n5395010_3), rt ∈ Ω(1 + n5395010
3)
Induction Base:
dyade#1(gen_:::nil:#0:#s:#neg:#pos2_3(0), gen_:::nil:#0:#s:#neg:#pos2_3(0)) →RΩ(1)
nil
Induction Step:
dyade#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(n5395010_3, 1)), gen_:::nil:#0:#s:#neg:#pos2_3(0)) →RΩ(1)
::(mult(nil, gen_:::nil:#0:#s:#neg:#pos2_3(0)), dyade(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0))) →RΩ(1)
::(mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(0), nil), dyade(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0))) →RΩ(1)
::(nil, dyade(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0))) →RΩ(1)
::(nil, dyade#1(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0))) →IH
::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(c5395011_3))
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(21) Complex Obligation (BEST)
(22) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
dyade#1(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0)) → gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), rt ∈ Ω(1 + n53950103)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
The following defined symbols remain to be analysed:
dyade
They will be analysed ascendingly in the following order:
dyade = dyade#1
(23) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol dyade.
(24) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
dyade#1(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0)) → gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), rt ∈ Ω(1 + n53950103)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
No more defined symbols left to analyse.
(25) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
(26) BOUNDS(n^1, INF)
(27) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
dyade#1(gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), gen_:::nil:#0:#s:#neg:#pos2_3(0)) → gen_:::nil:#0:#s:#neg:#pos2_3(n5395010_3), rt ∈ Ω(1 + n53950103)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
No more defined symbols left to analyse.
(28) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
(29) BOUNDS(n^1, INF)
(30) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
No more defined symbols left to analyse.
(31) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n3572542_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n35725423)
(32) BOUNDS(n^1, INF)
(33) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n1123)
mult(gen_:::nil:#0:#s:#neg:#pos2_3(a), gen_:::nil:#0:#s:#neg:#pos2_3(n1814224_3)) → *3_3, rt ∈ Ω(n18142243)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
No more defined symbols left to analyse.
(34) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n1123)
(35) BOUNDS(n^1, INF)
(36) Obligation:
Innermost TRS:
Rules:
*'(
@x,
@y) →
#mult(
@x,
@y)
dyade(
@l1,
@l2) →
dyade#1(
@l1,
@l2)
dyade#1(
::(
@x,
@xs),
@l2) →
::(
mult(
@x,
@l2),
dyade(
@xs,
@l2))
dyade#1(
nil,
@l2) →
nilmult(
@n,
@l) →
mult#1(
@l,
@n)
mult#1(
::(
@x,
@xs),
@n) →
::(
*'(
@n,
@x),
mult(
@n,
@xs))
mult#1(
nil,
@n) →
nil#add(
#0,
@y) →
@y#add(
#neg(
#s(
#0)),
@y) →
#pred(
@y)
#add(
#neg(
#s(
#s(
@x))),
@y) →
#pred(
#add(
#pos(
#s(
@x)),
@y))
#add(
#pos(
#s(
#0)),
@y) →
#succ(
@y)
#add(
#pos(
#s(
#s(
@x))),
@y) →
#succ(
#add(
#pos(
#s(
@x)),
@y))
#mult(
#0,
#0) →
#0#mult(
#0,
#neg(
@y)) →
#0#mult(
#0,
#pos(
@y)) →
#0#mult(
#neg(
@x),
#0) →
#0#mult(
#neg(
@x),
#neg(
@y)) →
#pos(
#natmult(
@x,
@y))
#mult(
#neg(
@x),
#pos(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#0) →
#0#mult(
#pos(
@x),
#neg(
@y)) →
#neg(
#natmult(
@x,
@y))
#mult(
#pos(
@x),
#pos(
@y)) →
#pos(
#natmult(
@x,
@y))
#natmult(
#0,
@y) →
#0#natmult(
#s(
@x),
@y) →
#add(
#pos(
@y),
#natmult(
@x,
@y))
#pred(
#0) →
#neg(
#s(
#0))
#pred(
#neg(
#s(
@x))) →
#neg(
#s(
#s(
@x)))
#pred(
#pos(
#s(
#0))) →
#0#pred(
#pos(
#s(
#s(
@x)))) →
#pos(
#s(
@x))
#succ(
#0) →
#pos(
#s(
#0))
#succ(
#neg(
#s(
#0))) →
#0#succ(
#neg(
#s(
#s(
@x)))) →
#neg(
#s(
@x))
#succ(
#pos(
#s(
@x))) →
#pos(
#s(
#s(
@x)))
Types:
*' :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
:: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
nil :: :::nil:#0:#s:#neg:#pos
mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#0 :: :::nil:#0:#s:#neg:#pos
#neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
#natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos
hole_:::nil:#0:#s:#neg:#pos1_3 :: :::nil:#0:#s:#neg:#pos
gen_:::nil:#0:#s:#neg:#pos2_3 :: Nat → :::nil:#0:#s:#neg:#pos
Lemmas:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n1123)
Generator Equations:
gen_:::nil:#0:#s:#neg:#pos2_3(0) ⇔ nil
gen_:::nil:#0:#s:#neg:#pos2_3(+(x, 1)) ⇔ ::(nil, gen_:::nil:#0:#s:#neg:#pos2_3(x))
No more defined symbols left to analyse.
(37) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
mult#1(gen_:::nil:#0:#s:#neg:#pos2_3(+(1, n112_3)), gen_:::nil:#0:#s:#neg:#pos2_3(b)) → *3_3, rt ∈ Ω(n1123)
(38) BOUNDS(n^1, INF)