0 Prolog
↳1 PredefinedPredicateTransformerProof (⇐)
↳2 Prolog
↳3 CutEliminatorProof (⇐)
↳4 Prolog
↳5 PrologToPiTRSProof (⇐)
↳6 PiTRS
↳7 DependencyPairsProof (⇔)
↳8 PiDP
↳9 DependencyGraphProof (⇔)
↳10 AND
↳11 PiDP
↳12 UsableRulesProof (⇔)
↳13 PiDP
↳14 PiDPToQDPProof (⇐)
↳15 QDP
↳16 QDPSizeChangeProof (⇔)
↳17 TRUE
↳18 PiDP
↳19 UsableRulesProof (⇔)
↳20 PiDP
↳21 PiDPToQDPProof (⇐)
↳22 QDP
↳23 Narrowing (⇐)
↳24 QDP
↳25 Instantiation (⇔)
↳26 QDP
↳27 ForwardInstantiation (⇔)
↳28 QDP
↳29 DependencyGraphProof (⇔)
↳30 AND
↳31 QDP
↳32 UsableRulesProof (⇔)
↳33 QDP
↳34 QReductionProof (⇔)
↳35 QDP
↳36 NonTerminationProof (⇔)
↳37 FALSE
↳38 QDP
↳39 QDPOrderProof (⇔)
↳40 QDP
↳41 DependencyGraphProof (⇔)
↳42 TRUE
↳43 PrologToPiTRSProof (⇐)
↳44 PiTRS
↳45 DependencyPairsProof (⇔)
↳46 PiDP
↳47 DependencyGraphProof (⇔)
↳48 AND
↳49 PiDP
↳50 UsableRulesProof (⇔)
↳51 PiDP
↳52 PiDPToQDPProof (⇐)
↳53 QDP
↳54 QDPSizeChangeProof (⇔)
↳55 TRUE
↳56 PiDP
↳57 UsableRulesProof (⇔)
↳58 PiDP
↳59 PiDPToQDPProof (⇐)
↳60 QDP
↳61 Narrowing (⇐)
↳62 QDP
↳63 Instantiation (⇔)
↳64 QDP
↳65 DependencyGraphProof (⇔)
↳66 AND
↳67 QDP
↳68 UsableRulesProof (⇔)
↳69 QDP
↳70 QReductionProof (⇔)
↳71 QDP
↳72 NonTerminationProof (⇔)
↳73 FALSE
↳74 QDP
↳75 ForwardInstantiation (⇔)
↳76 QDP
↳77 QDPOrderProof (⇔)
↳78 QDP
↳79 DependencyGraphProof (⇔)
↳80 TRUE
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
DIV_IN_GGA(X, 0, Z) → U1_GGA(X, Z, fail_in_)
DIV_IN_GGA(X, 0, Z) → FAIL_IN_
FAIL_IN_ → U6_1(fail_in_g(b))
FAIL_IN_ → FAIL_IN_G(b)
DIV_IN_GGA(0, Y, Z) → U2_GGA(Y, Z, =1_in_ag(Z, 0))
DIV_IN_GGA(0, Y, Z) → =1_IN_AG(Z, 0)
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
DIV_IN_GGA(X, Y, s(Z)) → MINUS_IN_GGA(X, Y, U)
MINUS_IN_GGA(s(X), s(Y), Z) → U5_GGA(X, Y, Z, minus_in_gga(X, Y, Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → U4_GGA(X, Y, Z, div_in_gga(U, Y, Z))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
DIV_IN_GGA(X, 0, Z) → U1_GGA(X, Z, fail_in_)
DIV_IN_GGA(X, 0, Z) → FAIL_IN_
FAIL_IN_ → U6_1(fail_in_g(b))
FAIL_IN_ → FAIL_IN_G(b)
DIV_IN_GGA(0, Y, Z) → U2_GGA(Y, Z, =1_in_ag(Z, 0))
DIV_IN_GGA(0, Y, Z) → =1_IN_AG(Z, 0)
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
DIV_IN_GGA(X, Y, s(Z)) → MINUS_IN_GGA(X, Y, U)
MINUS_IN_GGA(s(X), s(Y), Z) → U5_GGA(X, Y, Z, minus_in_gga(X, Y, Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → U4_GGA(X, Y, Z, div_in_gga(U, Y, Z))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
MINUS_IN_GGA(s(X), s(Y)) → MINUS_IN_GGA(X, Y)
From the DPs we obtained the following set of size-change graphs:
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
DIV_IN_GGA(X, Y) → U3_GGA(Y, minus_in_gga(X, Y))
U3_GGA(Y, minus_out_gga(U)) → DIV_IN_GGA(U, Y)
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x1), U5_gga(minus_in_gga(x0, x1)))
U3_GGA(Y, minus_out_gga(U)) → DIV_IN_GGA(U, Y)
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x1), U5_gga(minus_in_gga(x0, x1)))
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
U3_GGA(z0, minus_out_gga(0)) → DIV_IN_GGA(0, z0)
U3_GGA(0, minus_out_gga(z0)) → DIV_IN_GGA(z0, 0)
U3_GGA(s(z1), minus_out_gga(x1)) → DIV_IN_GGA(x1, s(z1))
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x1), U5_gga(minus_in_gga(x0, x1)))
U3_GGA(z0, minus_out_gga(0)) → DIV_IN_GGA(0, z0)
U3_GGA(0, minus_out_gga(z0)) → DIV_IN_GGA(z0, 0)
U3_GGA(s(z1), minus_out_gga(x1)) → DIV_IN_GGA(x1, s(z1))
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
U3_GGA(s(x0), minus_out_gga(0)) → DIV_IN_GGA(0, s(x0))
U3_GGA(s(x0), minus_out_gga(s(y_0))) → DIV_IN_GGA(s(y_0), s(x0))
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x1), U5_gga(minus_in_gga(x0, x1)))
U3_GGA(z0, minus_out_gga(0)) → DIV_IN_GGA(0, z0)
U3_GGA(0, minus_out_gga(z0)) → DIV_IN_GGA(z0, 0)
U3_GGA(s(x0), minus_out_gga(0)) → DIV_IN_GGA(0, s(x0))
U3_GGA(s(x0), minus_out_gga(s(y_0))) → DIV_IN_GGA(s(y_0), s(x0))
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
U3_GGA(z0, minus_out_gga(0)) → DIV_IN_GGA(0, z0)
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
U3_GGA(0, minus_out_gga(z0)) → DIV_IN_GGA(z0, 0)
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
U3_GGA(s(x0), minus_out_gga(0)) → DIV_IN_GGA(0, s(x0))
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
U3_GGA(z0, minus_out_gga(0)) → DIV_IN_GGA(0, z0)
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
U3_GGA(0, minus_out_gga(z0)) → DIV_IN_GGA(z0, 0)
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
U3_GGA(s(x0), minus_out_gga(0)) → DIV_IN_GGA(0, s(x0))
minus_in_gga(x0, x1)
U5_gga(x0)
minus_in_gga(x0, x1)
U5_gga(x0)
U3_GGA(z0, minus_out_gga(0)) → DIV_IN_GGA(0, z0)
DIV_IN_GGA(0, x0) → U3_GGA(x0, minus_out_gga(0))
U3_GGA(0, minus_out_gga(z0)) → DIV_IN_GGA(z0, 0)
DIV_IN_GGA(x0, 0) → U3_GGA(0, minus_out_gga(x0))
U3_GGA(s(x0), minus_out_gga(0)) → DIV_IN_GGA(0, s(x0))
U3_GGA(s(x0), minus_out_gga(s(y_0))) → DIV_IN_GGA(s(y_0), s(x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x1), U5_gga(minus_in_gga(x0, x1)))
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
U3_GGA(s(x0), minus_out_gga(s(y_0))) → DIV_IN_GGA(s(y_0), s(x0))
POL(0) = 0
POL(DIV_IN_GGA(x1, x2)) = x1 + x2
POL(U3_GGA(x1, x2)) = x1 + x2
POL(U5_gga(x1)) = x1
POL(minus_in_gga(x1, x2)) = 1 + x1
POL(minus_out_gga(x1)) = 1 + x1
POL(s(x1)) = 1 + x1
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x1), U5_gga(minus_in_gga(x0, x1)))
minus_in_gga(0, Y) → minus_out_gga(0)
minus_in_gga(X, 0) → minus_out_gga(X)
minus_in_gga(s(X), s(Y)) → U5_gga(minus_in_gga(X, Y))
U5_gga(minus_out_gga(Z)) → minus_out_gga(Z)
minus_in_gga(x0, x1)
U5_gga(x0)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
DIV_IN_GGA(X, 0, Z) → U1_GGA(X, Z, fail_in_)
DIV_IN_GGA(X, 0, Z) → FAIL_IN_
FAIL_IN_ → U6_1(fail_in_g(b))
FAIL_IN_ → FAIL_IN_G(b)
DIV_IN_GGA(0, Y, Z) → U2_GGA(Y, Z, =1_in_ag(Z, 0))
DIV_IN_GGA(0, Y, Z) → =1_IN_AG(Z, 0)
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
DIV_IN_GGA(X, Y, s(Z)) → MINUS_IN_GGA(X, Y, U)
MINUS_IN_GGA(s(X), s(Y), Z) → U5_GGA(X, Y, Z, minus_in_gga(X, Y, Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → U4_GGA(X, Y, Z, div_in_gga(U, Y, Z))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
DIV_IN_GGA(X, 0, Z) → U1_GGA(X, Z, fail_in_)
DIV_IN_GGA(X, 0, Z) → FAIL_IN_
FAIL_IN_ → U6_1(fail_in_g(b))
FAIL_IN_ → FAIL_IN_G(b)
DIV_IN_GGA(0, Y, Z) → U2_GGA(Y, Z, =1_in_ag(Z, 0))
DIV_IN_GGA(0, Y, Z) → =1_IN_AG(Z, 0)
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
DIV_IN_GGA(X, Y, s(Z)) → MINUS_IN_GGA(X, Y, U)
MINUS_IN_GGA(s(X), s(Y), Z) → U5_GGA(X, Y, Z, minus_in_gga(X, Y, Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → U4_GGA(X, Y, Z, div_in_gga(U, Y, Z))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
MINUS_IN_GGA(s(X), s(Y), Z) → MINUS_IN_GGA(X, Y, Z)
MINUS_IN_GGA(s(X), s(Y)) → MINUS_IN_GGA(X, Y)
From the DPs we obtained the following set of size-change graphs:
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
div_in_gga(X, 0, Z) → U1_gga(X, Z, fail_in_)
fail_in_ → U6_(fail_in_g(b))
fail_in_g(a) → fail_out_g(a)
U6_(fail_out_g(b)) → fail_out_
U1_gga(X, Z, fail_out_) → div_out_gga(X, 0, Z)
div_in_gga(0, Y, Z) → U2_gga(Y, Z, =1_in_ag(Z, 0))
=1_in_ag(X, X) → =1_out_ag(X, X)
U2_gga(Y, Z, =1_out_ag(Z, 0)) → div_out_gga(0, Y, Z)
div_in_gga(X, Y, s(Z)) → U3_gga(X, Y, Z, minus_in_gga(X, Y, U))
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_gga(X, Y, Z, minus_out_gga(X, Y, U)) → U4_gga(X, Y, Z, div_in_gga(U, Y, Z))
U4_gga(X, Y, Z, div_out_gga(U, Y, Z)) → div_out_gga(X, Y, s(Z))
DIV_IN_GGA(X, Y, s(Z)) → U3_GGA(X, Y, Z, minus_in_gga(X, Y, U))
U3_GGA(X, Y, Z, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y, Z)
minus_in_gga(0, Y, 0) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0, X) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y), Z) → U5_gga(X, Y, Z, minus_in_gga(X, Y, Z))
U5_gga(X, Y, Z, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
DIV_IN_GGA(X, Y) → U3_GGA(X, Y, minus_in_gga(X, Y))
U3_GGA(X, Y, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y)
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
DIV_IN_GGA(0, x0) → U3_GGA(0, x0, minus_out_gga(0, x0, 0))
DIV_IN_GGA(x0, 0) → U3_GGA(x0, 0, minus_out_gga(x0, 0, x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x0), s(x1), U5_gga(x0, x1, minus_in_gga(x0, x1)))
U3_GGA(X, Y, minus_out_gga(X, Y, U)) → DIV_IN_GGA(U, Y)
DIV_IN_GGA(0, x0) → U3_GGA(0, x0, minus_out_gga(0, x0, 0))
DIV_IN_GGA(x0, 0) → U3_GGA(x0, 0, minus_out_gga(x0, 0, x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x0), s(x1), U5_gga(x0, x1, minus_in_gga(x0, x1)))
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
U3_GGA(0, z0, minus_out_gga(0, z0, 0)) → DIV_IN_GGA(0, z0)
U3_GGA(z0, 0, minus_out_gga(z0, 0, z0)) → DIV_IN_GGA(z0, 0)
U3_GGA(s(z0), s(z1), minus_out_gga(s(z0), s(z1), x2)) → DIV_IN_GGA(x2, s(z1))
DIV_IN_GGA(0, x0) → U3_GGA(0, x0, minus_out_gga(0, x0, 0))
DIV_IN_GGA(x0, 0) → U3_GGA(x0, 0, minus_out_gga(x0, 0, x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x0), s(x1), U5_gga(x0, x1, minus_in_gga(x0, x1)))
U3_GGA(0, z0, minus_out_gga(0, z0, 0)) → DIV_IN_GGA(0, z0)
U3_GGA(z0, 0, minus_out_gga(z0, 0, z0)) → DIV_IN_GGA(z0, 0)
U3_GGA(s(z0), s(z1), minus_out_gga(s(z0), s(z1), x2)) → DIV_IN_GGA(x2, s(z1))
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
U3_GGA(0, z0, minus_out_gga(0, z0, 0)) → DIV_IN_GGA(0, z0)
DIV_IN_GGA(0, x0) → U3_GGA(0, x0, minus_out_gga(0, x0, 0))
U3_GGA(z0, 0, minus_out_gga(z0, 0, z0)) → DIV_IN_GGA(z0, 0)
DIV_IN_GGA(x0, 0) → U3_GGA(x0, 0, minus_out_gga(x0, 0, x0))
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
U3_GGA(0, z0, minus_out_gga(0, z0, 0)) → DIV_IN_GGA(0, z0)
DIV_IN_GGA(0, x0) → U3_GGA(0, x0, minus_out_gga(0, x0, 0))
U3_GGA(z0, 0, minus_out_gga(z0, 0, z0)) → DIV_IN_GGA(z0, 0)
DIV_IN_GGA(x0, 0) → U3_GGA(x0, 0, minus_out_gga(x0, 0, x0))
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
U3_GGA(0, z0, minus_out_gga(0, z0, 0)) → DIV_IN_GGA(0, z0)
DIV_IN_GGA(0, x0) → U3_GGA(0, x0, minus_out_gga(0, x0, 0))
U3_GGA(z0, 0, minus_out_gga(z0, 0, z0)) → DIV_IN_GGA(z0, 0)
DIV_IN_GGA(x0, 0) → U3_GGA(x0, 0, minus_out_gga(x0, 0, x0))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x0), s(x1), U5_gga(x0, x1, minus_in_gga(x0, x1)))
U3_GGA(s(z0), s(z1), minus_out_gga(s(z0), s(z1), x2)) → DIV_IN_GGA(x2, s(z1))
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
U3_GGA(s(x0), s(x1), minus_out_gga(s(x0), s(x1), s(y_0))) → DIV_IN_GGA(s(y_0), s(x1))
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x0), s(x1), U5_gga(x0, x1, minus_in_gga(x0, x1)))
U3_GGA(s(x0), s(x1), minus_out_gga(s(x0), s(x1), s(y_0))) → DIV_IN_GGA(s(y_0), s(x1))
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
DIV_IN_GGA(s(x0), s(x1)) → U3_GGA(s(x0), s(x1), U5_gga(x0, x1, minus_in_gga(x0, x1)))
POL(0) = 0
POL(DIV_IN_GGA(x1, x2)) = 1 + x1
POL(U3_GGA(x1, x2, x3)) = 1 + x3
POL(U5_gga(x1, x2, x3)) = x3
POL(minus_in_gga(x1, x2)) = x1
POL(minus_out_gga(x1, x2, x3)) = x3
POL(s(x1)) = 1 + x1
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
U3_GGA(s(x0), s(x1), minus_out_gga(s(x0), s(x1), s(y_0))) → DIV_IN_GGA(s(y_0), s(x1))
minus_in_gga(0, Y) → minus_out_gga(0, Y, 0)
minus_in_gga(X, 0) → minus_out_gga(X, 0, X)
minus_in_gga(s(X), s(Y)) → U5_gga(X, Y, minus_in_gga(X, Y))
U5_gga(X, Y, minus_out_gga(X, Y, Z)) → minus_out_gga(s(X), s(Y), Z)
minus_in_gga(x0, x1)
U5_gga(x0, x1, x2)