0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID), 3 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), 3636 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 440 ms)
↳20 CpxRNTS
↳21 FinalProof (⇔, 0 ms)
↳22 BOUNDS(1, EXP)
*(x, +(y, z)) → +(*(x, y), *(x, z))
*(+(x, y), z) → +(*(x, z), *(y, z))
*(x, 1) → x
*(1, y) → y
*(x, +(y, z)) → +(*(x, y), *(x, z)) [1]
*(+(x, y), z) → +(*(x, z), *(y, z)) [1]
*(x, 1) → x [1]
*(1, y) → y [1]
* => times |
times(x, +(y, z)) → +(times(x, y), times(x, z)) [1]
times(+(x, y), z) → +(times(x, z), times(y, z)) [1]
times(x, 1) → x [1]
times(1, y) → y [1]
times(x, +(y, z)) → +(times(x, y), times(x, z)) [1]
times(+(x, y), z) → +(times(x, z), times(y, z)) [1]
times(x, 1) → x [1]
times(1, y) → y [1]
times :: +:1 → +:1 → +:1 + :: +:1 → +:1 → +:1 1 :: +:1 |
(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:
times
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 |
1 => 0
times(z', z'') -{ 1 }→ x :|: z'' = 0, z' = x, x >= 0
times(z', z'') -{ 1 }→ y :|: z'' = y, y >= 0, z' = 0
times(z', z'') -{ 1 }→ 1 + times(x, y) + times(x, z) :|: z >= 0, z' = x, x >= 0, y >= 0, z'' = 1 + y + z
times(z', z'') -{ 1 }→ 1 + times(x, z) + times(y, z) :|: z'' = z, z >= 0, z' = 1 + x + y, x >= 0, y >= 0
times(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
times(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
times(z', z'') -{ 1 }→ 1 + times(x, z'') + times(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
times(z', z'') -{ 1 }→ 1 + times(z', y) + times(z', z) :|: z >= 0, z' >= 0, y >= 0, z'' = 1 + y + z
{ times } |
times(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
times(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
times(z', z'') -{ 1 }→ 1 + times(x, z'') + times(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
times(z', z'') -{ 1 }→ 1 + times(z', y) + times(z', z) :|: z >= 0, z' >= 0, y >= 0, z'' = 1 + y + z
times(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
times(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
times(z', z'') -{ 1 }→ 1 + times(x, z'') + times(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
times(z', z'') -{ 1 }→ 1 + times(z', y) + times(z', z) :|: z >= 0, z' >= 0, y >= 0, z'' = 1 + y + z
times: runtime: ?, size: EXP |
times(z', z'') -{ 1 }→ z' :|: z'' = 0, z' >= 0
times(z', z'') -{ 1 }→ z'' :|: z'' >= 0, z' = 0
times(z', z'') -{ 1 }→ 1 + times(x, z'') + times(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0
times(z', z'') -{ 1 }→ 1 + times(z', y) + times(z', z) :|: z >= 0, z' >= 0, y >= 0, z'' = 1 + y + z
times: runtime: EXP, size: EXP |