0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 3 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), 715 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 279 ms)
↳18 CpxRNTS
↳19 FinalProof (⇔, 0 ms)
↳20 BOUNDS(1, n^1)
p(m, n, s(r)) → p(m, r, n)
p(m, s(n), 0) → p(0, n, m)
p(m, 0, 0) → m
p(m, n, s(r)) → p(m, r, n) [1]
p(m, s(n), 0) → p(0, n, m) [1]
p(m, 0, 0) → m [1]
p(m, n, s(r)) → p(m, r, n) [1]
p(m, s(n), 0) → p(0, n, m) [1]
p(m, 0, 0) → m [1]
p :: s:0 → s:0 → s:0 → s:0 s :: s:0 → s:0 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:
p
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 |
0 => 0
p(z, z', z'') -{ 1 }→ m :|: z = m, z'' = 0, z' = 0, m >= 0
p(z, z', z'') -{ 1 }→ p(m, r, n) :|: z = m, z'' = 1 + r, n >= 0, r >= 0, z' = n, m >= 0
p(z, z', z'') -{ 1 }→ p(0, n, m) :|: z = m, z'' = 0, n >= 0, z' = 1 + n, m >= 0
p(z, z', z'') -{ 1 }→ z :|: z'' = 0, z' = 0, z >= 0
p(z, z', z'') -{ 1 }→ p(z, z'' - 1, z') :|: z' >= 0, z'' - 1 >= 0, z >= 0
p(z, z', z'') -{ 1 }→ p(0, z' - 1, z) :|: z'' = 0, z' - 1 >= 0, z >= 0
{ p } |
p(z, z', z'') -{ 1 }→ z :|: z'' = 0, z' = 0, z >= 0
p(z, z', z'') -{ 1 }→ p(z, z'' - 1, z') :|: z' >= 0, z'' - 1 >= 0, z >= 0
p(z, z', z'') -{ 1 }→ p(0, z' - 1, z) :|: z'' = 0, z' - 1 >= 0, z >= 0
p(z, z', z'') -{ 1 }→ z :|: z'' = 0, z' = 0, z >= 0
p(z, z', z'') -{ 1 }→ p(z, z'' - 1, z') :|: z' >= 0, z'' - 1 >= 0, z >= 0
p(z, z', z'') -{ 1 }→ p(0, z' - 1, z) :|: z'' = 0, z' - 1 >= 0, z >= 0
p: runtime: ?, size: O(n1) [z] |
p(z, z', z'') -{ 1 }→ z :|: z'' = 0, z' = 0, z >= 0
p(z, z', z'') -{ 1 }→ p(z, z'' - 1, z') :|: z' >= 0, z'' - 1 >= 0, z >= 0
p(z, z', z'') -{ 1 }→ p(0, z' - 1, z) :|: z'' = 0, z' - 1 >= 0, z >= 0
p: runtime: O(n1) [1 + z + z' + z''], size: O(n1) [z] |