(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 [ ].
(2) BOUNDS(n^1, INF)
(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) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(6) Obligation:
TRS:
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)
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 → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → plus:der:times → 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 → plus:der:times → dout
u42 :: dout → plus:der:times → plus:der:times → 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
(8) Obligation:
TRS:
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)
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 → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → plus:der:times → 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 → plus:der:times → dout
u42 :: dout → plus:der:times → plus:der:times → 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
(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol din.
(10) Obligation:
TRS:
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)
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 → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → plus:der:times → 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 → plus:der:times → dout
u42 :: dout → plus:der:times → plus:der:times → 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))
No more defined symbols left to analyse.