### (0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

Rewrite Strategy: FULL

### (1) DecreasingLoopProof (EQUIVALENT transformation)

The following loop(s) give(s) rise to the lower bound Ω(n1):
The rewrite sequence
din(der(plus(X, Y))) →+ u21(din(der(X)), X, Y)
gives rise to a decreasing loop by considering the right hand sides subterm at position [0].
The pumping substitution is [X / plus(X, Y)].
The result substitution is [ ].

### (3) RenamingProof (EQUIVALENT transformation)

Renamed function symbols to avoid clashes with predefined symbol.

### (4) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

S is empty.
Rewrite Strategy: FULL

### (5) SlicingProof (LOWER BOUND(ID) transformation)

Sliced the following arguments:
u21/1
u22/1
u22/2
u41/1
u42/1
u42/2

### (6) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

S is empty.
Rewrite Strategy: FULL

Infered types.

### (8) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

### (9) OrderProof (LOWER BOUND(ID) transformation)

Heuristically decided to analyse the following defined symbols:
din, u41

They will be analysed ascendingly in the following order:
din = u41

### (10) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

The following defined symbols remain to be analysed:
u41, din

They will be analysed ascendingly in the following order:
din = u41

### (11) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol u41.

### (12) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

The following defined symbols remain to be analysed:
din

They will be analysed ascendingly in the following order:
din = u41

### (13) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)

Induction Base:
din(gen_plus:der:times3_0(+(2, 0)))

Induction Step:
din(gen_plus:der:times3_0(+(2, +(n29_0, 1)))) →RΩ(1)
u41(din(der(gen_plus:der:times3_0(+(1, n29_0))))) →IH
u41(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

### (15) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Lemmas:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

The following defined symbols remain to be analysed:
u41

They will be analysed ascendingly in the following order:
din = u41

### (16) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol u41.

### (17) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Lemmas:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

No more defined symbols left to analyse.

### (18) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)

### (20) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Lemmas:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

No more defined symbols left to analyse.

### (21) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)