YES
0 RelTRS
↳1 RelTRStoRelADPProof (⇔, 0 ms)
↳2 RelADPP
↳3 RelADPDepGraphProof (⇔, 0 ms)
↳4 AND
↳5 RelADPP
↳6 RelADPCleverAfsProof (⇒, 126 ms)
↳7 QDP
↳8 MRRProof (⇔, 14 ms)
↳9 QDP
↳10 MRRProof (⇔, 0 ms)
↳11 QDP
↳12 QDPOrderProof (⇔, 0 ms)
↳13 QDP
↳14 PisEmptyProof (⇔, 0 ms)
↳15 YES
↳16 RelADPP
↳17 RelADPCleverAfsProof (⇒, 122 ms)
↳18 QDP
↳19 MRRProof (⇔, 17 ms)
↳20 QDP
↳21 MRRProof (⇔, 0 ms)
↳22 QDP
↳23 QDPOrderProof (⇔, 1 ms)
↳24 QDP
↳25 DependencyGraphProof (⇔, 0 ms)
↳26 TRUE
↳27 RelADPP
↳28 RelADPCleverAfsProof (⇒, 122 ms)
↳29 QDP
↳30 MRRProof (⇔, 19 ms)
↳31 QDP
↳32 MRRProof (⇔, 0 ms)
↳33 QDP
↳34 MRRProof (⇔, 0 ms)
↳35 QDP
↳36 QDPOrderProof (⇔, 0 ms)
↳37 QDP
↳38 PisEmptyProof (⇔, 0 ms)
↳39 YES
↳40 RelADPP
↳41 RelADPCleverAfsProof (⇒, 126 ms)
↳42 QDP
↳43 MRRProof (⇔, 16 ms)
↳44 QDP
↳45 MRRProof (⇔, 0 ms)
↳46 QDP
↳47 MRRProof (⇔, 0 ms)
↳48 QDP
↳49 QDPOrderProof (⇔, 0 ms)
↳50 QDP
↳51 PisEmptyProof (⇔, 0 ms)
↳52 YES
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(0, y) → 0
minus(s(x), y) → if_minus(le(s(x), y), s(x), y)
if_minus(true, s(x), y) → 0
if_minus(false, s(x), y) → s(minus(x, y))
quot(0, s(y)) → 0
quot(s(x), s(y)) → s(quot(minus(x, y), s(y)))
log(s(0)) → 0
log(s(s(x))) → s(log(s(quot(x, s(s(0))))))
rand(x) → rand(s(x))
rand(x) → x
We upgrade the RelTRS problem to an equivalent Relative ADP Problem [IJCAR24].
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → LE(x, y)
minus(0, y) → 0
minus(s(x), y) → IF_MINUS(le(s(x), y), s(x), y)
minus(s(x), y) → if_minus(LE(s(x), y), s(x), y)
if_minus(true, s(x), y) → 0
if_minus(false, s(x), y) → s(MINUS(x, y))
quot(0, s(y)) → 0
quot(s(x), s(y)) → s(QUOT(minus(x, y), s(y)))
quot(s(x), s(y)) → s(quot(MINUS(x, y), s(y)))
log(s(0)) → 0
log(s(s(x))) → s(LOG(s(quot(x, s(s(0))))))
log(s(s(x))) → s(log(s(QUOT(x, s(s(0))))))
rand(x) → RAND(s(x))
rand(x) → x
We use the relative dependency graph processor [IJCAR24].
The approximation of the Relative Dependency Graph contains:
4 SCCs with nodes from P_abs,
0 Lassos,
Result: This relative DT problem is equivalent to 4 subproblems.
minus(s(x), y) → if_minus(le(s(x), y), s(x), y)
log(s(0)) → 0
quot(s(x), s(y)) → s(quot(minus(x, y), s(y)))
if_minus(false, s(x), y) → s(minus(x, y))
le(s(x), 0) → false
log(s(s(x))) → s(log(s(quot(x, s(s(0))))))
le(0, y) → true
le(s(x), s(y)) → LE(x, y)
if_minus(true, s(x), y) → 0
minus(0, y) → 0
quot(0, s(y)) → 0
rand(x) → rand(s(x))
rand(x) → x
Furthermore, We use an argument filter [LPAR04].
Filtering:s_1 =
true =
log_1 =
LE_2 =
le_2 = 0, 1
0 =
minus_2 = 1
if_minus_3 = 0, 2
rand_1 =
quot_2 = 1
false =
Found this filtering by looking at the following order that orders at least one DP strictly:Combined order from the following AFS and order.
LE(x1, x2) = LE(x1, x2)
s(x1) = s(x1)
minus(x1, x2) = x1
if_minus(x1, x2, x3) = x2
le(x1, x2) = le
log(x1) = log(x1)
0 = 0
quot(x1, x2) = x1
false = false
true = true
Recursive path order with status [RPO].
Quasi-Precedence:
LE2 > [s1, log1, 0]
[le, false, true] > [s1, log1, 0]
LE2: multiset
s1: [1]
le: multiset
log1: [1]
0: multiset
false: multiset
true: multiset
LE0(s0(x), s0(y)) → LE0(x, y)
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → true0
rand0(x) → x
log0(s0(00)) → 00
le → true0
rand0(x) → x
POL(00) = 0
POL(LE0(x1, x2)) = x1 + x2
POL(false0) = 2
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = 2 + 2·x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = 2 + x1
POL(s0(x1)) = x1
POL(true0) = 0
LE0(s0(x), s0(y)) → LE0(x, y)
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → false0
POL(00) = 0
POL(LE0(x1, x2)) = x1 + x2
POL(false0) = 1
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = x1
POL(s0(x1)) = x1
LE0(s0(x), s0(y)) → LE0(x, y)
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LE0(s0(x), s0(y)) → LE0(x, y)
LE02 > 00
le > 00
rand0 > [s01, log01] > 00
LE02: multiset
s01: [1]
le: multiset
rand0: multiset
00: multiset
log01: [1]
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
minus(s(x), y) → if_minus(le(s(x), y), s(x), y)
log(s(0)) → 0
quot(s(x), s(y)) → s(quot(minus(x, y), s(y)))
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
log(s(s(x))) → s(log(s(quot(x, s(s(0))))))
le(0, y) → true
if_minus(false, s(x), y) → s(MINUS(x, y))
if_minus(true, s(x), y) → 0
minus(0, y) → 0
minus(s(x), y) → IF_MINUS(le(s(x), y), s(x), y)
quot(0, s(y)) → 0
rand(x) → rand(s(x))
rand(x) → x
Furthermore, We use an argument filter [LPAR04].
Filtering:MINUS_2 = 1
true =
IF_MINUS_3 = 0, 2
if_minus_3 = 0, 2
rand_1 =
quot_2 = 1
false =
s_1 =
log_1 =
le_2 = 0, 1
0 =
minus_2 = 1
Found this filtering by looking at the following order that orders at least one DP strictly:Combined order from the following AFS and order.
IF_MINUS(x1, x2, x3) = IF_MINUS(x2)
false = false
s(x1) = s(x1)
MINUS(x1, x2) = MINUS(x1)
le(x1, x2) = le
minus(x1, x2) = x1
if_minus(x1, x2, x3) = x2
log(x1) = log(x1)
0 = 0
quot(x1, x2) = x1
true = true
Recursive path order with status [RPO].
Quasi-Precedence:
[false, le, true] > s1 > MINUS1 > IFMINUS1 > 0
log1 > s1 > MINUS1 > IFMINUS1 > 0
IFMINUS1: [1]
false: multiset
s1: [1]
MINUS1: multiset
le: multiset
log1: multiset
0: multiset
true: multiset
IF_MINUS(s0(x)) → MINUS(x)
MINUS(s0(x)) → IF_MINUS(s0(x))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → true0
rand0(x) → x
log0(s0(00)) → 00
le → true0
rand0(x) → x
POL(00) = 0
POL(IF_MINUS(x1)) = x1
POL(MINUS(x1)) = x1
POL(false0) = 2
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = 1 + x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = 2 + x1
POL(s0(x1)) = x1
POL(true0) = 0
IF_MINUS(s0(x)) → MINUS(x)
MINUS(s0(x)) → IF_MINUS(s0(x))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → false0
POL(00) = 0
POL(IF_MINUS(x1)) = x1
POL(MINUS(x1)) = x1
POL(false0) = 1
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = x1
POL(s0(x1)) = x1
IF_MINUS(s0(x)) → MINUS(x)
MINUS(s0(x)) → IF_MINUS(s0(x))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MINUS(s0(x)) → IF_MINUS(s0(x))
POL( minus(x1) ) = x1 |
POL( s0(x1) ) = x1 + 1 |
POL( if_minus(x1) ) = x1 |
POL( quot(x1) ) = x1 |
POL( le ) = 0 |
POL( rand0(x1) ) = 2 |
POL( 00 ) = 1 |
POL( log0(x1) ) = max{0, x1 - 1} |
POL( IF_MINUS(x1) ) = max{0, 2x1 - 2} |
POL( MINUS(x1) ) = 2x1 |
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
IF_MINUS(s0(x)) → MINUS(x)
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
minus(s(x), y) → if_minus(le(s(x), y), s(x), y)
quot(s(x), s(y)) → s(QUOT(minus(x, y), s(y)))
log(s(0)) → 0
quot(s(x), s(y)) → s(quot(minus(x, y), s(y)))
le(s(x), s(y)) → le(x, y)
if_minus(false, s(x), y) → s(minus(x, y))
le(s(x), 0) → false
log(s(s(x))) → s(log(s(quot(x, s(s(0))))))
le(0, y) → true
if_minus(true, s(x), y) → 0
minus(0, y) → 0
quot(0, s(y)) → 0
rand(x) → rand(s(x))
rand(x) → x
Furthermore, We use an argument filter [LPAR04].
Filtering:s_1 =
true =
QUOT_2 =
log_1 =
le_2 = 0, 1
0 =
minus_2 = 1
if_minus_3 = 0, 2
rand_1 =
quot_2 = 1
false =
Found this filtering by looking at the following order that orders at least one DP strictly:Combined order from the following AFS and order.
QUOT(x1, x2) = QUOT(x1, x2)
s(x1) = s(x1)
minus(x1, x2) = x1
if_minus(x1, x2, x3) = x2
le(x1, x2) = le
log(x1) = log(x1)
0 = 0
quot(x1, x2) = x1
false = false
true = true
Recursive path order with status [RPO].
Quasi-Precedence:
QUOT2 > [s1, log1, 0]
[le, false, true] > [s1, log1, 0]
QUOT2: [1,2]
s1: [1]
le: multiset
log1: [1]
0: multiset
false: multiset
true: multiset
QUOT0(s0(x), s0(y)) → QUOT0(minus(x), s0(y))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → true0
rand0(x) → x
le → true0
rand0(x) → x
POL(00) = 0
POL(QUOT0(x1, x2)) = x1 + x2
POL(false0) = 2
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = 2·x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = 2 + x1
POL(s0(x1)) = x1
POL(true0) = 0
QUOT0(s0(x), s0(y)) → QUOT0(minus(x), s0(y))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → false0
POL(00) = 0
POL(QUOT0(x1, x2)) = x1 + x2
POL(false0) = 1
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = x1
POL(s0(x1)) = x1
QUOT0(s0(x), s0(y)) → QUOT0(minus(x), s0(y))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
log0(s0(00)) → 00
POL(00) = 0
POL(QUOT0(x1, x2)) = x1 + x2
POL(if_minus(x1)) = x1
POL(le) = 0
POL(log0(x1)) = 2 + x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = x1
POL(s0(x1)) = x1
QUOT0(s0(x), s0(y)) → QUOT0(minus(x), s0(y))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QUOT0(s0(x), s0(y)) → QUOT0(minus(x), s0(y))
[s01, rand0, log01] > [QUOT02, 00]
le > [QUOT02, 00]
QUOT02: [1,2]
s01: multiset
le: multiset
rand0: multiset
00: multiset
log01: multiset
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
minus(s(x), y) → if_minus(le(s(x), y), s(x), y)
log(s(0)) → 0
quot(s(x), s(y)) → s(quot(minus(x, y), s(y)))
le(s(x), s(y)) → le(x, y)
if_minus(false, s(x), y) → s(minus(x, y))
log(s(s(x))) → s(LOG(s(quot(x, s(s(0))))))
le(s(x), 0) → false
log(s(s(x))) → s(log(s(quot(x, s(s(0))))))
le(0, y) → true
if_minus(true, s(x), y) → 0
minus(0, y) → 0
quot(0, s(y)) → 0
rand(x) → rand(s(x))
rand(x) → x
Furthermore, We use an argument filter [LPAR04].
Filtering:s_1 =
true =
log_1 =
le_2 = 0, 1
0 =
minus_2 = 1
if_minus_3 = 0, 2
rand_1 =
LOG_1 =
quot_2 = 1
false =
Found this filtering by looking at the following order that orders at least one DP strictly:Combined order from the following AFS and order.
LOG(x1) = LOG(x1)
s(x1) = s(x1)
quot(x1, x2) = x1
0 = 0
minus(x1, x2) = x1
if_minus(x1, x2, x3) = x2
le(x1, x2) = le
log(x1) = log(x1)
false = false
true = true
Recursive path order with status [RPO].
Quasi-Precedence:
LOG1 > s1 > 0
le > false > s1 > 0
le > true > 0
log1 > s1 > 0
LOG1: multiset
s1: multiset
0: multiset
le: []
log1: [1]
false: multiset
true: multiset
LOG0(s0(s0(x))) → LOG0(s0(quot(x)))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → true0
rand0(x) → x
le → true0
rand0(x) → x
POL(00) = 0
POL(LOG0(x1)) = 2·x1
POL(false0) = 2
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = 2 + x1
POL(s0(x1)) = x1
POL(true0) = 0
LOG0(s0(s0(x))) → LOG0(s0(quot(x)))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
le → false0
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
le → false0
POL(00) = 0
POL(LOG0(x1)) = x1
POL(false0) = 1
POL(if_minus(x1)) = x1
POL(le) = 2
POL(log0(x1)) = 2·x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = x1
POL(s0(x1)) = x1
LOG0(s0(s0(x))) → LOG0(s0(quot(x)))
minus(s0(x)) → if_minus(s0(x))
log0(s0(00)) → 00
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
log0(s0(00)) → 00
POL(00) = 0
POL(LOG0(x1)) = 2·x1
POL(if_minus(x1)) = x1
POL(le) = 0
POL(log0(x1)) = 1 + x1
POL(minus(x1)) = x1
POL(quot(x1)) = x1
POL(rand0(x1)) = x1
POL(s0(x1)) = x1
LOG0(s0(s0(x))) → LOG0(s0(quot(x)))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LOG0(s0(s0(x))) → LOG0(s0(quot(x)))
le > [LOG01, s01, 00, log01]
rand0 > [LOG01, s01, 00, log01]
LOG01: multiset
s01: multiset
le: multiset
rand0: multiset
00: multiset
log01: multiset
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))
minus(s0(x)) → if_minus(s0(x))
quot(s0(x)) → s0(quot(minus(x)))
le → le
rand0(x) → rand0(s0(x))
if_minus(s0(x)) → 00
minus(00) → 00
quot(00) → 00
if_minus(s0(x)) → s0(minus(x))
log0(s0(s0(x))) → s0(log0(s0(quot(x))))