Time: 3.674357
TRS:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> eval minus_int(x, pos s s s 0()),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
SRS: We consider a TRS.
Trs:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> eval minus_int(x, pos s s s 0()),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
APP: We consider a non-applicative system.
Trs:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> eval minus_int(x, pos s s s 0()),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
REWRITE:
Strict:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
Weak:
{}
DP:
DP:
{ eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
eval# x -> and#(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())),
eval# x -> greater_int#(x, pos 0()),
eval# x -> greater_int#(mod_int(x, pos s s 0()), pos 0()),
eval# x -> mod_int#(x, pos s s 0()),
minus_int#(pos x, pos y) -> minus_nat#(x, y),
minus_int#(pos x, neg y) -> plus_nat#(x, y),
minus_int#(neg x, pos y) -> plus_nat#(x, y),
minus_int#(neg x, neg y) -> minus_nat#(y, x),
Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()),
Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
Cond_eval#(true(), x) -> and#(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())),
Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()),
Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()),
Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), 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),
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),
minus_nat#(s x, s y) -> minus_nat#(x, y),
plus_nat#(s x, y) -> plus_nat#(x, 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),
mod_nat#(s x, s y) -> minus_nat_s#(x, y),
minus_nat_s#(s x, s y) -> minus_nat_s#(x, y)}
TRS:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
EDG:
{(minus_int#(pos x, neg y) -> plus_nat#(x, y), plus_nat#(s x, y) -> plus_nat#(x, 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) -> 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) -> mod_nat#(minus_nat_s(x, y), s 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) -> 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) -> mod_nat#(minus_nat_s(x, y), s y))
(minus_nat#(s x, s y) -> minus_nat#(x, y), minus_nat#(s x, s y) -> minus_nat#(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))
(eval# x -> greater_int#(x, pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(eval# x -> greater_int#(x, pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(eval# x -> mod_int#(x, pos s s 0()), mod_int#(neg x, neg y) -> mod_nat#(x, y))
(eval# x -> mod_int#(x, pos s s 0()), mod_int#(neg x, pos y) -> mod_nat#(x, y))
(eval# x -> mod_int#(x, pos s s 0()), mod_int#(pos x, neg y) -> mod_nat#(x, y))
(eval# x -> mod_int#(x, pos s s 0()), mod_int#(pos x, pos y) -> mod_nat#(x, y))
(Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()), mod_int#(neg x, neg y) -> mod_nat#(x, y))
(Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()), mod_int#(neg x, pos y) -> mod_nat#(x, y))
(Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()), mod_int#(pos x, neg y) -> mod_nat#(x, y))
(Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()), mod_int#(pos x, pos y) -> mod_nat#(x, 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))
(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))
(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) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(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))
(minus_int#(neg x, neg y) -> minus_nat#(y, x), minus_nat#(s x, s y) -> minus_nat#(x, y))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> and#(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> and#(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()))
(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))
(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))
(Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()), minus_int#(pos x, pos y) -> minus_nat#(x, y))
(Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()), minus_int#(pos x, neg y) -> plus_nat#(x, y))
(Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()), minus_int#(neg x, pos y) -> plus_nat#(x, y))
(Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()), minus_int#(neg x, neg y) -> minus_nat#(y, x))
(eval# x -> greater_int#(mod_int(x, pos s s 0()), pos 0()), greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y))
(eval# x -> greater_int#(mod_int(x, pos s s 0()), pos 0()), greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y))
(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, 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) -> 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) -> minus_nat_s#(x, 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) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(minus_int#(neg x, pos y) -> plus_nat#(x, y), plus_nat#(s x, y) -> plus_nat#(x, y))
(minus_int#(pos x, pos y) -> minus_nat#(x, y), minus_nat#(s x, s y) -> minus_nat#(x, y))}
EDG:
{(minus_int#(pos x, neg y) -> plus_nat#(x, y), plus_nat#(s x, y) -> plus_nat#(x, 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) -> 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) -> mod_nat#(minus_nat_s(x, y), s 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) -> 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) -> mod_nat#(minus_nat_s(x, y), s y))
(minus_nat#(s x, s y) -> minus_nat#(x, y), minus_nat#(s x, s y) -> minus_nat#(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))
(eval# x -> mod_int#(x, pos s s 0()), mod_int#(neg x, pos y) -> mod_nat#(x, y))
(eval# x -> mod_int#(x, pos s s 0()), mod_int#(pos x, pos y) -> mod_nat#(x, y))
(Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()), mod_int#(neg x, pos y) -> mod_nat#(x, y))
(Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()), mod_int#(pos x, pos y) -> mod_nat#(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))
(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) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(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))
(minus_int#(neg x, neg y) -> minus_nat#(y, x), minus_nat#(s x, s y) -> minus_nat#(x, y))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> and#(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()))
(Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())), Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> and#(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> greater_int#(minus_int(x, pos s s s 0()), pos 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> greater_int#(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()))
(eval# x -> Cond_eval#(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x), Cond_eval#(true(), x) -> mod_int#(minus_int(x, pos s s s 0()), pos s s 0()))
(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))
(Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()), minus_int#(pos x, pos y) -> minus_nat#(x, y))
(Cond_eval#(true(), x) -> minus_int#(x, pos s s s 0()), minus_int#(neg x, pos y) -> plus_nat#(x, y))
(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, 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) -> 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) -> minus_nat_s#(x, 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) -> if#(greatereq_int(pos x, pos y), mod_nat(minus_nat_s(x, y), s y), s x))
(mod_int#(pos x, neg y) -> mod_nat#(x, y), mod_nat#(s x, s y) -> minus_nat_s#(x, y))
(minus_int#(neg x, pos y) -> plus_nat#(x, y), plus_nat#(s x, y) -> plus_nat#(x, y))
(minus_int#(pos x, pos y) -> minus_nat#(x, y), minus_nat#(s x, s y) -> minus_nat#(x, y))}
SCCS (7):
Scc:
{minus_nat_s#(s x, s y) -> minus_nat_s#(x, y)}
Scc:
{mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y)}
Scc:
{plus_nat#(s x, y) -> plus_nat#(x, y)}
Scc:
{minus_nat#(s x, s y) -> minus_nat#(x, 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:
{Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0()))}
SCC:
Strict:
{minus_nat_s#(s x, s y) -> minus_nat_s#(x, y)}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
SPSC:
Simple Projection:
pi(minus_nat_s#) = 1
Strict:
{}
Qed
SCC:
Strict:
{mod_nat#(s x, s y) -> mod_nat#(minus_nat_s(x, y), s y)}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
UR:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0(),
a(z, w) -> z,
a(z, w) -> w}
ARCTIC:
Argument Filtering:
pi(a) = [0,1], pi(minus_nat_s) = [0], pi(mod_nat#) = [0], pi(0) = [], pi(s) = [0]
Usable Rules:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
Interpretation:
[minus_nat_s](x0) = 1x0 + 2,
[s](x0) = 2x0 + 3,
[0] = 0,
[mod_nat#](x0) = 4x0 + 0
Strict:
{}
Weak:
{ minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0(),
a(z, w) -> z,
a(z, w) -> w}
Qed
SCC:
Strict:
{plus_nat#(s x, y) -> plus_nat#(x, y)}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
SPSC:
Simple Projection:
pi(plus_nat#) = 0
Strict:
{}
Qed
SCC:
Strict:
{minus_nat#(s x, s y) -> minus_nat#(x, y)}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
SPSC:
Simple Projection:
pi(minus_nat#) = 1
Strict:
{}
Qed
SCC:
Strict:
{greater_int#(neg s x, neg s y) -> greater_int#(neg x, neg y)}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
UR:
{}
ARCTIC:
Argument Filtering:
pi(neg) = [0], pi(greater_int#) = [1], pi(s) = [0]
Usable Rules:
{}
Interpretation:
[neg](x0) = -4x0 + 0,
[s](x0) = 5x0 + 9,
[greater_int#](x0) = -4x0 + 0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{greater_int#(pos s x, pos s y) -> greater_int#(pos x, pos y)}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
UR:
{}
ARCTIC:
Argument Filtering:
pi(greater_int#) = 1, pi(s) = [0], pi(pos) = 0
Usable Rules:
{}
Interpretation:
[s](x0) = 1x0
Strict:
{}
Weak:
{}
Qed
SCC:
Strict:
{Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0()))}
Weak:
{ eval x -> Cond_eval(and(greater_int(mod_int(x, pos s s 0()), pos 0()), greater_int(x, pos 0())), x),
minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(pos x, neg y) -> pos plus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
minus_int(neg x, neg y) -> minus_nat(y, x),
Cond_eval(true(), x) -> Cond_eval(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0())),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos s y) -> greater_int(pos x, pos y),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos s x, neg s y) -> true(),
greater_int(pos s x, neg 0()) -> true(),
greater_int(pos 0(), pos s y) -> false(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(pos 0(), neg s y) -> true(),
greater_int(pos 0(), neg 0()) -> false(),
greater_int(neg s x, pos s y) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg s x, neg s y) -> greater_int(neg x, neg y),
greater_int(neg s x, neg 0()) -> false(),
greater_int(neg 0(), pos s y) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
greater_int(neg 0(), neg s y) -> true(),
greater_int(neg 0(), neg 0()) -> false(),
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),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
if(true(), x, y) -> x,
if(false(), x, y) -> y,
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0()}
UR:
{ minus_int(pos x, pos y) -> minus_nat(x, y),
minus_int(neg x, pos y) -> neg plus_nat(x, y),
and(true(), true()) -> true(),
and(true(), false()) -> false(),
and(false(), true()) -> false(),
and(false(), false()) -> false(),
greater_int(pos s x, pos 0()) -> true(),
greater_int(pos 0(), pos 0()) -> false(),
greater_int(neg s x, pos 0()) -> false(),
greater_int(neg 0(), pos 0()) -> false(),
mod_int(pos x, pos y) -> pos mod_nat(x, y),
mod_int(neg x, pos y) -> neg mod_nat(x, y),
minus_nat(s x, s y) -> minus_nat(x, y),
minus_nat(s x, 0()) -> pos s x,
minus_nat(0(), s y) -> neg s y,
minus_nat(0(), 0()) -> pos 0(),
plus_nat(s x, y) -> s plus_nat(x, y),
plus_nat(0(), x) -> x,
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(0(), s x) -> 0(),
minus_nat_s(x, 0()) -> x,
minus_nat_s(s x, s y) -> minus_nat_s(x, y),
minus_nat_s(0(), s y) -> 0(),
a(v, u) -> v,
a(v, u) -> u}
POLY:
Mode: weak, max_in=7, output_bits=8, dnum=2, ur=true
Interpretation:
[if](x0, x1, x2) = 0,
[minus_int](x0, x1) = 0,
[and](x0, x1) = x0,
[greater_int](x0, x1) = 2x0,
[mod_int](x0, x1) = 0,
[minus_nat](x0, x1) = 0,
[plus_nat](x0, x1) = 0,
[mod_nat](x0, x1) = 0,
[greatereq_int](x0, x1) = 0,
[minus_nat_s](x0, x1) = 3 / 2x0 + 1 / 2x1 + 3,
[a](x0, x1) = 0,
[pos](x0) = 2x0,
[s](x0) = 1,
[neg](x0) = 0,
[0] = 0,
[true] = 2,
[false] = 0,
[Cond_eval#](x0, x1) = x0
Strict:
Cond_eval#(true(), x) -> Cond_eval#(and(greater_int(mod_int(minus_int(x, pos s s s 0()), pos s s 0()), pos 0()), greater_int(minus_int(x, pos s s s 0()), pos 0())), minus_int(x, pos s s s 0()))
2 + 0x >= 0 + 0x
Weak:
Qed