(0) Obligation:

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

h(f(f(x))) → h(f(g(f(x))))
f(g(f(x))) → f(f(x))

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

H(f(f(z0))) → c(H(f(g(f(z0)))), F(g(f(z0))), F(z0))
F(g(f(z0))) → c1(F(f(z0)), F(z0))
S tuples:

H(f(f(z0))) → c(H(f(g(f(z0)))), F(g(f(z0))), F(z0))
F(g(f(z0))) → c1(F(f(z0)), F(z0))
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

H, F

Compound Symbols:

c, c1

(3) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace H(f(f(z0))) → c(H(f(g(f(z0)))), F(g(f(z0))), F(z0)) by

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
H(f(f(x0))) → c

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

F(g(f(z0))) → c1(F(f(z0)), F(z0))
H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
H(f(f(x0))) → c
S tuples:

F(g(f(z0))) → c1(F(f(z0)), F(z0))
H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
H(f(f(x0))) → c
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

F, H

Compound Symbols:

c1, c, c

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

Removed 1 trailing nodes:

H(f(f(x0))) → c

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

F(g(f(z0))) → c1(F(f(z0)), F(z0))
H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
S tuples:

F(g(f(z0))) → c1(F(f(z0)), F(z0))
H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

F, H

Compound Symbols:

c1, c

(7) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace F(g(f(z0))) → c1(F(f(z0)), F(z0)) by

F(g(f(x0))) → c1(F(x0))

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
F(g(f(x0))) → c1(F(x0))
S tuples:

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
F(g(f(x0))) → c1(F(x0))
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

H, F

Compound Symbols:

c, c1

(9) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace F(g(f(x0))) → c1(F(x0)) by

F(g(f(g(f(y0))))) → c1(F(g(f(y0))))

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
F(g(f(g(f(y0))))) → c1(F(g(f(y0))))
S tuples:

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
F(g(f(g(f(y0))))) → c1(F(g(f(y0))))
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

H, F

Compound Symbols:

c, c1

(11) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

F(g(f(g(f(y0))))) → c1(F(g(f(y0))))

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
S tuples:

H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0))
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

H

Compound Symbols:

c

(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace H(f(f(z0))) → c(H(f(f(z0))), F(g(f(z0))), F(z0)) by

H(f(f(x0))) → c(H(f(f(x0))))

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

h(f(f(z0))) → h(f(g(f(z0))))
f(g(f(z0))) → f(f(z0))
Tuples:

H(f(f(x0))) → c(H(f(f(x0))))
S tuples:

H(f(f(x0))) → c(H(f(f(x0))))
K tuples:none
Defined Rule Symbols:

h, f

Defined Pair Symbols:

H

Compound Symbols:

c

(15) CpxTrsMatchBoundsProof (EQUIVALENT transformation)

A linear upper bound on the runtime complexity of the TRS R could be shown with a Match Bound [MATCHBOUNDS1,MATCHBOUNDS2] of 0.
The certificate found is represented by the following graph.
Start state: 198
Accept states: [199, 200]
Transitions:
198→199[h_1|0]
198→200[f_1|0]
198→198[g_1|0]

(16) BOUNDS(O(1), O(n^1))