(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: 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:

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: INNERMOST

(3) SlicingProof (LOWER BOUND(ID) transformation)

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

(4) 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: INNERMOST

(5) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)

Infered types.

(6) Obligation:

Innermost 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

(7) 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

(8) Obligation:

Innermost 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

(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

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

(10) Obligation:

Innermost 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

(11) 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).

(12) Complex Obligation (BEST)

(13) Obligation:

Innermost 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

(14) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

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

(15) Obligation:

Innermost 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.

(16) 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)

(17) BOUNDS(n^1, INF)

(18) Obligation:

Innermost 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.

(19) 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) BOUNDS(n^1, INF)