0 CpxRelTRS
↳1 RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID), 10 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 InliningProof (UPPER BOUND(ID), 1120 ms)
↳14 CpxRNTS
↳15 SimplificationProof (BOTH BOUNDS(ID, ID), 19 ms)
↳16 CpxRNTS
↳17 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 262 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 31 ms)
↳22 CpxRNTS
↳23 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 325 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 7 ms)
↳28 CpxRNTS
↳29 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳30 CpxRNTS
↳31 IntTrsBoundProof (UPPER BOUND(ID), 2813 ms)
↳32 CpxRNTS
↳33 IntTrsBoundProof (UPPER BOUND(ID), 421 ms)
↳34 CpxRNTS
↳35 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳36 CpxRNTS
↳37 IntTrsBoundProof (UPPER BOUND(ID), 733 ms)
↳38 CpxRNTS
↳39 IntTrsBoundProof (UPPER BOUND(ID), 68 ms)
↳40 CpxRNTS
↳41 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳42 CpxRNTS
↳43 IntTrsBoundProof (UPPER BOUND(ID), 1321 ms)
↳44 CpxRNTS
↳45 IntTrsBoundProof (UPPER BOUND(ID), 92 ms)
↳46 CpxRNTS
↳47 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳48 CpxRNTS
↳49 IntTrsBoundProof (UPPER BOUND(ID), 831 ms)
↳50 CpxRNTS
↳51 IntTrsBoundProof (UPPER BOUND(ID), 56 ms)
↳52 CpxRNTS
↳53 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳54 CpxRNTS
↳55 IntTrsBoundProof (UPPER BOUND(ID), 1870 ms)
↳56 CpxRNTS
↳57 IntTrsBoundProof (UPPER BOUND(ID), 111 ms)
↳58 CpxRNTS
↳59 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳60 CpxRNTS
↳61 IntTrsBoundProof (UPPER BOUND(ID), 2077 ms)
↳62 CpxRNTS
↳63 IntTrsBoundProof (UPPER BOUND(ID), 133 ms)
↳64 CpxRNTS
↳65 FinalProof (⇔, 0 ms)
↳66 BOUNDS(1, n^2)
*(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
*(@x, @y) → #mult(@x, @y) [1]
dyade(@l1, @l2) → dyade#1(@l1, @l2) [1]
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2)) [1]
dyade#1(nil, @l2) → nil [1]
mult(@n, @l) → mult#1(@l, @n) [1]
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs)) [1]
mult#1(nil, @n) → nil [1]
#add(#0, @y) → @y [0]
#add(#neg(#s(#0)), @y) → #pred(@y) [0]
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y)) [0]
#add(#pos(#s(#0)), @y) → #succ(@y) [0]
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y)) [0]
#mult(#0, #0) → #0 [0]
#mult(#0, #neg(@y)) → #0 [0]
#mult(#0, #pos(@y)) → #0 [0]
#mult(#neg(@x), #0) → #0 [0]
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y)) [0]
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #0) → #0 [0]
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y)) [0]
#natmult(#0, @y) → #0 [0]
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y)) [0]
#pred(#0) → #neg(#s(#0)) [0]
#pred(#neg(#s(@x))) → #neg(#s(#s(@x))) [0]
#pred(#pos(#s(#0))) → #0 [0]
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x)) [0]
#succ(#0) → #pos(#s(#0)) [0]
#succ(#neg(#s(#0))) → #0 [0]
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x)) [0]
#succ(#pos(#s(@x))) → #pos(#s(#s(@x))) [0]
* => times |
times(@x, @y) → #mult(@x, @y) [1]
dyade(@l1, @l2) → dyade#1(@l1, @l2) [1]
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2)) [1]
dyade#1(nil, @l2) → nil [1]
mult(@n, @l) → mult#1(@l, @n) [1]
mult#1(::(@x, @xs), @n) → ::(times(@n, @x), mult(@n, @xs)) [1]
mult#1(nil, @n) → nil [1]
#add(#0, @y) → @y [0]
#add(#neg(#s(#0)), @y) → #pred(@y) [0]
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y)) [0]
#add(#pos(#s(#0)), @y) → #succ(@y) [0]
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y)) [0]
#mult(#0, #0) → #0 [0]
#mult(#0, #neg(@y)) → #0 [0]
#mult(#0, #pos(@y)) → #0 [0]
#mult(#neg(@x), #0) → #0 [0]
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y)) [0]
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #0) → #0 [0]
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y)) [0]
#natmult(#0, @y) → #0 [0]
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y)) [0]
#pred(#0) → #neg(#s(#0)) [0]
#pred(#neg(#s(@x))) → #neg(#s(#s(@x))) [0]
#pred(#pos(#s(#0))) → #0 [0]
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x)) [0]
#succ(#0) → #pos(#s(#0)) [0]
#succ(#neg(#s(#0))) → #0 [0]
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x)) [0]
#succ(#pos(#s(@x))) → #pos(#s(#s(@x))) [0]
times(@x, @y) → #mult(@x, @y) [1]
dyade(@l1, @l2) → dyade#1(@l1, @l2) [1]
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2)) [1]
dyade#1(nil, @l2) → nil [1]
mult(@n, @l) → mult#1(@l, @n) [1]
mult#1(::(@x, @xs), @n) → ::(times(@n, @x), mult(@n, @xs)) [1]
mult#1(nil, @n) → nil [1]
#add(#0, @y) → @y [0]
#add(#neg(#s(#0)), @y) → #pred(@y) [0]
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y)) [0]
#add(#pos(#s(#0)), @y) → #succ(@y) [0]
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y)) [0]
#mult(#0, #0) → #0 [0]
#mult(#0, #neg(@y)) → #0 [0]
#mult(#0, #pos(@y)) → #0 [0]
#mult(#neg(@x), #0) → #0 [0]
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y)) [0]
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #0) → #0 [0]
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y)) [0]
#natmult(#0, @y) → #0 [0]
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y)) [0]
#pred(#0) → #neg(#s(#0)) [0]
#pred(#neg(#s(@x))) → #neg(#s(#s(@x))) [0]
#pred(#pos(#s(#0))) → #0 [0]
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x)) [0]
#succ(#0) → #pos(#s(#0)) [0]
#succ(#neg(#s(#0))) → #0 [0]
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x)) [0]
#succ(#pos(#s(@x))) → #pos(#s(#s(@x))) [0]
times :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos dyade :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos dyade#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos :: :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos mult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos nil :: :::nil:#0:#s:#neg:#pos mult#1 :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #add :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #0 :: :::nil:#0:#s:#neg:#pos #neg :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #s :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #pred :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #pos :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #succ :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos #natmult :: :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos → :::nil:#0:#s:#neg:#pos |
(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
dyade
dyade#1
mult
mult#1
#add
#mult
#natmult
#pred
#succ
#add(v0, v1) → null_#add [0]
#mult(v0, v1) → null_#mult [0]
#natmult(v0, v1) → null_#natmult [0]
#pred(v0) → null_#pred [0]
#succ(v0) → null_#succ [0]
null_#add, null_#mult, null_#natmult, null_#pred, null_#succ
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 |
nil => 1
#0 => 0
null_#add => 0
null_#mult => 0
null_#natmult => 0
null_#pred => 0
null_#succ => 0
#add(z, z') -{ 0 }→ @y :|: z' = @y, z = 0, @y >= 0
#add(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#add(z, z') -{ 0 }→ #succ(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0
#add(z, z') -{ 0 }→ #succ(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0
#add(z, z') -{ 0 }→ #succ(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + @x''), @y))) :|: z = 1 + (1 + (1 + (1 + @x''))), z' = @y, @x'' >= 0, @y >= 0
#add(z, z') -{ 0 }→ #pred(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0
#add(z, z') -{ 0 }→ #pred(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + @x'), @y))) :|: z = 1 + (1 + (1 + (1 + @x'))), z' = @y, @y >= 0, @x' >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 1 + @y, @y >= 0
#mult(z, z') -{ 0 }→ 0 :|: @x >= 0, z = 1 + @x, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#mult(z, z') -{ 0 }→ 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z' = @y, z = 0, @y >= 0
#natmult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, #add(1 + @y, #natmult(@x1, @y))) :|: @x1 >= 0, z' = @y, z = 1 + (1 + @x1), @y >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#pred(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#succ(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
dyade(z, z') -{ 1 }→ dyade#1(@l1, @l2) :|: @l1 >= 0, z' = @l2, @l2 >= 0, z = @l1
dyade#1(z, z') -{ 1 }→ 1 :|: z' = @l2, z = 1, @l2 >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, @l2) + dyade(@xs, @l2) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(@l, @n) :|: @l >= 0, @n >= 0, z' = @l, z = @n
mult#1(z, z') -{ 1 }→ 1 :|: z' = @n, z = 1, @n >= 0
mult#1(z, z') -{ 1 }→ 1 + times(@n, @x) + mult(@n, @xs) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#pred(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#succ(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#succ(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#add(z, z') -{ 0 }→ @y :|: z' = @y, z = 0, @y >= 0
#add(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, v0 >= 0, @y = v0
#add(z, z') -{ 0 }→ 0 :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), 1 + (1 + @x) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), v0 >= 0, 1 + (1 + @x) = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), v0 >= 0, 1 + (1 + (1 + @x)) = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + @x''), @y))) :|: z = 1 + (1 + (1 + (1 + @x''))), z' = @y, @x'' >= 0, @y >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0
#add(z, z') -{ 0 }→ #pred(1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x))
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + @x))) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x)
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + @x'), @y))) :|: z = 1 + (1 + (1 + (1 + @x'))), z' = @y, @y >= 0, @x' >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 1 + @y, @y >= 0
#mult(z, z') -{ 0 }→ 0 :|: @x >= 0, z = 1 + @x, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#mult(z, z') -{ 0 }→ 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z' = @y, z = 0, @y >= 0
#natmult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, #add(1 + @y, #natmult(@x1, @y))) :|: @x1 >= 0, z' = @y, z = 1 + (1 + @x1), @y >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#pred(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#succ(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
dyade(z, z') -{ 1 }→ dyade#1(@l1, @l2) :|: @l1 >= 0, z' = @l2, @l2 >= 0, z = @l1
dyade#1(z, z') -{ 1 }→ 1 :|: z' = @l2, z = 1, @l2 >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, @l2) + dyade(@xs, @l2) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(@l, @n) :|: @l >= 0, @n >= 0, z' = @l, z = @n
mult#1(z, z') -{ 1 }→ 1 :|: z' = @n, z = 1, @n >= 0
mult#1(z, z') -{ 1 }→ 1 + times(@n, @x) + mult(@n, @xs) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
{ #pred } { #succ } { #add } { #natmult } { #mult } { times } { mult#1, mult } { dyade, dyade#1 } |
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: ?, size: O(n1) [2 + z] |
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: ?, size: O(n1) [2 + z] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: ?, size: O(n1) [2·z + z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: ?, size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: ?, size: O(n2) [1 + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: ?, size: O(n2) [1 + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 1 }→ 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 2 }→ 1 + s16 + mult(z', @xs) :|: s16 >= 0, s16 <= 4 * (@x * z') + 2 * @x + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 2 }→ 1 + s16 + mult(z', @xs) :|: s16 >= 0, s16 <= 4 * (@x * z') + 2 * @x + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] mult#1: runtime: ?, size: INF mult: runtime: ?, size: INF |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 1 }→ mult#1(z', z) :|: z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 2 }→ 1 + s16 + mult(z', @xs) :|: s16 >= 0, s16 <= 4 * (@x * z') + 2 * @x + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] mult#1: runtime: O(n1) [5 + 3·z], size: INF mult: runtime: O(n1) [6 + 3·z'], size: INF |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 7 + 3·z' }→ 1 + s17 + dyade(@xs, z') :|: s17 >= 0, s17 <= inf, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 6 + 3·z' }→ s18 :|: s18 >= 0, s18 <= inf', z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 8 + 3·@xs }→ 1 + s16 + s19 :|: s19 >= 0, s19 <= inf'', s16 >= 0, s16 <= 4 * (@x * z') + 2 * @x + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] mult#1: runtime: O(n1) [5 + 3·z], size: INF mult: runtime: O(n1) [6 + 3·z'], size: INF |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 7 + 3·z' }→ 1 + s17 + dyade(@xs, z') :|: s17 >= 0, s17 <= inf, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 6 + 3·z' }→ s18 :|: s18 >= 0, s18 <= inf', z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 8 + 3·@xs }→ 1 + s16 + s19 :|: s19 >= 0, s19 <= inf'', s16 >= 0, s16 <= 4 * (@x * z') + 2 * @x + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] mult#1: runtime: O(n1) [5 + 3·z], size: INF mult: runtime: O(n1) [6 + 3·z'], size: INF dyade: runtime: ?, size: INF dyade#1: runtime: ?, size: INF |
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s9 >= 0, s9 <= 1 * s8 + 2, s10 >= 0, s10 <= 1 * s9 + 2, z' >= 0, z - 4 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s6 >= 0, s6 <= 1 * s5 + 2, s7 >= 0, s7 <= 1 * s6 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s11 :|: s11 >= 0, s11 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s14 :|: s12 >= 0, s12 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s13 >= 0, s13 <= 2 * (1 + z') + 1 * s12, s14 >= 0, s14 <= 2 * (1 + z') + 1 * s13, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
dyade(z, z') -{ 1 }→ dyade#1(z, z') :|: z >= 0, z' >= 0
dyade#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
dyade#1(z, z') -{ 7 + 3·z' }→ 1 + s17 + dyade(@xs, z') :|: s17 >= 0, s17 <= inf, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
mult(z, z') -{ 6 + 3·z' }→ s18 :|: s18 >= 0, s18 <= inf', z' >= 0, z >= 0
mult#1(z, z') -{ 1 }→ 1 :|: z = 1, z' >= 0
mult#1(z, z') -{ 8 + 3·@xs }→ 1 + s16 + s19 :|: s19 >= 0, s19 <= inf'', s16 >= 0, s16 <= 4 * (@x * z') + 2 * @x + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
times(z, z') -{ 1 }→ s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
#pred: runtime: O(1) [0], size: O(n1) [2 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] mult#1: runtime: O(n1) [5 + 3·z], size: INF mult: runtime: O(n1) [6 + 3·z'], size: INF dyade: runtime: O(n2) [2 + 8·z + 3·z·z'], size: INF dyade#1: runtime: O(n2) [10 + 8·z + 3·z·z' + 3·z'], size: INF |