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), 407 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 128 ms)
↳20 CpxRNTS
↳21 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 1340 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 618 ms)
↳26 CpxRNTS
↳27 FinalProof (⇔, 0 ms)
↳28 BOUNDS(1, n^1)
del(.(x, .(y, z))) → f(=(x, y), x, y, z)
f(true, x, y, z) → del(.(y, z))
f(false, x, y, z) → .(x, del(.(y, z)))
=(nil, nil) → true
=(.(x, y), nil) → false
=(nil, .(y, z)) → false
=(.(x, y), .(u, v)) → and(=(x, u), =(y, v))
del(.(x, .(y, z))) → f(=(x, y), x, y, z) [1]
f(true, x, y, z) → del(.(y, z)) [1]
f(false, x, y, z) → .(x, del(.(y, z))) [1]
=(nil, nil) → true [1]
=(.(x, y), nil) → false [1]
=(nil, .(y, z)) → false [1]
=(.(x, y), .(u, v)) → and(=(x, u), =(y, v)) [1]
= => eq |
del(.(x, .(y, z))) → f(eq(x, y), x, y, z) [1]
f(true, x, y, z) → del(.(y, z)) [1]
f(false, x, y, z) → .(x, del(.(y, z))) [1]
eq(nil, nil) → true [1]
eq(.(x, y), nil) → false [1]
eq(nil, .(y, z)) → false [1]
eq(.(x, y), .(u, v)) → and(eq(x, u), eq(y, v)) [1]
del(.(x, .(y, z))) → f(eq(x, y), x, y, z) [1]
f(true, x, y, z) → del(.(y, z)) [1]
f(false, x, y, z) → .(x, del(.(y, z))) [1]
eq(nil, nil) → true [1]
eq(.(x, y), nil) → false [1]
eq(nil, .(y, z)) → false [1]
eq(.(x, y), .(u, v)) → and(eq(x, u), eq(y, v)) [1]
del :: .:nil:u:v → .:nil:u:v . :: .:nil:u:v → .:nil:u:v → .:nil:u:v f :: true:false:and → .:nil:u:v → .:nil:u:v → .:nil:u:v → .:nil:u:v eq :: .:nil:u:v → .:nil:u:v → true:false:and true :: true:false:and false :: true:false:and nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and → true:false:and → true:false:and |
(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:
del
f
eq
eq(v0, v1) → null_eq [0]
null_eq
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 |
true => 1
false => 0
nil => 0
u => 1
v => 2
null_eq => 0
del(z'') -{ 2 }→ f(1, 0, 0, z) :|: z >= 0, z'' = 1 + 0 + (1 + 0 + z)
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 2 }→ f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0
eq(z'', z1) -{ 1 }→ 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + y + z) :|: z2 = y, z >= 0, z3 = z, x >= 0, y >= 0, z'' = 1, z1 = x
f(z'', z1, z2, z3) -{ 1 }→ 1 + x + del(1 + y + z) :|: z'' = 0, z2 = y, z >= 0, z3 = z, x >= 0, y >= 0, z1 = x
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 2 }→ f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 1 }→ 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
{ eq } { del, f } |
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 2 }→ f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 1 }→ 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 2 }→ f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 1 }→ 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
eq: runtime: ?, size: O(1) [1] |
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 2 }→ f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 1 }→ 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
eq: runtime: O(1) [3], size: O(1) [1] |
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 8 }→ f(1 + s + s', 1 + x'' + y1, 1 + 1 + 2, z) :|: s >= 0, s <= 1, s' >= 0, s' <= 1, y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 7 }→ 1 + s'' + s1 :|: s'' >= 0, s'' <= 1, s1 >= 0, s1 <= 1, z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
eq: runtime: O(1) [3], size: O(1) [1] |
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 8 }→ f(1 + s + s', 1 + x'' + y1, 1 + 1 + 2, z) :|: s >= 0, s <= 1, s' >= 0, s' <= 1, y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 7 }→ 1 + s'' + s1 :|: s'' >= 0, s'' <= 1, s1 >= 0, s1 <= 1, z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
eq: runtime: O(1) [3], size: O(1) [1] del: runtime: ?, size: O(1) [0] f: runtime: ?, size: O(n1) [1 + z1] |
del(z'') -{ 2 }→ f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0
del(z'') -{ 1 }→ f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z)
del(z'') -{ 2 }→ f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0
del(z'') -{ 2 }→ f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z)
del(z'') -{ 8 }→ f(1 + s + s', 1 + x'' + y1, 1 + 1 + 2, z) :|: s >= 0, s <= 1, s' >= 0, s' <= 1, y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z)
eq(z'', z1) -{ 1 }→ 1 :|: z'' = 0, z1 = 0
eq(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0
eq(z'', z1) -{ 1 }→ 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0
eq(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
eq(z'', z1) -{ 7 }→ 1 + s'' + s1 :|: s'' >= 0, s'' <= 1, s1 >= 0, s1 <= 1, z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2
f(z'', z1, z2, z3) -{ 1 }→ del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1
f(z'', z1, z2, z3) -{ 1 }→ 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0
eq: runtime: O(1) [3], size: O(1) [1] del: runtime: O(n1) [34·z''], size: O(1) [0] f: runtime: O(n1) [35 + 34·z2 + 34·z3], size: O(n1) [1 + z1] |