Time: 4.939250
TRS:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> halfExp(mult_int(b, b), e, r),
condMod(true(), b, e, r) -> sqBase(b, e, mult_int(r, b)),
condMod(false(), b, e, r) -> sqBase(b, e, r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
SRS: We consider a TRS.
Trs:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> halfExp(mult_int(b, b), e, r),
condMod(true(), b, e, r) -> sqBase(b, e, mult_int(r, b)),
condMod(false(), b, e, r) -> sqBase(b, e, r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
APP: We consider a non-applicative system.
Trs:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> halfExp(mult_int(b, b), e, r),
condMod(true(), b, e, r) -> sqBase(b, e, mult_int(r, b)),
condMod(false(), b, e, r) -> sqBase(b, e, r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
REWRITE:
Strict:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> sqBase(b, e, mult_int(r, b)),
condMod(false(), b, e, r) -> sqBase(b, e, r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
Weak:
{}
REWRITE:
Strict:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
Weak:
{}
DP:
DP:
{ halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
halfExp#(b, e, r) -> greater_int#(e, pos 0()),
halfExp#(b, e, r) -> div_int#(e, pos s s 0()),
mult_int#(pos x, pos y) -> mult_nat#(x, y),
mult_int#(pos x, neg y) -> mult_nat#(x, y),
mult_int#(neg x, pos y) -> mult_nat#(x, y),
mult_int#(neg x, neg y) -> mult_nat#(x, y),
sqBase#(b, e, r) -> mult_int#(b, b),
sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
sqBase#(b, e, r) -> greater_int#(e, pos 0()),
sqBase#(b, e, r) -> div_int#(e, pos s s 0()),
condMod#(true(), b, e, r) -> mult_int#(b, b),
condMod#(true(), b, e, r) -> mult_int#(r, b),
condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod#(true(), b, e, r) -> greater_int#(e, pos 0()),
condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()),
condMod#(false(), b, e, r) -> mult_int#(b, b),
condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod#(false(), b, e, r) -> greater_int#(e, pos 0()),
condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()),
condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()),
condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()),
greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y),
greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y),
div_int#(pos x, pos s y) -> div_nat#(x, s y),
div_int#(pos x, neg s y) -> div_nat#(x, s y),
div_int#(neg x, pos s y) -> div_nat#(x, s y),
div_int#(neg x, neg s y) -> div_nat#(x, s y),
pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()),
pow#(b, e) -> greater_int#(e, pos 0()),
equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y),
equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y),
mod_int#(pos x, pos y) -> mod_nat#(x, y),
mod_int#(pos x, neg y) -> mod_nat#(x, y),
mod_int#(neg x, pos y) -> mod_nat#(x, y),
mod_int#(neg x, neg y) -> mod_nat#(x, y),
mult_nat#(s x, s y) -> mult_nat#(x, s y),
mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y),
plus_nat#(s x, y) -> plus_nat#(x, y),
div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y),
div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
div_nat#(s x, s y) -> greatereq_int#(pos x, pos y),
div_nat#(s x, s y) -> minus_nat_s#(x, y),
greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y),
greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y),
minus_nat_s#(s x, s y) -> minus_nat_s#(x, y),
mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x),
mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y),
mod_nat#(s x, s y) -> minus_nat_s#(x, y),
mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y)}
TRS:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
EDG:
{
(mult_int#(pos x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(mult_int#(pos x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_int#(neg x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(mult_int#(neg x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(div_nat#(s x, s y) -> minus_nat_s#(x, y), minus_nat_s#(s x, s y) -> minus_nat_s#(x, y))
(mod_nat#(s x, s y) -> minus_nat_s#(x, y), minus_nat_s#(s x, s y) -> minus_nat_s#(x, y))
(condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> greater_int#(e, pos 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> mult_int#(b, b))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> greater_int#(e, pos 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> mult_int#(r, b))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> mult_int#(b, b))
(greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y), equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y))
(equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y), equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y))
(mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y), plus_nat#(s x, y) -> plus_nat#(x, y))
(div_nat#(s x, s y) -> greatereq_int#(pos x, pos y), greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y))
(div_nat#(s x, s y) -> greatereq_int#(pos x, pos y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y), greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y))
(greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(halfExp#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, neg s y) -> div_nat#(x, s y))
(halfExp#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(halfExp#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, neg s y) -> div_nat#(x, s y))
(halfExp#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(sqBase#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, neg s y) -> div_nat#(x, s y))
(sqBase#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(sqBase#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, neg s y) -> div_nat#(x, s y))
(sqBase#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, neg s y) -> div_nat#(x, s y))
(condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, neg s y) -> div_nat#(x, s y))
(condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, neg s y) -> div_nat#(x, s y))
(condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, neg s y) -> div_nat#(x, s y))
(condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()), mod_int#(neg x, neg y) -> mod_nat#(x, y))
(condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()), mod_int#(neg x, pos y) -> mod_nat#(x, y))
(condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()), mod_int#(pos x, neg y) -> mod_nat#(x, y))
(condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()), mod_int#(pos x, pos y) -> mod_nat#(x, y))
(pow#(b, e) -> greater_int#(e, pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(pow#(b, e) -> greater_int#(e, pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()), equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y))
(condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()), equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y))
(condMod#(false(), b, e, r) -> greater_int#(e, pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(condMod#(false(), b, e, r) -> greater_int#(e, pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(condMod#(true(), b, e, r) -> greater_int#(e, pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(condMod#(true(), b, e, r) -> greater_int#(e, pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(sqBase#(b, e, r) -> greater_int#(e, pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(sqBase#(b, e, r) -> greater_int#(e, pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(halfExp#(b, e, r) -> greater_int#(e, pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(halfExp#(b, e, r) -> greater_int#(e, pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y), greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y))
(greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y), greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(mult_nat#(s x, s y) -> mult_nat#(x, s y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_nat#(s x, s y) -> mult_nat#(x, s y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y), equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y))
(equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y), equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(minus_nat_s#(s x, s y) -> minus_nat_s#(x, y), minus_nat_s#(s x, s y) -> minus_nat_s#(x, y))
(plus_nat#(s x, y) -> plus_nat#(x, y), plus_nat#(s x, y) -> plus_nat#(x, y))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mult_int#(neg x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_int#(neg x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(mult_int#(pos x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_int#(pos x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
}
EDG:
{
(mult_int#(pos x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(mult_int#(pos x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_int#(neg x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(mult_int#(neg x, neg y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(neg x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(div_nat#(s x, s y) -> minus_nat_s#(x, y), minus_nat_s#(s x, s y) -> minus_nat_s#(x, y))
(mod_nat#(s x, s y) -> minus_nat_s#(x, y), minus_nat_s#(s x, s y) -> minus_nat_s#(x, y))
(condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(condMod#(false(), b, e, r) -> mult_int#(b, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(sqBase#(b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> greater_int#(e, pos 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(false(), b, e, r) -> mult_int#(b, b))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> greater_int#(e, pos 0()))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> mult_int#(r, b))
(condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r), condMod#(true(), b, e, r) -> mult_int#(b, b))
(greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(pos x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(neg x, neg s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y), equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y))
(mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y), plus_nat#(s x, y) -> plus_nat#(x, y))
(div_nat#(s x, s y) -> greatereq_int#(pos x, pos y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y), greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(halfExp#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(halfExp#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(sqBase#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(sqBase#(b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(condMod#(true(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(neg x, pos s y) -> div_nat#(x, s y))
(condMod#(false(), b, e, r) -> div_int#(e, pos s s 0()), div_int#(pos x, pos s y) -> div_nat#(x, s y))
(condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()), mod_int#(neg x, pos y) -> mod_nat#(x, y))
(condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()), mod_int#(pos x, pos y) -> mod_nat#(x, y))
(condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()), equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y))
(mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y), greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(mult_nat#(s x, s y) -> mult_nat#(x, s y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_nat#(s x, s y) -> mult_nat#(x, s y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y), equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(neg x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(div_int#(pos x, pos s y) -> div_nat#(x, s y), div_nat#(s x, s y) -> minus_nat_s#(x, y))
(greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(halfExp#(b, e, r) -> condLoop#(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(condMod#(true(), b, e, r) -> mult_int#(r, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(pos x, pos y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(pos x, neg y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(neg x, pos y) -> mult_nat#(x, y))
(sqBase#(b, e, r) -> mult_int#(b, b), mult_int#(neg x, neg y) -> mult_nat#(x, y))
(pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()), condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r))
(pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()), condLoop#(true(), b, e, r) -> equal_int#(mod_int(e, pos s s 0()), pos s 0()))
(pow#(b, e) -> condLoop#(greater_int(e, pos 0()), b, e, pos s 0()), condLoop#(true(), b, e, r) -> mod_int#(e, pos s s 0()))
(minus_nat_s#(s x, s y) -> minus_nat_s#(x, y), minus_nat_s#(s x, s y) -> minus_nat_s#(x, y))
(plus_nat#(s x, y) -> plus_nat#(x, y), plus_nat#(s x, y) -> plus_nat#(x, y))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(neg x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> greatereq_int#(pos x, pos y))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(mod_int#(pos x, pos y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y))
(mult_int#(neg x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_int#(neg x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
(mult_int#(pos x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> mult_nat#(x, s y))
(mult_int#(pos x, pos y) -> mult_nat#(x, y), mult_nat#(s x, s y) -> plus_nat#(mult_nat(x, s y), s y))
}
SCCS (12):
Scc:
{mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y)}
Scc:
{minus_nat_s#(s x, s y) -> minus_nat_s#(x, y)}
Scc:
{greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y)}
Scc:
{greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y)}
Scc:
{div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y)}
Scc:
{plus_nat#(s x, y) -> plus_nat#(x, y)}
Scc:
{mult_nat#(s x, s y) -> mult_nat#(x, s y)}
Scc:
{equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y)}
Scc:
{equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y)}
Scc:
{greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y)}
Scc:
{greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y)}
Scc:
{ condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r)}
SCC:
Strict:
{mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
a(z, w) -> z,
a(z, w) -> w}
ARCTIC:
Argument Filtering:
pi(a) = [0,1], pi(mod_nat#) = [0], pi(minus_nat_s) = [0], pi(s) = [0], pi(0) = []
Usable Rules:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y)}
Interpretation:
[minus_nat_s](x0) = 2x0 + 2,
[s](x0) = 3x0 + 4,
[0] = 0,
[mod_nat#](x0) = -2x0 + 0
Strict:
{}
Weak:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
a(z, w) -> z,
a(z, w) -> w}
Qed
SCC:
Strict:
{minus_nat_s#(s x, s y) -> minus_nat_s#(x, y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
SPSC:
Simple Projection:
pi(minus_nat_s#) = 1
Strict:
{}
Qed
SCC:
Strict:
{greatereq_int#(neg s x, neg s y) -> greatereq_int#(neg x, neg y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{}
ARCTIC:
Argument Filtering:
pi(greatereq_int#) = [1], pi(neg) = [0], pi(s) = [0]
Usable Rules:
{}
Interpretation:
[neg](x0) = -4x0 + 0,
[s](x0) = 5x0 + 9,
[greatereq_int#](x0) = -4x0 + 0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{greatereq_int#(pos s x, pos s y) -> greatereq_int#(pos x, pos y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{}
ARCTIC:
Argument Filtering:
pi(greatereq_int#) = 1, pi(s) = [0], pi(pos) = 0
Usable Rules:
{}
Interpretation:
[s](x0) = 1x0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{div_nat#(s x, s y) -> div_nat#(minus_nat_s(x, y), s y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
a(z, w) -> z,
a(z, w) -> w}
ARCTIC:
Argument Filtering:
pi(a) = [0,1], pi(minus_nat_s) = 0, pi(div_nat#) = 0, pi(s) = [0], pi(0) = []
Usable Rules:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y)}
Interpretation:
[s](x0) = 1x0,
[0] = 0
Strict:
{}
Weak:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
a(z, w) -> z,
a(z, w) -> w}
Qed
SCC:
Strict:
{plus_nat#(s x, y) -> plus_nat#(x, y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
SPSC:
Simple Projection:
pi(plus_nat#) = 0
Strict:
{}
Qed
SCC:
Strict:
{mult_nat#(s x, s y) -> mult_nat#(x, s y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
SPSC:
Simple Projection:
pi(mult_nat#) = 0
Strict:
{}
Qed
SCC:
Strict:
{equal_int#(neg s x, neg s y) -> equal_int#(neg x, neg y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{}
ARCTIC:
Argument Filtering:
pi(neg) = 0, pi(equal_int#) = 1, pi(s) = [0]
Usable Rules:
{}
Interpretation:
[s](x0) = 1x0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{equal_int#(pos s x, pos s y) -> equal_int#(pos x, pos y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{}
ARCTIC:
Argument Filtering:
pi(equal_int#) = [1], pi(s) = [0], pi(pos) = [0]
Usable Rules:
{}
Interpretation:
[s](x0) = 5x0 + 9,
[pos](x0) = -4x0 + 0,
[equal_int#](x0) = -4x0 + 0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{}
ARCTIC:
Argument Filtering:
pi(neg) = 0, pi(s) = [0], pi(greater_int#) = 1
Usable Rules:
{}
Interpretation:
[s](x0) = 1x0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{}
ARCTIC:
Argument Filtering:
pi(s) = [0], pi(pos) = [0], pi(greater_int#) = [1]
Usable Rules:
{}
Interpretation:
[s](x0) = 5x0 + 9,
[pos](x0) = -4x0 + 0,
[greater_int#](x0) = -4x0 + 0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{ condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r)}
Weak:
{ halfExp(b, e, r) -> condLoop(greater_int(e, pos 0()), b, div_int(e, pos s s 0()), r),
mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
sqBase(b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condMod(true(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b)),
condMod(false(), b, e, r) -> condLoop(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r),
condLoop(true(), b, e, r) -> condMod(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r),
condLoop(false(), b, e, r) -> r,
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), neg 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(pos x, neg s y) -> neg div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
div_int(neg x, neg s y) -> pos div_nat(x, s y),
pow(b, e) -> condLoop(greater_int(e, pos 0()), b, e, pos s 0()),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos 0(), neg 0()) -> true(),
equal_int(pos 0(), neg s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(pos s x, neg 0()) -> false(),
equal_int(pos s x, neg s y) -> false(),
equal_int(neg 0(), pos 0()) -> true(),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg 0(), neg 0()) -> true(),
equal_int(neg 0(), neg s y) -> false(),
equal_int(neg s x, pos 0()) -> false(),
equal_int(neg s x, pos s y) -> false(),
equal_int(neg s x, neg 0()) -> false(),
equal_int(neg s x, neg s y) -> equal_int(neg x, neg y),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(pos x, neg y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mod_int(neg x, neg y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos x, neg y) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
greatereq_int(neg x, pos s y) -> false(),
greatereq_int(neg 0(), pos 0()) -> true(),
greatereq_int(neg 0(), neg y) -> true(),
greatereq_int(neg s x, pos 0()) -> false(),
greatereq_int(neg s x, neg 0()) -> false(),
greatereq_int(neg s x, neg s y) -> greatereq_int(neg x, neg y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x)}
UR:
{ mult_int(pos x, pos y) -> pos mult_nat(x, y),
mult_int(pos x, neg y) -> neg mult_nat(x, y),
mult_int(neg x, pos y) -> neg mult_nat(x, y),
mult_int(neg x, neg y) -> pos mult_nat(x, y),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg s x, pos 0()) -> false(),
div_int(pos x, pos s y) -> pos div_nat(x, s y),
div_int(neg x, pos s y) -> neg div_nat(x, s y),
equal_int(pos 0(), pos 0()) -> true(),
equal_int(pos 0(), pos s y) -> false(),
equal_int(pos s x, pos 0()) -> false(),
equal_int(pos s x, pos s y) -> equal_int(pos x, pos y),
equal_int(neg 0(), pos s y) -> false(),
equal_int(neg s x, pos s y) -> false(),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
mult_nat(0(), y) -> 0(),
mult_nat(s x, 0()) -> 0(),
mult_nat(s x, s y) -> plus_nat(mult_nat(x, s y), s y),
plus_nat(0(), x) -> x,
plus_nat(s x, y) -> s plus_nat(x, y),
div_nat(0(), s y) -> 0(),
div_nat(s x, s y) -> if(greatereq_int(pos x, pos y), div_nat(minus_nat_s(x, y), s y), 0()),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
greatereq_int(pos x, pos 0()) -> true(),
greatereq_int(pos 0(), pos s y) -> false(),
greatereq_int(pos s x, pos s y) -> greatereq_int(pos x, pos y),
minus_nat_s(x, 0()) -> x,
minus_nat_s(0(), s y) -> 0(),
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
mod_nat(0(), s x) -> 0(),
mod_nat(s x, s y) -> if(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x),
a(v, u) -> v,
a(v, u) -> u}
POLY:
Mode: weak, max_in=7, output_bits=5, dnum=1, ur=true
Interpretation:
[if](x0, x1, x2) = 4x0 + x1,
[mult_int](x0, x1) = 0,
[greater_int](x0, x1) = x0,
[div_int](x0, x1) = 0,
[equal_int](x0, x1) = 0,
[mod_int](x0, x1) = 0,
[mult_nat](x0, x1) = 0,
[plus_nat](x0, x1) = 0,
[div_nat](x0, x1) = 0,
[greatereq_int](x0, x1) = x0,
[minus_nat_s](x0, x1) = 0,
[mod_nat](x0, x1) = 0,
[a](x0, x1) = 0,
[pos](x0) = 4x0,
[s](x0) = 4,
[neg](x0) = 4x0,
[true] = 1,
[0] = 0,
[false] = 0,
[condMod#](x0, x1, x2, x3) = x0 + 1,
[condLoop#](x0, x1, x2, x3) = x0 + x1
Strict:
condLoop#(true(), b, e, r) -> condMod#(equal_int(mod_int(e, pos s s 0()), pos s 0()), b, e, r)
1 + 0b + 1e + 0r >= 1 + 0b + 1e + 0r
condMod#(false(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), r)
1 + 0b + 1e + 0r >= 0 + 0b + 1e + 0r
condMod#(true(), b, e, r) -> condLoop#(greater_int(e, pos 0()), mult_int(b, b), div_int(e, pos s s 0()), mult_int(r, b))
1 + 0b + 1e + 0r >= 0 + 0b + 1e + 0r
Weak:
SCCS (0):
Qed