0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 1 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), 551 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 146 ms)
↳18 CpxRNTS
↳19 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 201 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 66 ms)
↳24 CpxRNTS
↳25 FinalProof (⇔, 0 ms)
↳26 BOUNDS(1, n^1)
foldl#3(x2, Nil) → x2
foldl#3(x16, Cons(x24, x6)) → foldl#3(Cons(x24, x16), x6)
main(x1) → foldl#3(Nil, x1)
foldl#3(x2, Nil) → x2 [1]
foldl#3(x16, Cons(x24, x6)) → foldl#3(Cons(x24, x16), x6) [1]
main(x1) → foldl#3(Nil, x1) [1]
foldl#3(x2, Nil) → x2 [1]
foldl#3(x16, Cons(x24, x6)) → foldl#3(Cons(x24, x16), x6) [1]
main(x1) → foldl#3(Nil, x1) [1]
foldl#3 :: Nil:Cons → Nil:Cons → Nil:Cons Nil :: Nil:Cons Cons :: a → Nil:Cons → Nil:Cons main :: Nil:Cons → Nil:Cons |
(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:
foldl#3
main
const
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 |
Nil => 0
const => 0
foldl#3(z, z') -{ 1 }→ x2 :|: z = x2, x2 >= 0, z' = 0
foldl#3(z, z') -{ 1 }→ foldl#3(1 + x24 + x16, x6) :|: z' = 1 + x24 + x6, z = x16, x6 >= 0, x24 >= 0, x16 >= 0
main(z) -{ 1 }→ foldl#3(0, x1) :|: x1 >= 0, z = x1
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
foldl#3(z, z') -{ 1 }→ foldl#3(1 + x24 + z, x6) :|: z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
main(z) -{ 1 }→ foldl#3(0, z) :|: z >= 0
{ foldl#3 } { main } |
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
foldl#3(z, z') -{ 1 }→ foldl#3(1 + x24 + z, x6) :|: z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
main(z) -{ 1 }→ foldl#3(0, z) :|: z >= 0
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
foldl#3(z, z') -{ 1 }→ foldl#3(1 + x24 + z, x6) :|: z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
main(z) -{ 1 }→ foldl#3(0, z) :|: z >= 0
foldl#3: runtime: ?, size: O(n1) [z + z'] |
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
foldl#3(z, z') -{ 1 }→ foldl#3(1 + x24 + z, x6) :|: z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
main(z) -{ 1 }→ foldl#3(0, z) :|: z >= 0
foldl#3: runtime: O(n1) [1 + z'], size: O(n1) [z + z'] |
foldl#3(z, z') -{ 2 + x6 }→ s :|: s >= 0, s <= 1 * (1 + x24 + z) + 1 * x6, z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
main(z) -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * z, z >= 0
foldl#3: runtime: O(n1) [1 + z'], size: O(n1) [z + z'] |
foldl#3(z, z') -{ 2 + x6 }→ s :|: s >= 0, s <= 1 * (1 + x24 + z) + 1 * x6, z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
main(z) -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * z, z >= 0
foldl#3: runtime: O(n1) [1 + z'], size: O(n1) [z + z'] main: runtime: ?, size: O(n1) [z] |
foldl#3(z, z') -{ 2 + x6 }→ s :|: s >= 0, s <= 1 * (1 + x24 + z) + 1 * x6, z' = 1 + x24 + x6, x6 >= 0, x24 >= 0, z >= 0
foldl#3(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
main(z) -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * 0 + 1 * z, z >= 0
foldl#3: runtime: O(n1) [1 + z'], size: O(n1) [z + z'] main: runtime: O(n1) [2 + z], size: O(n1) [z] |