0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 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), 2208 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 317 ms)
↳18 CpxRNTS
↳19 FinalProof (⇔, 0 ms)
↳20 BOUNDS(1, EXP)
bin(x, 0) → s(0)
bin(0, s(y)) → 0
bin(s(x), s(y)) → +(bin(x, s(y)), bin(x, y))
bin(x, 0) → s(0) [1]
bin(0, s(y)) → 0 [1]
bin(s(x), s(y)) → +(bin(x, s(y)), bin(x, y)) [1]
bin(x, 0) → s(0) [1]
bin(0, s(y)) → 0 [1]
bin(s(x), s(y)) → +(bin(x, s(y)), bin(x, y)) [1]
bin :: 0:s:+ → 0:s:+ → 0:s:+ 0 :: 0:s:+ s :: 0:s:+ → 0:s:+ + :: 0:s:+ → 0:s:+ → 0:s:+ |
(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:
bin
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
bin(z, z') -{ 1 }→ 0 :|: z' = 1 + y, y >= 0, z = 0
bin(z, z') -{ 1 }→ 1 + 0 :|: x >= 0, z = x, z' = 0
bin(z, z') -{ 1 }→ 1 + bin(x, 1 + y) + bin(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
bin(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
bin(z, z') -{ 1 }→ 1 + 0 :|: z >= 0, z' = 0
bin(z, z') -{ 1 }→ 1 + bin(z - 1, 1 + (z' - 1)) + bin(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
{ bin } |
bin(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
bin(z, z') -{ 1 }→ 1 + 0 :|: z >= 0, z' = 0
bin(z, z') -{ 1 }→ 1 + bin(z - 1, 1 + (z' - 1)) + bin(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
bin(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
bin(z, z') -{ 1 }→ 1 + 0 :|: z >= 0, z' = 0
bin(z, z') -{ 1 }→ 1 + bin(z - 1, 1 + (z' - 1)) + bin(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
bin: runtime: ?, size: EXP |
bin(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
bin(z, z') -{ 1 }→ 1 + 0 :|: z >= 0, z' = 0
bin(z, z') -{ 1 }→ 1 + bin(z - 1, 1 + (z' - 1)) + bin(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
bin: runtime: EXP, size: EXP |