0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 2 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 CpxRNTS
↳13 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 IntTrsBoundProof (UPPER BOUND(ID), 358 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 124 ms)
↳18 CpxRNTS
↳19 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 220 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 90 ms)
↳24 CpxRNTS
↳25 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 161 ms)
↳28 CpxRNTS
↳29 IntTrsBoundProof (UPPER BOUND(ID), 48 ms)
↳30 CpxRNTS
↳31 FinalProof (⇔, 0 ms)
↳32 BOUNDS(1, n^1)
compS_f#1(compS_f(x2), x1) → compS_f#1(x2, S(x1))
compS_f#1(id, x3) → S(x3)
iter#3(0) → id
iter#3(S(x6)) → compS_f(iter#3(x6))
main(0) → 0
main(S(x9)) → compS_f#1(iter#3(x9), 0)
compS_f#1(compS_f(x2), x1) → compS_f#1(x2, S(x1)) [1]
compS_f#1(id, x3) → S(x3) [1]
iter#3(0) → id [1]
iter#3(S(x6)) → compS_f(iter#3(x6)) [1]
main(0) → 0 [1]
main(S(x9)) → compS_f#1(iter#3(x9), 0) [1]
compS_f#1(compS_f(x2), x1) → compS_f#1(x2, S(x1)) [1]
compS_f#1(id, x3) → S(x3) [1]
iter#3(0) → id [1]
iter#3(S(x6)) → compS_f(iter#3(x6)) [1]
main(0) → 0 [1]
main(S(x9)) → compS_f#1(iter#3(x9), 0) [1]
compS_f#1 :: compS_f:id → S:0 → S:0 compS_f :: compS_f:id → compS_f:id S :: S:0 → S:0 id :: compS_f:id iter#3 :: S:0 → compS_f:id 0 :: S:0 main :: S:0 → S:0 |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
compS_f#1
main
iter#3
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
id => 0
0 => 0
compS_f#1(z, z') -{ 1 }→ compS_f#1(x2, 1 + x1) :|: x1 >= 0, z = 1 + x2, z' = x1, x2 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + x3 :|: z' = x3, z = 0, x3 >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(x6) :|: z = 1 + x6, x6 >= 0
main(z) -{ 2 }→ compS_f#1(0, 0) :|: z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(x6'), 0) :|: x6' >= 0, z = 1 + (1 + x6')
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1(z, z') -{ 1 }→ compS_f#1(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 2 }→ compS_f#1(0, 0) :|: z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
{ compS_f#1 } { iter#3 } { main } |
compS_f#1(z, z') -{ 1 }→ compS_f#1(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 2 }→ compS_f#1(0, 0) :|: z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1(z, z') -{ 1 }→ compS_f#1(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 2 }→ compS_f#1(0, 0) :|: z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: ?, size: O(n1) [1 + z + z'] |
compS_f#1(z, z') -{ 1 }→ compS_f#1(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 2 }→ compS_f#1(0, 0) :|: z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] |
compS_f#1(z, z') -{ 1 + z }→ s :|: s >= 0, s <= 1 * (z - 1) + 1 * (1 + z') + 1, z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 3 }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * 0 + 1, z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] |
compS_f#1(z, z') -{ 1 + z }→ s :|: s >= 0, s <= 1 * (z - 1) + 1 * (1 + z') + 1, z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 3 }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * 0 + 1, z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] iter#3: runtime: ?, size: O(n1) [z] |
compS_f#1(z, z') -{ 1 + z }→ s :|: s >= 0, s <= 1 * (z - 1) + 1 * (1 + z') + 1, z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 }→ 1 + iter#3(z - 1) :|: z - 1 >= 0
main(z) -{ 3 }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * 0 + 1, z = 1 + 0
main(z) -{ 2 }→ compS_f#1(1 + iter#3(z - 2), 0) :|: z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] iter#3: runtime: O(n1) [1 + z], size: O(n1) [z] |
compS_f#1(z, z') -{ 1 + z }→ s :|: s >= 0, s <= 1 * (z - 1) + 1 * (1 + z') + 1, z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 + z }→ 1 + s'' :|: s'' >= 0, s'' <= 1 * (z - 1), z - 1 >= 0
main(z) -{ 3 }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * 0 + 1, z = 1 + 0
main(z) -{ 3 + s1 + z }→ s2 :|: s1 >= 0, s1 <= 1 * (z - 2), s2 >= 0, s2 <= 1 * (1 + s1) + 1 * 0 + 1, z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] iter#3: runtime: O(n1) [1 + z], size: O(n1) [z] |
compS_f#1(z, z') -{ 1 + z }→ s :|: s >= 0, s <= 1 * (z - 1) + 1 * (1 + z') + 1, z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 + z }→ 1 + s'' :|: s'' >= 0, s'' <= 1 * (z - 1), z - 1 >= 0
main(z) -{ 3 }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * 0 + 1, z = 1 + 0
main(z) -{ 3 + s1 + z }→ s2 :|: s1 >= 0, s1 <= 1 * (z - 2), s2 >= 0, s2 <= 1 * (1 + s1) + 1 * 0 + 1, z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] iter#3: runtime: O(n1) [1 + z], size: O(n1) [z] main: runtime: ?, size: O(n1) [z] |
compS_f#1(z, z') -{ 1 + z }→ s :|: s >= 0, s <= 1 * (z - 1) + 1 * (1 + z') + 1, z' >= 0, z - 1 >= 0
compS_f#1(z, z') -{ 1 }→ 1 + z' :|: z = 0, z' >= 0
iter#3(z) -{ 1 }→ 0 :|: z = 0
iter#3(z) -{ 1 + z }→ 1 + s'' :|: s'' >= 0, s'' <= 1 * (z - 1), z - 1 >= 0
main(z) -{ 3 }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * 0 + 1, z = 1 + 0
main(z) -{ 3 + s1 + z }→ s2 :|: s1 >= 0, s1 <= 1 * (z - 2), s2 >= 0, s2 <= 1 * (1 + s1) + 1 * 0 + 1, z - 2 >= 0
main(z) -{ 1 }→ 0 :|: z = 0
compS_f#1: runtime: O(n1) [1 + z], size: O(n1) [1 + z + z'] iter#3: runtime: O(n1) [1 + z], size: O(n1) [z] main: runtime: O(n1) [3 + 2·z], size: O(n1) [z] |