0 CpxTRS
↳1 NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxTRS
↳3 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxWeightedTrs
↳5 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CpxTypedWeightedTrs
↳7 CompletionProof (UPPER BOUND(ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳10 CpxTypedWeightedCompleteTrs
↳11 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳12 CpxRNTS
↳13 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 1193 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 180 ms)
↳20 CpxRNTS
↳21 FinalProof (⇔, 0 ms)
↳22 BOUNDS(1, n^1)
f(0, y) → y
f(x, 0) → x
f(i(x), y) → i(x)
f(f(x, y), z) → f(x, f(y, z))
f(g(x, y), z) → g(f(x, z), f(y, z))
f(1, g(x, y)) → x
f(2, g(x, y)) → y
f(g(x, y), z) → g(f(x, z), f(y, z))
f(2, g(x, y)) → y
f(1, g(x, y)) → x
f(i(x), y) → i(x)
f(0, y) → y
f(x, 0) → x
f(g(x, y), z) → g(f(x, z), f(y, z)) [1]
f(2, g(x, y)) → y [1]
f(1, g(x, y)) → x [1]
f(i(x), y) → i(x) [1]
f(0, y) → y [1]
f(x, 0) → x [1]
f(g(x, y), z) → g(f(x, z), f(y, z)) [1]
f(2, g(x, y)) → y [1]
f(1, g(x, y)) → x [1]
f(i(x), y) → i(x) [1]
f(0, y) → y [1]
f(x, 0) → x [1]
f :: g:2:1:i:0 → g:2:1:i:0 → g:2:1:i:0 g :: g:2:1:i:0 → g:2:1:i:0 → g:2:1:i:0 2 :: g:2:1:i:0 1 :: g:2:1:i:0 i :: a → g:2:1:i:0 0 :: g:2:1:i: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:
f
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 |
2 => 2
1 => 1
0 => 0
const => 0
f(z', z'') -{ 1 }→ x :|: z'' = 1 + x + y, x >= 0, y >= 0, z' = 1
f(z', z'') -{ 1 }→ x :|: z'' = 0, z' = x, x >= 0
f(z', z'') -{ 1 }→ y :|: z' = 2, z'' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ y :|: z'' = y, y >= 0, z' = 0
f(z', z'') -{ 1 }→ 1 + x :|: z' = 1 + x, z'' = y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ 1 + f(x, z) + f(y, z) :|: z'' = z, z >= 0, z' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ x :|: z'' = 1 + x + y, x >= 0, y >= 0, z' = 1
f(z', z'') -{ 1 }→ y :|: z' = 2, z'' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
f(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
f(z', z'') -{ 1 }→ 1 + (z' - 1) :|: z' - 1 >= 0, z'' >= 0
f(z', z'') -{ 1 }→ 1 + f(x, z'') + f(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
{ f } |
f(z', z'') -{ 1 }→ x :|: z'' = 1 + x + y, x >= 0, y >= 0, z' = 1
f(z', z'') -{ 1 }→ y :|: z' = 2, z'' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
f(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
f(z', z'') -{ 1 }→ 1 + (z' - 1) :|: z' - 1 >= 0, z'' >= 0
f(z', z'') -{ 1 }→ 1 + f(x, z'') + f(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ x :|: z'' = 1 + x + y, x >= 0, y >= 0, z' = 1
f(z', z'') -{ 1 }→ y :|: z' = 2, z'' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
f(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
f(z', z'') -{ 1 }→ 1 + (z' - 1) :|: z' - 1 >= 0, z'' >= 0
f(z', z'') -{ 1 }→ 1 + f(x, z'') + f(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
f: runtime: ?, size: O(n2) [2 + 8·z' + 4·z'·z'' + 2·z''] |
f(z', z'') -{ 1 }→ x :|: z'' = 1 + x + y, x >= 0, y >= 0, z' = 1
f(z', z'') -{ 1 }→ y :|: z' = 2, z'' = 1 + x + y, x >= 0, y >= 0
f(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
f(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
f(z', z'') -{ 1 }→ 1 + (z' - 1) :|: z' - 1 >= 0, z'' >= 0
f(z', z'') -{ 1 }→ 1 + f(x, z'') + f(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
f: runtime: O(n1) [1 + 2·z'], size: O(n2) [2 + 8·z' + 4·z'·z'' + 2·z''] |