MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given ETRS could not be shown: (0) ETRS (1) EquationalDependencyPairsProof [EQUIVALENT, 99 ms] (2) EDP (3) EDependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) EDP (6) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (7) EDP (8) EUsableRulesReductionPairsProof [EQUIVALENT, 47 ms] (9) EDP (10) PisEmptyProof [EQUIVALENT, 0 ms] (11) YES (12) EDP (13) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (14) EDP (15) EUsableRulesReductionPairsProof [EQUIVALENT, 209 ms] (16) EDP (17) EDependencyGraphProof [EQUIVALENT, 0 ms] (18) TRUE (19) EDP (20) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (21) EDP (22) EUsableRulesReductionPairsProof [EQUIVALENT, 84 ms] (23) EDP (24) EDependencyGraphProof [EQUIVALENT, 0 ms] (25) TRUE (26) EDP (27) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (28) EDP (29) EUsableRulesReductionPairsProof [EQUIVALENT, 90 ms] (30) EDP (31) EDependencyGraphProof [EQUIVALENT, 0 ms] (32) TRUE (33) EDP (34) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (35) EDP (36) EUsableRulesReductionPairsProof [EQUIVALENT, 105 ms] (37) EDP (38) EDependencyGraphProof [EQUIVALENT, 0 ms] (39) TRUE (40) EDP (41) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (42) EDP (43) EUsableRulesReductionPairsProof [EQUIVALENT, 77 ms] (44) EDP (45) EDependencyGraphProof [EQUIVALENT, 0 ms] (46) TRUE (47) EDP (48) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (49) EDP (50) EUsableRulesProof [EQUIVALENT, 25 ms] (51) EDP (52) EDP ---------------------------------------- (0) Obligation: Equational rewrite system: The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) ---------------------------------------- (1) EquationalDependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,DA_STEIN] we result in the following initial EDP problem: The TRS P consists of the following rules: U101^1(tt, M, N) -> D(N, M) U121^1(tt, M', N') -> U122^1(equal(_>_(N', M'), true), M', N') U121^1(tt, M', N') -> EQUAL(_>_(N', M'), true) U121^1(tt, M', N') -> _>_^1(N', M') U122^1(tt, M', N') -> GCD(d(N', M'), M') U122^1(tt, M', N') -> D(N', M') U141^1(tt, V1, V2) -> U142^1(isNat(V1), V2) U141^1(tt, V1, V2) -> ISNAT(V1) U142^1(tt, V2) -> U143^1(isNat(V2)) U142^1(tt, V2) -> ISNAT(V2) U151^1(tt, V1, V2) -> U152^1(isNat(V1), V2) U151^1(tt, V1, V2) -> ISNAT(V1) U152^1(tt, V2) -> U153^1(isNat(V2)) U152^1(tt, V2) -> ISNAT(V2) U161^1(tt, V) -> U162^1(isNzNat(V)) U161^1(tt, V) -> ISNZNAT(V) U171^1(tt, V1, V2) -> U172^1(isNat(V1), V2) U171^1(tt, V1, V2) -> ISNAT(V1) U172^1(tt, V2) -> U173^1(isNat(V2)) U172^1(tt, V2) -> ISNAT(V2) U181^1(tt, V1, V2) -> U182^1(isNat(V1), V2) U181^1(tt, V1, V2) -> ISNAT(V1) U182^1(tt, V2) -> U183^1(isNat(V2)) U182^1(tt, V2) -> ISNAT(V2) U191^1(tt, V1, V2) -> U192^1(isNat(V1), V2) U191^1(tt, V1, V2) -> ISNAT(V1) U192^1(tt, V2) -> U193^1(isNat(V2)) U192^1(tt, V2) -> ISNAT(V2) U201^1(tt, V1, V2) -> U202^1(isNat(V1), V2) U201^1(tt, V1, V2) -> ISNAT(V1) U202^1(tt, V2) -> U203^1(isNat(V2)) U202^1(tt, V2) -> ISNAT(V2) U21^1(tt, M, N) -> _+_^1(N, _+_(M, _*_(N, M))) U21^1(tt, M, N) -> _+_^1(M, _*_(N, M)) U21^1(tt, M, N) -> _*_^1(N, M) U211^1(tt, V1) -> U212^1(isNzNat(V1)) U211^1(tt, V1) -> ISNZNAT(V1) U221^1(tt, V1, V2) -> U222^1(isNat(V1), V2) U221^1(tt, V1, V2) -> ISNAT(V1) U222^1(tt, V2) -> U223^1(isNzNat(V2)) U222^1(tt, V2) -> ISNZNAT(V2) U231^1(tt, V1, V2) -> U232^1(isNzNat(V1), V2) U231^1(tt, V1, V2) -> ISNZNAT(V1) U232^1(tt, V2) -> U233^1(isNzNat(V2)) U232^1(tt, V2) -> ISNZNAT(V2) U241^1(tt, V1, V2) -> U242^1(isNzNat(V1), V2) U241^1(tt, V1, V2) -> ISNZNAT(V1) U242^1(tt, V2) -> U243^1(isNzNat(V2)) U242^1(tt, V2) -> ISNZNAT(V2) U251^1(tt, V1) -> U252^1(isNat(V1)) U251^1(tt, V1) -> ISNAT(V1) U281^1(tt, M', N) -> U282^1(equal(_>_(M', N), true)) U281^1(tt, M', N) -> EQUAL(_>_(M', N), true) U281^1(tt, M', N) -> _>_^1(M', N) U291^1(tt, M', N) -> U292^1(equal(_>_(N, M'), true), M', N) U291^1(tt, M', N) -> EQUAL(_>_(N, M'), true) U291^1(tt, M', N) -> _>_^1(N, M') U292^1(tt, M', N) -> QUOT(d(N, M'), M') U292^1(tt, M', N) -> D(N, M') U41^1(tt, M, N) -> _+_^1(N, M) U51^1(tt, M, N) -> _>_^1(M, N) U81^1(tt, M, N) -> _>_^1(N, M) _*_^1(N, 0) -> U11^1(and(isNat(N), isNatKind(N))) _*_^1(N, 0) -> AND(isNat(N), isNatKind(N)) _*_^1(N, 0) -> ISNAT(N) _*_^1(N, 0) -> ISNATKIND(N) _*_^1(s_(N), s_(M)) -> U21^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _*_^1(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _*_^1(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) _*_^1(s_(N), s_(M)) -> ISNAT(M) _*_^1(s_(N), s_(M)) -> ISNATKIND(M) _*_^1(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) _*_^1(s_(N), s_(M)) -> ISNAT(N) _*_^1(s_(N), s_(M)) -> ISNATKIND(N) _+_^1(N, 0) -> U31^1(and(isNat(N), isNatKind(N)), N) _+_^1(N, 0) -> AND(isNat(N), isNatKind(N)) _+_^1(N, 0) -> ISNAT(N) _+_^1(N, 0) -> ISNATKIND(N) _+_^1(s_(N), s_(M)) -> U41^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_^1(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _+_^1(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) _+_^1(s_(N), s_(M)) -> ISNAT(M) _+_^1(s_(N), s_(M)) -> ISNATKIND(M) _+_^1(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) _+_^1(s_(N), s_(M)) -> ISNAT(N) _+_^1(s_(N), s_(M)) -> ISNATKIND(N) _<_^1(N, M) -> U51^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_^1(N, M) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _<_^1(N, M) -> AND(isNat(M), isNatKind(M)) _<_^1(N, M) -> ISNAT(M) _<_^1(N, M) -> ISNATKIND(M) _<_^1(N, M) -> AND(isNat(N), isNatKind(N)) _<_^1(N, M) -> ISNAT(N) _<_^1(N, M) -> ISNATKIND(N) _>_^1(0, M) -> U61^1(and(isNat(M), isNatKind(M))) _>_^1(0, M) -> AND(isNat(M), isNatKind(M)) _>_^1(0, M) -> ISNAT(M) _>_^1(0, M) -> ISNATKIND(M) _>_^1(N', 0) -> U71^1(and(isNzNat(N'), isNatKind(N'))) _>_^1(N', 0) -> AND(isNzNat(N'), isNatKind(N')) _>_^1(N', 0) -> ISNZNAT(N') _>_^1(N', 0) -> ISNATKIND(N') _>_^1(s_(N), s_(M)) -> U81^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_^1(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _>_^1(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) _>_^1(s_(N), s_(M)) -> ISNAT(M) _>_^1(s_(N), s_(M)) -> ISNATKIND(M) _>_^1(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) _>_^1(s_(N), s_(M)) -> ISNAT(N) _>_^1(s_(N), s_(M)) -> ISNATKIND(N) D(0, N) -> U91^1(and(isNat(N), isNatKind(N)), N) D(0, N) -> AND(isNat(N), isNatKind(N)) D(0, N) -> ISNAT(N) D(0, N) -> ISNATKIND(N) D(s_(N), s_(M)) -> U101^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) D(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) D(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) D(s_(N), s_(M)) -> ISNAT(M) D(s_(N), s_(M)) -> ISNATKIND(M) D(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) D(s_(N), s_(M)) -> ISNAT(N) D(s_(N), s_(M)) -> ISNATKIND(N) GCD(0, N) -> U111^1(and(isNat(N), isNatKind(N))) GCD(0, N) -> AND(isNat(N), isNatKind(N)) GCD(0, N) -> ISNAT(N) GCD(0, N) -> ISNATKIND(N) GCD(N', M') -> U121^1(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') GCD(N', M') -> AND(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))) GCD(N', M') -> AND(isNzNat(M'), isNatKind(M')) GCD(N', M') -> ISNZNAT(M') GCD(N', M') -> ISNATKIND(M') GCD(N', M') -> AND(isNzNat(N'), isNatKind(N')) GCD(N', M') -> ISNZNAT(N') GCD(N', M') -> ISNATKIND(N') GCD(N', N') -> U131^1(and(isNzNat(N'), isNatKind(N')), N') GCD(N', N') -> AND(isNzNat(N'), isNatKind(N')) GCD(N', N') -> ISNZNAT(N') GCD(N', N') -> ISNATKIND(N') ISBOOLEAN(_<_(V1, V2)) -> U141^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISBOOLEAN(_<_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEAN(_<_(V1, V2)) -> ISNATKIND(V1) ISBOOLEAN(_<_(V1, V2)) -> ISNATKIND(V2) ISBOOLEAN(_>_(V1, V2)) -> U151^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISBOOLEAN(_>_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEAN(_>_(V1, V2)) -> ISNATKIND(V1) ISBOOLEAN(_>_(V1, V2)) -> ISNATKIND(V2) ISBOOLEANKIND(_<_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEANKIND(_<_(V1, V2)) -> ISNATKIND(V1) ISBOOLEANKIND(_<_(V1, V2)) -> ISNATKIND(V2) ISBOOLEANKIND(_>_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEANKIND(_>_(V1, V2)) -> ISNATKIND(V1) ISBOOLEANKIND(_>_(V1, V2)) -> ISNATKIND(V2) ISNAT(V) -> U161^1(isNatKind(V), V) ISNAT(V) -> ISNATKIND(V) ISNAT(_*_(V1, V2)) -> U171^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_*_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(_*_(V1, V2)) -> ISNATKIND(V1) ISNAT(_*_(V1, V2)) -> ISNATKIND(V2) ISNAT(_+_(V1, V2)) -> U181^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_+_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(_+_(V1, V2)) -> ISNATKIND(V1) ISNAT(_+_(V1, V2)) -> ISNATKIND(V2) ISNAT(d(V1, V2)) -> U191^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(d(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(d(V1, V2)) -> ISNATKIND(V1) ISNAT(d(V1, V2)) -> ISNATKIND(V2) ISNAT(gcd(V1, V2)) -> U201^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(gcd(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(gcd(V1, V2)) -> ISNATKIND(V1) ISNAT(gcd(V1, V2)) -> ISNATKIND(V2) ISNAT(p_(V1)) -> U211^1(isNatKind(V1), V1) ISNAT(p_(V1)) -> ISNATKIND(V1) ISNAT(quot(V1, V2)) -> U221^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(quot(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(quot(V1, V2)) -> ISNATKIND(V1) ISNAT(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_*_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_+_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(d(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(d(V1, V2)) -> ISNATKIND(V1) ISNATKIND(d(V1, V2)) -> ISNATKIND(V2) ISNATKIND(gcd(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V1) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V2) ISNATKIND(p_(V1)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(s_(V1)) -> ISNATKIND(V1) ISNZNAT(_*_(V1, V2)) -> U231^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(_*_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNZNAT(_*_(V1, V2)) -> ISNATKIND(V1) ISNZNAT(_*_(V1, V2)) -> ISNATKIND(V2) ISNZNAT(gcd(V1, V2)) -> U241^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(gcd(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNZNAT(gcd(V1, V2)) -> ISNATKIND(V1) ISNZNAT(gcd(V1, V2)) -> ISNATKIND(V2) ISNZNAT(s_(V1)) -> U251^1(isNatKind(V1), V1) ISNZNAT(s_(V1)) -> ISNATKIND(V1) P_(s_(N)) -> U261^1(and(isNat(N), isNatKind(N)), N) P_(s_(N)) -> AND(isNat(N), isNatKind(N)) P_(s_(N)) -> ISNAT(N) P_(s_(N)) -> ISNATKIND(N) QUOT(M', M') -> U271^1(and(isNzNat(M'), isNatKind(M'))) QUOT(M', M') -> AND(isNzNat(M'), isNatKind(M')) QUOT(M', M') -> ISNZNAT(M') QUOT(M', M') -> ISNATKIND(M') QUOT(N, M') -> U281^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) QUOT(N, M') -> AND(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))) QUOT(N, M') -> AND(isNzNat(M'), isNatKind(M')) QUOT(N, M') -> ISNZNAT(M') QUOT(N, M') -> ISNATKIND(M') QUOT(N, M') -> AND(isNat(N), isNatKind(N)) QUOT(N, M') -> ISNAT(N) QUOT(N, M') -> ISNATKIND(N) QUOT(N, M') -> U291^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (2) Obligation: The TRS P consists of the following rules: U101^1(tt, M, N) -> D(N, M) U121^1(tt, M', N') -> U122^1(equal(_>_(N', M'), true), M', N') U121^1(tt, M', N') -> EQUAL(_>_(N', M'), true) U121^1(tt, M', N') -> _>_^1(N', M') U122^1(tt, M', N') -> GCD(d(N', M'), M') U122^1(tt, M', N') -> D(N', M') U141^1(tt, V1, V2) -> U142^1(isNat(V1), V2) U141^1(tt, V1, V2) -> ISNAT(V1) U142^1(tt, V2) -> U143^1(isNat(V2)) U142^1(tt, V2) -> ISNAT(V2) U151^1(tt, V1, V2) -> U152^1(isNat(V1), V2) U151^1(tt, V1, V2) -> ISNAT(V1) U152^1(tt, V2) -> U153^1(isNat(V2)) U152^1(tt, V2) -> ISNAT(V2) U161^1(tt, V) -> U162^1(isNzNat(V)) U161^1(tt, V) -> ISNZNAT(V) U171^1(tt, V1, V2) -> U172^1(isNat(V1), V2) U171^1(tt, V1, V2) -> ISNAT(V1) U172^1(tt, V2) -> U173^1(isNat(V2)) U172^1(tt, V2) -> ISNAT(V2) U181^1(tt, V1, V2) -> U182^1(isNat(V1), V2) U181^1(tt, V1, V2) -> ISNAT(V1) U182^1(tt, V2) -> U183^1(isNat(V2)) U182^1(tt, V2) -> ISNAT(V2) U191^1(tt, V1, V2) -> U192^1(isNat(V1), V2) U191^1(tt, V1, V2) -> ISNAT(V1) U192^1(tt, V2) -> U193^1(isNat(V2)) U192^1(tt, V2) -> ISNAT(V2) U201^1(tt, V1, V2) -> U202^1(isNat(V1), V2) U201^1(tt, V1, V2) -> ISNAT(V1) U202^1(tt, V2) -> U203^1(isNat(V2)) U202^1(tt, V2) -> ISNAT(V2) U21^1(tt, M, N) -> _+_^1(N, _+_(M, _*_(N, M))) U21^1(tt, M, N) -> _+_^1(M, _*_(N, M)) U21^1(tt, M, N) -> _*_^1(N, M) U211^1(tt, V1) -> U212^1(isNzNat(V1)) U211^1(tt, V1) -> ISNZNAT(V1) U221^1(tt, V1, V2) -> U222^1(isNat(V1), V2) U221^1(tt, V1, V2) -> ISNAT(V1) U222^1(tt, V2) -> U223^1(isNzNat(V2)) U222^1(tt, V2) -> ISNZNAT(V2) U231^1(tt, V1, V2) -> U232^1(isNzNat(V1), V2) U231^1(tt, V1, V2) -> ISNZNAT(V1) U232^1(tt, V2) -> U233^1(isNzNat(V2)) U232^1(tt, V2) -> ISNZNAT(V2) U241^1(tt, V1, V2) -> U242^1(isNzNat(V1), V2) U241^1(tt, V1, V2) -> ISNZNAT(V1) U242^1(tt, V2) -> U243^1(isNzNat(V2)) U242^1(tt, V2) -> ISNZNAT(V2) U251^1(tt, V1) -> U252^1(isNat(V1)) U251^1(tt, V1) -> ISNAT(V1) U281^1(tt, M', N) -> U282^1(equal(_>_(M', N), true)) U281^1(tt, M', N) -> EQUAL(_>_(M', N), true) U281^1(tt, M', N) -> _>_^1(M', N) U291^1(tt, M', N) -> U292^1(equal(_>_(N, M'), true), M', N) U291^1(tt, M', N) -> EQUAL(_>_(N, M'), true) U291^1(tt, M', N) -> _>_^1(N, M') U292^1(tt, M', N) -> QUOT(d(N, M'), M') U292^1(tt, M', N) -> D(N, M') U41^1(tt, M, N) -> _+_^1(N, M) U51^1(tt, M, N) -> _>_^1(M, N) U81^1(tt, M, N) -> _>_^1(N, M) _*_^1(N, 0) -> U11^1(and(isNat(N), isNatKind(N))) _*_^1(N, 0) -> AND(isNat(N), isNatKind(N)) _*_^1(N, 0) -> ISNAT(N) _*_^1(N, 0) -> ISNATKIND(N) _*_^1(s_(N), s_(M)) -> U21^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _*_^1(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _*_^1(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) _*_^1(s_(N), s_(M)) -> ISNAT(M) _*_^1(s_(N), s_(M)) -> ISNATKIND(M) _*_^1(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) _*_^1(s_(N), s_(M)) -> ISNAT(N) _*_^1(s_(N), s_(M)) -> ISNATKIND(N) _+_^1(N, 0) -> U31^1(and(isNat(N), isNatKind(N)), N) _+_^1(N, 0) -> AND(isNat(N), isNatKind(N)) _+_^1(N, 0) -> ISNAT(N) _+_^1(N, 0) -> ISNATKIND(N) _+_^1(s_(N), s_(M)) -> U41^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_^1(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _+_^1(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) _+_^1(s_(N), s_(M)) -> ISNAT(M) _+_^1(s_(N), s_(M)) -> ISNATKIND(M) _+_^1(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) _+_^1(s_(N), s_(M)) -> ISNAT(N) _+_^1(s_(N), s_(M)) -> ISNATKIND(N) _<_^1(N, M) -> U51^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_^1(N, M) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _<_^1(N, M) -> AND(isNat(M), isNatKind(M)) _<_^1(N, M) -> ISNAT(M) _<_^1(N, M) -> ISNATKIND(M) _<_^1(N, M) -> AND(isNat(N), isNatKind(N)) _<_^1(N, M) -> ISNAT(N) _<_^1(N, M) -> ISNATKIND(N) _>_^1(0, M) -> U61^1(and(isNat(M), isNatKind(M))) _>_^1(0, M) -> AND(isNat(M), isNatKind(M)) _>_^1(0, M) -> ISNAT(M) _>_^1(0, M) -> ISNATKIND(M) _>_^1(N', 0) -> U71^1(and(isNzNat(N'), isNatKind(N'))) _>_^1(N', 0) -> AND(isNzNat(N'), isNatKind(N')) _>_^1(N', 0) -> ISNZNAT(N') _>_^1(N', 0) -> ISNATKIND(N') _>_^1(s_(N), s_(M)) -> U81^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_^1(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) _>_^1(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) _>_^1(s_(N), s_(M)) -> ISNAT(M) _>_^1(s_(N), s_(M)) -> ISNATKIND(M) _>_^1(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) _>_^1(s_(N), s_(M)) -> ISNAT(N) _>_^1(s_(N), s_(M)) -> ISNATKIND(N) D(0, N) -> U91^1(and(isNat(N), isNatKind(N)), N) D(0, N) -> AND(isNat(N), isNatKind(N)) D(0, N) -> ISNAT(N) D(0, N) -> ISNATKIND(N) D(s_(N), s_(M)) -> U101^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) D(s_(N), s_(M)) -> AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) D(s_(N), s_(M)) -> AND(isNat(M), isNatKind(M)) D(s_(N), s_(M)) -> ISNAT(M) D(s_(N), s_(M)) -> ISNATKIND(M) D(s_(N), s_(M)) -> AND(isNat(N), isNatKind(N)) D(s_(N), s_(M)) -> ISNAT(N) D(s_(N), s_(M)) -> ISNATKIND(N) GCD(0, N) -> U111^1(and(isNat(N), isNatKind(N))) GCD(0, N) -> AND(isNat(N), isNatKind(N)) GCD(0, N) -> ISNAT(N) GCD(0, N) -> ISNATKIND(N) GCD(N', M') -> U121^1(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') GCD(N', M') -> AND(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))) GCD(N', M') -> AND(isNzNat(M'), isNatKind(M')) GCD(N', M') -> ISNZNAT(M') GCD(N', M') -> ISNATKIND(M') GCD(N', M') -> AND(isNzNat(N'), isNatKind(N')) GCD(N', M') -> ISNZNAT(N') GCD(N', M') -> ISNATKIND(N') GCD(N', N') -> U131^1(and(isNzNat(N'), isNatKind(N')), N') GCD(N', N') -> AND(isNzNat(N'), isNatKind(N')) GCD(N', N') -> ISNZNAT(N') GCD(N', N') -> ISNATKIND(N') ISBOOLEAN(_<_(V1, V2)) -> U141^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISBOOLEAN(_<_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEAN(_<_(V1, V2)) -> ISNATKIND(V1) ISBOOLEAN(_<_(V1, V2)) -> ISNATKIND(V2) ISBOOLEAN(_>_(V1, V2)) -> U151^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISBOOLEAN(_>_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEAN(_>_(V1, V2)) -> ISNATKIND(V1) ISBOOLEAN(_>_(V1, V2)) -> ISNATKIND(V2) ISBOOLEANKIND(_<_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEANKIND(_<_(V1, V2)) -> ISNATKIND(V1) ISBOOLEANKIND(_<_(V1, V2)) -> ISNATKIND(V2) ISBOOLEANKIND(_>_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISBOOLEANKIND(_>_(V1, V2)) -> ISNATKIND(V1) ISBOOLEANKIND(_>_(V1, V2)) -> ISNATKIND(V2) ISNAT(V) -> U161^1(isNatKind(V), V) ISNAT(V) -> ISNATKIND(V) ISNAT(_*_(V1, V2)) -> U171^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_*_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(_*_(V1, V2)) -> ISNATKIND(V1) ISNAT(_*_(V1, V2)) -> ISNATKIND(V2) ISNAT(_+_(V1, V2)) -> U181^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_+_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(_+_(V1, V2)) -> ISNATKIND(V1) ISNAT(_+_(V1, V2)) -> ISNATKIND(V2) ISNAT(d(V1, V2)) -> U191^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(d(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(d(V1, V2)) -> ISNATKIND(V1) ISNAT(d(V1, V2)) -> ISNATKIND(V2) ISNAT(gcd(V1, V2)) -> U201^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(gcd(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(gcd(V1, V2)) -> ISNATKIND(V1) ISNAT(gcd(V1, V2)) -> ISNATKIND(V2) ISNAT(p_(V1)) -> U211^1(isNatKind(V1), V1) ISNAT(p_(V1)) -> ISNATKIND(V1) ISNAT(quot(V1, V2)) -> U221^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(quot(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNAT(quot(V1, V2)) -> ISNATKIND(V1) ISNAT(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_*_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_+_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(d(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(d(V1, V2)) -> ISNATKIND(V1) ISNATKIND(d(V1, V2)) -> ISNATKIND(V2) ISNATKIND(gcd(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V1) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V2) ISNATKIND(p_(V1)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(s_(V1)) -> ISNATKIND(V1) ISNZNAT(_*_(V1, V2)) -> U231^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(_*_(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNZNAT(_*_(V1, V2)) -> ISNATKIND(V1) ISNZNAT(_*_(V1, V2)) -> ISNATKIND(V2) ISNZNAT(gcd(V1, V2)) -> U241^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(gcd(V1, V2)) -> AND(isNatKind(V1), isNatKind(V2)) ISNZNAT(gcd(V1, V2)) -> ISNATKIND(V1) ISNZNAT(gcd(V1, V2)) -> ISNATKIND(V2) ISNZNAT(s_(V1)) -> U251^1(isNatKind(V1), V1) ISNZNAT(s_(V1)) -> ISNATKIND(V1) P_(s_(N)) -> U261^1(and(isNat(N), isNatKind(N)), N) P_(s_(N)) -> AND(isNat(N), isNatKind(N)) P_(s_(N)) -> ISNAT(N) P_(s_(N)) -> ISNATKIND(N) QUOT(M', M') -> U271^1(and(isNzNat(M'), isNatKind(M'))) QUOT(M', M') -> AND(isNzNat(M'), isNatKind(M')) QUOT(M', M') -> ISNZNAT(M') QUOT(M', M') -> ISNATKIND(M') QUOT(N, M') -> U281^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) QUOT(N, M') -> AND(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))) QUOT(N, M') -> AND(isNzNat(M'), isNatKind(M')) QUOT(N, M') -> ISNZNAT(M') QUOT(N, M') -> ISNATKIND(M') QUOT(N, M') -> AND(isNat(N), isNatKind(N)) QUOT(N, M') -> ISNAT(N) QUOT(N, M') -> ISNATKIND(N) QUOT(N, M') -> U291^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (3) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 8 SCCs with 160 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: The TRS P consists of the following rules: ISNATKIND(quot(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(s_(V1)) -> ISNATKIND(V1) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V2) ISNATKIND(d(V1, V2)) -> ISNATKIND(V2) ISNATKIND(p_(V1)) -> ISNATKIND(V1) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V1) ISNATKIND(d(V1, V2)) -> ISNATKIND(V1) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (6) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (7) Obligation: The TRS P consists of the following rules: ISNATKIND(quot(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(s_(V1)) -> ISNATKIND(V1) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V2) ISNATKIND(d(V1, V2)) -> ISNATKIND(V2) ISNATKIND(p_(V1)) -> ISNATKIND(V1) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V1) ISNATKIND(d(V1, V2)) -> ISNATKIND(V1) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (8) EUsableRulesReductionPairsProof (EQUIVALENT) By using the improved usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding improved usable rules can be oriented non-strictly, the improved usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and improved usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: ISNATKIND(quot(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(quot(V1, V2)) -> ISNATKIND(V2) ISNATKIND(s_(V1)) -> ISNATKIND(V1) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V1) ISNATKIND(_+_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(_*_(V1, V2)) -> ISNATKIND(V2) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V2) ISNATKIND(d(V1, V2)) -> ISNATKIND(V2) ISNATKIND(p_(V1)) -> ISNATKIND(V1) ISNATKIND(gcd(V1, V2)) -> ISNATKIND(V1) ISNATKIND(d(V1, V2)) -> ISNATKIND(V1) The following rules are removed from R: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The following equations are removed from E: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(ISNATKIND(x_1)) = 2*x_1 POL(_*_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_+_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(d(x_1, x_2)) = 3*x_1 + 3*x_2 POL(gcd(x_1, x_2)) = 3*x_1 + 3*x_2 POL(p_(x_1)) = 3*x_1 POL(quot(x_1, x_2)) = 3*x_1 + 3*x_2 POL(s_(x_1)) = 3*x_1 ---------------------------------------- (9) Obligation: P is empty. R is empty. E is empty. E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (10) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,E#,R,E) chain. ---------------------------------------- (11) YES ---------------------------------------- (12) Obligation: The TRS P consists of the following rules: U231^1(tt, V1, V2) -> U232^1(isNzNat(V1), V2) U232^1(tt, V2) -> ISNZNAT(V2) U192^1(tt, V2) -> ISNAT(V2) ISNAT(p_(V1)) -> U211^1(isNatKind(V1), V1) U201^1(tt, V1, V2) -> ISNAT(V1) U242^1(tt, V2) -> ISNZNAT(V2) ISNZNAT(_*_(V1, V2)) -> U231^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(d(V1, V2)) -> U191^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) U201^1(tt, V1, V2) -> U202^1(isNat(V1), V2) U171^1(tt, V1, V2) -> U172^1(isNat(V1), V2) ISNAT(_+_(V1, V2)) -> U181^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(s_(V1)) -> U251^1(isNatKind(V1), V1) U221^1(tt, V1, V2) -> ISNAT(V1) U182^1(tt, V2) -> ISNAT(V2) U181^1(tt, V1, V2) -> U182^1(isNat(V1), V2) U172^1(tt, V2) -> ISNAT(V2) U202^1(tt, V2) -> ISNAT(V2) U222^1(tt, V2) -> ISNZNAT(V2) U251^1(tt, V1) -> ISNAT(V1) U161^1(tt, V) -> ISNZNAT(V) U191^1(tt, V1, V2) -> ISNAT(V1) ISNAT(V) -> U161^1(isNatKind(V), V) U241^1(tt, V1, V2) -> ISNZNAT(V1) ISNAT(gcd(V1, V2)) -> U201^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_*_(V1, V2)) -> U171^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) U231^1(tt, V1, V2) -> ISNZNAT(V1) U171^1(tt, V1, V2) -> ISNAT(V1) U211^1(tt, V1) -> ISNZNAT(V1) U181^1(tt, V1, V2) -> ISNAT(V1) U241^1(tt, V1, V2) -> U242^1(isNzNat(V1), V2) U191^1(tt, V1, V2) -> U192^1(isNat(V1), V2) U221^1(tt, V1, V2) -> U222^1(isNat(V1), V2) ISNZNAT(gcd(V1, V2)) -> U241^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(quot(V1, V2)) -> U221^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (13) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (14) Obligation: The TRS P consists of the following rules: U231^1(tt, V1, V2) -> U232^1(isNzNat(V1), V2) U232^1(tt, V2) -> ISNZNAT(V2) U192^1(tt, V2) -> ISNAT(V2) ISNAT(p_(V1)) -> U211^1(isNatKind(V1), V1) U201^1(tt, V1, V2) -> ISNAT(V1) U242^1(tt, V2) -> ISNZNAT(V2) ISNZNAT(_*_(V1, V2)) -> U231^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(d(V1, V2)) -> U191^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) U201^1(tt, V1, V2) -> U202^1(isNat(V1), V2) U171^1(tt, V1, V2) -> U172^1(isNat(V1), V2) ISNAT(_+_(V1, V2)) -> U181^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(s_(V1)) -> U251^1(isNatKind(V1), V1) U221^1(tt, V1, V2) -> ISNAT(V1) U182^1(tt, V2) -> ISNAT(V2) U181^1(tt, V1, V2) -> U182^1(isNat(V1), V2) U172^1(tt, V2) -> ISNAT(V2) U202^1(tt, V2) -> ISNAT(V2) U222^1(tt, V2) -> ISNZNAT(V2) U251^1(tt, V1) -> ISNAT(V1) U161^1(tt, V) -> ISNZNAT(V) U191^1(tt, V1, V2) -> ISNAT(V1) ISNAT(V) -> U161^1(isNatKind(V), V) U241^1(tt, V1, V2) -> ISNZNAT(V1) ISNAT(gcd(V1, V2)) -> U201^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_*_(V1, V2)) -> U171^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) U231^1(tt, V1, V2) -> ISNZNAT(V1) U171^1(tt, V1, V2) -> ISNAT(V1) U211^1(tt, V1) -> ISNZNAT(V1) U181^1(tt, V1, V2) -> ISNAT(V1) U241^1(tt, V1, V2) -> U242^1(isNzNat(V1), V2) U191^1(tt, V1, V2) -> U192^1(isNat(V1), V2) U221^1(tt, V1, V2) -> U222^1(isNat(V1), V2) ISNZNAT(gcd(V1, V2)) -> U241^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(quot(V1, V2)) -> U221^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (15) EUsableRulesReductionPairsProof (EQUIVALENT) By using the improved usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding improved usable rules can be oriented non-strictly, the improved usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and improved usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: ISNAT(p_(V1)) -> U211^1(isNatKind(V1), V1) ISNZNAT(_*_(V1, V2)) -> U231^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(d(V1, V2)) -> U191^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_+_(V1, V2)) -> U181^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNZNAT(s_(V1)) -> U251^1(isNatKind(V1), V1) U221^1(tt, V1, V2) -> ISNAT(V1) U181^1(tt, V1, V2) -> U182^1(isNat(V1), V2) ISNAT(gcd(V1, V2)) -> U201^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(_*_(V1, V2)) -> U171^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) U181^1(tt, V1, V2) -> ISNAT(V1) U221^1(tt, V1, V2) -> U222^1(isNat(V1), V2) ISNZNAT(gcd(V1, V2)) -> U241^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) ISNAT(quot(V1, V2)) -> U221^1(and(isNatKind(V1), isNatKind(V2)), V1, V2) The following rules are removed from R: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The following equations are removed from E: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(1) = 0 POL(2) = 0 POL(3) = 0 POL(4) = 0 POL(5) = 0 POL(6) = 0 POL(7) = 0 POL(ISNAT(x_1)) = 3*x_1 POL(ISNZNAT(x_1)) = 2*x_1 POL(U161(x_1, x_2)) = x_1 + x_2 POL(U161^1(x_1, x_2)) = x_1 + 2*x_2 POL(U162(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 POL(U171^1(x_1, x_2, x_3)) = 3*x_1 + 3*x_2 + 3*x_3 POL(U172(x_1, x_2)) = x_1 + 2*x_2 POL(U172^1(x_1, x_2)) = x_1 + 3*x_2 POL(U173(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U181^1(x_1, x_2, x_3)) = 2 + x_1 + 3*x_2 + 3*x_3 POL(U182(x_1, x_2)) = x_1 + 2*x_2 POL(U182^1(x_1, x_2)) = x_1 + 3*x_2 POL(U183(x_1)) = x_1 POL(U191(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U191^1(x_1, x_2, x_3)) = 3*x_1 + 3*x_2 + 3*x_3 POL(U192(x_1, x_2)) = x_1 + 2*x_2 POL(U192^1(x_1, x_2)) = x_1 + 3*x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U201^1(x_1, x_2, x_3)) = x_1 + 3*x_2 + 3*x_3 POL(U202(x_1, x_2)) = x_1 + 2*x_2 POL(U202^1(x_1, x_2)) = x_1 + 3*x_2 POL(U203(x_1)) = x_1 POL(U211(x_1, x_2)) = x_1 + x_2 POL(U211^1(x_1, x_2)) = x_1 + 2*x_2 POL(U212(x_1)) = x_1 POL(U221(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U221^1(x_1, x_2, x_3)) = 2 + 3*x_1 + 3*x_2 + 2*x_3 POL(U222(x_1, x_2)) = x_1 + 2*x_2 POL(U222^1(x_1, x_2)) = x_1 + 2*x_2 POL(U223(x_1)) = 2*x_1 POL(U231(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U231^1(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U232(x_1, x_2)) = x_1 + x_2 POL(U232^1(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U233(x_1)) = x_1 POL(U241(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U241^1(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 POL(U242(x_1, x_2)) = x_1 + x_2 POL(U242^1(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U243(x_1)) = x_1 POL(U251(x_1, x_2)) = x_1 + 2*x_2 POL(U251^1(x_1, x_2)) = x_1 + 3*x_2 POL(U252(x_1)) = x_1 POL(_*_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_+_(x_1, x_2)) = 3 + 2*x_1 + 2*x_2 POL(and(x_1, x_2)) = 2*x_1 + 2*x_2 POL(d(x_1, x_2)) = 3*x_1 + 3*x_2 POL(gcd(x_1, x_2)) = 3*x_1 + 3*x_2 POL(isNat(x_1)) = 2*x_1 POL(isNatKind(x_1)) = x_1 POL(isNzNat(x_1)) = x_1 POL(p_(x_1)) = x_1 POL(quot(x_1, x_2)) = 3 + 3*x_1 + 3*x_2 POL(s_(x_1)) = 3 + 3*x_1 POL(tt) = 0 ---------------------------------------- (16) Obligation: The TRS P consists of the following rules: U231^1(tt, V1, V2) -> U232^1(isNzNat(V1), V2) U232^1(tt, V2) -> ISNZNAT(V2) U192^1(tt, V2) -> ISNAT(V2) U201^1(tt, V1, V2) -> ISNAT(V1) U242^1(tt, V2) -> ISNZNAT(V2) U201^1(tt, V1, V2) -> U202^1(isNat(V1), V2) U171^1(tt, V1, V2) -> U172^1(isNat(V1), V2) U182^1(tt, V2) -> ISNAT(V2) U172^1(tt, V2) -> ISNAT(V2) U202^1(tt, V2) -> ISNAT(V2) U222^1(tt, V2) -> ISNZNAT(V2) U251^1(tt, V1) -> ISNAT(V1) U161^1(tt, V) -> ISNZNAT(V) U191^1(tt, V1, V2) -> ISNAT(V1) ISNAT(V) -> U161^1(isNatKind(V), V) U241^1(tt, V1, V2) -> ISNZNAT(V1) U231^1(tt, V1, V2) -> ISNZNAT(V1) U171^1(tt, V1, V2) -> ISNAT(V1) U211^1(tt, V1) -> ISNZNAT(V1) U241^1(tt, V1, V2) -> U242^1(isNzNat(V1), V2) U191^1(tt, V1, V2) -> U192^1(isNat(V1), V2) The TRS R consists of the following rules: and(tt, X) -> X U211(tt, V1) -> U212(isNzNat(V1)) U242(tt, V2) -> U243(isNzNat(V2)) U233(tt) -> tt U232(tt, V2) -> U233(isNzNat(V2)) U172(tt, V2) -> U173(isNat(V2)) U222(tt, V2) -> U223(isNzNat(V2)) U201(tt, V1, V2) -> U202(isNat(V1), V2) U183(tt) -> tt U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U182(tt, V2) -> U183(isNat(V2)) U241(tt, V1, V2) -> U242(isNzNat(V1), V2) isNat(V) -> U161(isNatKind(V), V) U173(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U221(tt, V1, V2) -> U222(isNat(V1), V2) U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U252(tt) -> tt U162(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U193(tt) -> tt U223(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U191(tt, V1, V2) -> U192(isNat(V1), V2) U212(tt) -> tt U192(tt, V2) -> U193(isNat(V2)) U243(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) E is empty. E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (17) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 21 less nodes. ---------------------------------------- (18) TRUE ---------------------------------------- (19) Obligation: The TRS P consists of the following rules: _>_^1(s_(N), s_(M)) -> U81^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) U81^1(tt, M, N) -> _>_^1(N, M) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (20) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (21) Obligation: The TRS P consists of the following rules: _>_^1(s_(N), s_(M)) -> U81^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) U81^1(tt, M, N) -> _>_^1(N, M) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (22) EUsableRulesReductionPairsProof (EQUIVALENT) By using the improved usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding improved usable rules can be oriented non-strictly, the improved usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and improved usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: _>_^1(s_(N), s_(M)) -> U81^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The following rules are removed from R: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U201(tt, V1, V2) -> U202(isNat(V1), V2) U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The following equations are removed from E: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(1) = 0 POL(2) = 0 POL(3) = 0 POL(4) = 0 POL(5) = 0 POL(6) = 0 POL(7) = 0 POL(U161(x_1, x_2)) = x_1 + x_2 POL(U162(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 POL(U172(x_1, x_2)) = x_1 + 2*x_2 POL(U173(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = 2 + 2*x_1 + 2*x_2 + 2*x_3 POL(U182(x_1, x_2)) = x_1 + 2*x_2 POL(U183(x_1)) = x_1 POL(U191(x_1, x_2, x_3)) = 3 + 2*x_1 + 2*x_2 + 2*x_3 POL(U192(x_1, x_2)) = 2 + x_1 + 2*x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 2*x_3 POL(U202(x_1, x_2)) = x_1 + 2*x_2 POL(U203(x_1)) = x_1 POL(U211(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U212(x_1)) = 2*x_1 POL(U221(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 POL(U222(x_1, x_2)) = x_1 + 2*x_2 POL(U223(x_1)) = 2*x_1 POL(U231(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U232(x_1, x_2)) = x_1 + 2*x_2 POL(U233(x_1)) = 2*x_1 POL(U241(x_1, x_2, x_3)) = x_1 + 2*x_2 + x_3 POL(U242(x_1, x_2)) = x_1 + x_2 POL(U243(x_1)) = x_1 POL(U251(x_1, x_2)) = x_1 + 2*x_2 POL(U252(x_1)) = x_1 POL(U81^1(x_1, x_2, x_3)) = x_1 + 2*x_2 + 3*x_3 POL(_*_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_+_(x_1, x_2)) = 1 + 3*x_1 + 3*x_2 POL(_>_^1(x_1, x_2)) = 3*x_1 + 2*x_2 POL(and(x_1, x_2)) = x_1 + x_2 POL(d(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(gcd(x_1, x_2)) = 1 + 3*x_1 + 2*x_2 POL(isNat(x_1)) = 2*x_1 POL(isNatKind(x_1)) = x_1 POL(isNzNat(x_1)) = x_1 POL(p_(x_1)) = 3 + 3*x_1 POL(quot(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(s_(x_1)) = 3*x_1 POL(tt) = 0 ---------------------------------------- (23) Obligation: The TRS P consists of the following rules: U81^1(tt, M, N) -> _>_^1(N, M) The TRS R consists of the following rules: and(tt, X) -> X U211(tt, V1) -> U212(isNzNat(V1)) U242(tt, V2) -> U243(isNzNat(V2)) U233(tt) -> tt U232(tt, V2) -> U233(isNzNat(V2)) U172(tt, V2) -> U173(isNat(V2)) U222(tt, V2) -> U223(isNzNat(V2)) U183(tt) -> tt U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U182(tt, V2) -> U183(isNat(V2)) U241(tt, V1, V2) -> U242(isNzNat(V1), V2) isNat(V) -> U161(isNatKind(V), V) U173(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U221(tt, V1, V2) -> U222(isNat(V1), V2) U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U252(tt) -> tt U162(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U193(tt) -> tt U223(tt) -> tt U212(tt) -> tt U243(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) E is empty. E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (24) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 1 less node. ---------------------------------------- (25) TRUE ---------------------------------------- (26) Obligation: The TRS P consists of the following rules: U41^1(tt, M, N) -> _+_^1(N, M) _+_^1(s_(N), s_(M)) -> U41^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (27) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _*_^1(x, y) == _*_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (28) Obligation: The TRS P consists of the following rules: U41^1(tt, M, N) -> _+_^1(N, M) _+_^1(s_(N), s_(M)) -> U41^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _+_^1(x, y) == _+_^1(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (29) EUsableRulesReductionPairsProof (EQUIVALENT) By using the improved usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding improved usable rules can be oriented non-strictly, the improved usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and improved usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: _+_^1(s_(N), s_(M)) -> U41^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The following rules are removed from R: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U201(tt, V1, V2) -> U202(isNat(V1), V2) U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U221(tt, V1, V2) -> U222(isNat(V1), V2) U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The following equations are removed from E: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(1) = 0 POL(2) = 0 POL(3) = 0 POL(4) = 0 POL(5) = 0 POL(6) = 0 POL(7) = 0 POL(U161(x_1, x_2)) = x_1 + x_2 POL(U162(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U172(x_1, x_2)) = x_1 + 2*x_2 POL(U173(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 3*x_3 POL(U182(x_1, x_2)) = x_1 + 3*x_2 POL(U183(x_1)) = x_1 POL(U191(x_1, x_2, x_3)) = 3 + x_1 + 3*x_2 + 3*x_3 POL(U192(x_1, x_2)) = 2 + x_1 + 3*x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 2*x_3 POL(U202(x_1, x_2)) = x_1 + 2*x_2 POL(U203(x_1)) = x_1 POL(U211(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U212(x_1)) = x_1 POL(U221(x_1, x_2, x_3)) = 2 + 2*x_1 + 2*x_2 + 2*x_3 POL(U222(x_1, x_2)) = x_1 + 2*x_2 POL(U223(x_1)) = 2*x_1 POL(U231(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U232(x_1, x_2)) = x_1 + 2*x_2 POL(U233(x_1)) = 2*x_1 POL(U241(x_1, x_2, x_3)) = 2*x_1 + x_2 + x_3 POL(U242(x_1, x_2)) = x_1 + x_2 POL(U243(x_1)) = x_1 POL(U251(x_1, x_2)) = x_1 + 2*x_2 POL(U252(x_1)) = x_1 POL(U41^1(x_1, x_2, x_3)) = 2*x_1 + 3*x_2 + 3*x_3 POL(_*_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_+_(x_1, x_2)) = 1 + 2*x_1 + 3*x_2 POL(_+_^1(x_1, x_2)) = 3*x_1 + 3*x_2 POL(and(x_1, x_2)) = x_1 + x_2 POL(d(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(gcd(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(isNat(x_1)) = 2*x_1 POL(isNatKind(x_1)) = x_1 POL(isNzNat(x_1)) = x_1 POL(p_(x_1)) = 3 + 3*x_1 POL(quot(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(s_(x_1)) = 3*x_1 POL(tt) = 0 ---------------------------------------- (30) Obligation: The TRS P consists of the following rules: U41^1(tt, M, N) -> _+_^1(N, M) The TRS R consists of the following rules: and(tt, X) -> X U211(tt, V1) -> U212(isNzNat(V1)) U242(tt, V2) -> U243(isNzNat(V2)) U233(tt) -> tt U232(tt, V2) -> U233(isNzNat(V2)) U172(tt, V2) -> U173(isNat(V2)) U222(tt, V2) -> U223(isNzNat(V2)) U183(tt) -> tt U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U182(tt, V2) -> U183(isNat(V2)) U241(tt, V1, V2) -> U242(isNzNat(V1), V2) isNat(V) -> U161(isNatKind(V), V) U173(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U252(tt) -> tt U162(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U193(tt) -> tt U223(tt) -> tt U212(tt) -> tt U243(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) E is empty. The set E# consists of the following equations: _+_^1(x, y) == _+_^1(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (31) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 1 less node. ---------------------------------------- (32) TRUE ---------------------------------------- (33) Obligation: The TRS P consists of the following rules: _*_^1(s_(N), s_(M)) -> U21^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) U21^1(tt, M, N) -> _*_^1(N, M) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (34) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (35) Obligation: The TRS P consists of the following rules: _*_^1(s_(N), s_(M)) -> U21^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) U21^1(tt, M, N) -> _*_^1(N, M) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (36) EUsableRulesReductionPairsProof (EQUIVALENT) By using the improved usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding improved usable rules can be oriented non-strictly, the improved usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and improved usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: _*_^1(s_(N), s_(M)) -> U21^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The following rules are removed from R: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The following equations are removed from E: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(1) = 0 POL(2) = 0 POL(3) = 0 POL(4) = 0 POL(5) = 0 POL(6) = 0 POL(7) = 0 POL(U161(x_1, x_2)) = x_1 + x_2 POL(U162(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U172(x_1, x_2)) = x_1 + 2*x_2 POL(U173(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 POL(U182(x_1, x_2)) = x_1 + 2*x_2 POL(U183(x_1)) = x_1 POL(U191(x_1, x_2, x_3)) = x_1 + 2*x_2 + 3*x_3 POL(U192(x_1, x_2)) = x_1 + 3*x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2, x_3)) = x_1 + 3*x_2 + 3*x_3 POL(U202(x_1, x_2)) = x_1 + 3*x_2 POL(U203(x_1)) = x_1 POL(U211(x_1, x_2)) = 3*x_1 + x_2 POL(U212(x_1)) = x_1 POL(U21^1(x_1, x_2, x_3)) = 2*x_1 + 3*x_2 + 3*x_3 POL(U221(x_1, x_2, x_3)) = 3 + 2*x_1 + 2*x_2 + 2*x_3 POL(U222(x_1, x_2)) = 2 + x_1 + x_2 POL(U223(x_1)) = x_1 POL(U231(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U232(x_1, x_2)) = x_1 + 2*x_2 POL(U233(x_1)) = 2*x_1 POL(U241(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U242(x_1, x_2)) = x_1 + x_2 POL(U243(x_1)) = x_1 POL(U251(x_1, x_2)) = x_1 + 2*x_2 POL(U252(x_1)) = x_1 POL(_*_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_*_^1(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_+_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(and(x_1, x_2)) = x_1 + x_2 POL(d(x_1, x_2)) = 2*x_1 + 3*x_2 POL(gcd(x_1, x_2)) = 2*x_1 + 3*x_2 POL(isNat(x_1)) = 2*x_1 POL(isNatKind(x_1)) = x_1 POL(isNzNat(x_1)) = x_1 POL(p_(x_1)) = 1 + 3*x_1 POL(quot(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(s_(x_1)) = 1 + 3*x_1 POL(tt) = 0 ---------------------------------------- (37) Obligation: The TRS P consists of the following rules: U21^1(tt, M, N) -> _*_^1(N, M) The TRS R consists of the following rules: and(tt, X) -> X U211(tt, V1) -> U212(isNzNat(V1)) U242(tt, V2) -> U243(isNzNat(V2)) U233(tt) -> tt U232(tt, V2) -> U233(isNzNat(V2)) U172(tt, V2) -> U173(isNat(V2)) U201(tt, V1, V2) -> U202(isNat(V1), V2) U183(tt) -> tt U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U182(tt, V2) -> U183(isNat(V2)) U241(tt, V1, V2) -> U242(isNzNat(V1), V2) isNat(V) -> U161(isNatKind(V), V) U173(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U252(tt) -> tt U162(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U193(tt) -> tt U223(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U191(tt, V1, V2) -> U192(isNat(V1), V2) U212(tt) -> tt U192(tt, V2) -> U193(isNat(V2)) U243(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) E is empty. The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (38) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 1 less node. ---------------------------------------- (39) TRUE ---------------------------------------- (40) Obligation: The TRS P consists of the following rules: U101^1(tt, M, N) -> D(N, M) D(s_(N), s_(M)) -> U101^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (41) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (42) Obligation: The TRS P consists of the following rules: U101^1(tt, M, N) -> D(N, M) D(s_(N), s_(M)) -> U101^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: D(x, y) == D(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (43) EUsableRulesReductionPairsProof (EQUIVALENT) By using the improved usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding improved usable rules can be oriented non-strictly, the improved usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and improved usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: D(s_(N), s_(M)) -> U101^1(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) The following rules are removed from R: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U201(tt, V1, V2) -> U202(isNat(V1), V2) U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U221(tt, V1, V2) -> U222(isNat(V1), V2) U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The following equations are removed from E: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(1) = 0 POL(2) = 0 POL(3) = 0 POL(4) = 0 POL(5) = 0 POL(6) = 0 POL(7) = 0 POL(D(x_1, x_2)) = 3*x_1 + 3*x_2 POL(U101^1(x_1, x_2, x_3)) = 2*x_1 + 3*x_2 + 3*x_3 POL(U161(x_1, x_2)) = x_1 + x_2 POL(U162(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U172(x_1, x_2)) = x_1 + 2*x_2 POL(U173(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 3*x_3 POL(U182(x_1, x_2)) = x_1 + 3*x_2 POL(U183(x_1)) = x_1 POL(U191(x_1, x_2, x_3)) = 3 + x_1 + 3*x_2 + 3*x_3 POL(U192(x_1, x_2)) = 2 + x_1 + 3*x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 2*x_3 POL(U202(x_1, x_2)) = x_1 + 2*x_2 POL(U203(x_1)) = x_1 POL(U211(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U212(x_1)) = x_1 POL(U221(x_1, x_2, x_3)) = 2 + 2*x_1 + 2*x_2 + 2*x_3 POL(U222(x_1, x_2)) = x_1 + 2*x_2 POL(U223(x_1)) = 2*x_1 POL(U231(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U232(x_1, x_2)) = x_1 + 2*x_2 POL(U233(x_1)) = 2*x_1 POL(U241(x_1, x_2, x_3)) = 2*x_1 + x_2 + x_3 POL(U242(x_1, x_2)) = x_1 + x_2 POL(U243(x_1)) = x_1 POL(U251(x_1, x_2)) = x_1 + 2*x_2 POL(U252(x_1)) = x_1 POL(_*_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_+_(x_1, x_2)) = 1 + 2*x_1 + 3*x_2 POL(and(x_1, x_2)) = x_1 + x_2 POL(d(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(gcd(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(isNat(x_1)) = 2*x_1 POL(isNatKind(x_1)) = x_1 POL(isNzNat(x_1)) = x_1 POL(p_(x_1)) = 3 + 3*x_1 POL(quot(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(s_(x_1)) = 3*x_1 POL(tt) = 0 ---------------------------------------- (44) Obligation: The TRS P consists of the following rules: U101^1(tt, M, N) -> D(N, M) The TRS R consists of the following rules: and(tt, X) -> X U211(tt, V1) -> U212(isNzNat(V1)) U242(tt, V2) -> U243(isNzNat(V2)) U233(tt) -> tt U232(tt, V2) -> U233(isNzNat(V2)) U172(tt, V2) -> U173(isNat(V2)) U222(tt, V2) -> U223(isNzNat(V2)) U183(tt) -> tt U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U182(tt, V2) -> U183(isNat(V2)) U241(tt, V1, V2) -> U242(isNzNat(V1), V2) isNat(V) -> U161(isNatKind(V), V) U173(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U252(tt) -> tt U162(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U193(tt) -> tt U223(tt) -> tt U212(tt) -> tt U243(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) E is empty. The set E# consists of the following equations: D(x, y) == D(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (45) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 1 less node. ---------------------------------------- (46) TRUE ---------------------------------------- (47) Obligation: The TRS P consists of the following rules: QUOT(N, M') -> U291^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) U291^1(tt, M', N) -> U292^1(equal(_>_(N, M'), true), M', N) U292^1(tt, M', N) -> QUOT(d(N, M'), M') The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (48) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) ---------------------------------------- (49) Obligation: The TRS P consists of the following rules: QUOT(N, M') -> U291^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) U291^1(tt, M', N) -> U292^1(equal(_>_(N, M'), true), M', N) U292^1(tt, M', N) -> QUOT(d(N, M'), M') The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (50) EUsableRulesProof (EQUIVALENT) We use the improved usable rules and equations processor [DA_STEIN] to delete all non-usable rules from R and all non-usable equations from E, but we lose minimality and add the following 2 Ce-rules: c(x, y) -> x c(x, y) -> y ---------------------------------------- (51) Obligation: The TRS P consists of the following rules: QUOT(N, M') -> U291^1(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) U291^1(tt, M', N) -> U292^1(equal(_>_(N, M'), true), M', N) U292^1(tt, M', N) -> QUOT(d(N, M'), M') The TRS R consists of the following rules: isNzNat(6) -> tt isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) and(tt, X) -> X isNat(0) -> tt U211(tt, V1) -> U212(isNzNat(V1)) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) U242(tt, V2) -> U243(isNzNat(V2)) U233(tt) -> tt U232(tt, V2) -> U233(isNzNat(V2)) equal(X, X) -> tt U172(tt, V2) -> U173(isNat(V2)) U222(tt, V2) -> U223(isNzNat(V2)) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) U201(tt, V1, V2) -> U202(isNat(V1), V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(5) -> tt isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) U183(tt) -> tt isNatKind(4) -> tt isNatKind(3) -> tt isNatKind(0) -> tt U202(tt, V2) -> U203(isNat(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) U203(tt) -> tt U182(tt, V2) -> U183(isNat(V2)) U241(tt, V1, V2) -> U242(isNzNat(V1), V2) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(V) -> U161(isNatKind(V), V) U173(tt) -> tt d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) U161(tt, V) -> U162(isNzNat(V)) U221(tt, V1, V2) -> U222(isNat(V1), V2) U81(tt, M, N) -> _>_(N, M) U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U101(tt, M, N) -> d(N, M) U252(tt) -> tt isNzNat(7) -> tt _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) isNzNat(1) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(2) -> tt isNzNat(3) -> tt U162(tt) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(p_(V1)) -> U211(isNatKind(V1), V1) U251(tt, V1) -> U252(isNat(V1)) U193(tt) -> tt U223(tt) -> tt d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) U181(tt, V1, V2) -> U182(isNat(V1), V2) U191(tt, V1, V2) -> U192(isNat(V1), V2) U212(tt) -> tt U61(tt) -> false isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) U192(tt, V2) -> U193(isNat(V2)) U91(tt, N) -> N isNatKind(7) -> tt isNatKind(p_(V1)) -> isNatKind(V1) U243(tt) -> tt isNatKind(1) -> tt isNatKind(6) -> tt isNatKind(2) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) isNatKind(s_(V1)) -> isNatKind(V1) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) U71(tt) -> true c(x, y) -> x c(x, y) -> y The set E consists of the following equations: d(x, y) == d(y, x) E# is empty. We have to consider all (P,E#,R,E)-chains ---------------------------------------- (52) Obligation: The TRS P consists of the following rules: U122^1(tt, M', N') -> GCD(d(N', M'), M') GCD(N', M') -> U121^1(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') U121^1(tt, M', N') -> U122^1(equal(_>_(N', M'), true), M', N') The TRS R consists of the following rules: 1 -> s_(0) 2 -> s_(s_(0)) 3 -> s_(s_(s_(0))) 4 -> s_(s_(s_(s_(0)))) 5 -> s_(s_(s_(s_(s_(0))))) 6 -> s_(s_(s_(s_(s_(s_(0)))))) 7 -> s_(s_(s_(s_(s_(s_(s_(0))))))) U101(tt, M, N) -> d(N, M) U11(tt) -> 0 U111(tt) -> 0 U121(tt, M', N') -> U122(equal(_>_(N', M'), true), M', N') U122(tt, M', N') -> gcd(d(N', M'), M') U131(tt, N') -> N' U141(tt, V1, V2) -> U142(isNat(V1), V2) U142(tt, V2) -> U143(isNat(V2)) U143(tt) -> tt U151(tt, V1, V2) -> U152(isNat(V1), V2) U152(tt, V2) -> U153(isNat(V2)) U153(tt) -> tt U161(tt, V) -> U162(isNzNat(V)) U162(tt) -> tt U171(tt, V1, V2) -> U172(isNat(V1), V2) U172(tt, V2) -> U173(isNat(V2)) U173(tt) -> tt U181(tt, V1, V2) -> U182(isNat(V1), V2) U182(tt, V2) -> U183(isNat(V2)) U183(tt) -> tt U191(tt, V1, V2) -> U192(isNat(V1), V2) U192(tt, V2) -> U193(isNat(V2)) U193(tt) -> tt U201(tt, V1, V2) -> U202(isNat(V1), V2) U202(tt, V2) -> U203(isNat(V2)) U203(tt) -> tt U21(tt, M, N) -> s_(_+_(N, _+_(M, _*_(N, M)))) U211(tt, V1) -> U212(isNzNat(V1)) U212(tt) -> tt U221(tt, V1, V2) -> U222(isNat(V1), V2) U222(tt, V2) -> U223(isNzNat(V2)) U223(tt) -> tt U231(tt, V1, V2) -> U232(isNzNat(V1), V2) U232(tt, V2) -> U233(isNzNat(V2)) U233(tt) -> tt U241(tt, V1, V2) -> U242(isNzNat(V1), V2) U242(tt, V2) -> U243(isNzNat(V2)) U243(tt) -> tt U251(tt, V1) -> U252(isNat(V1)) U252(tt) -> tt U261(tt, N) -> N U271(tt) -> s_(0) U281(tt, M', N) -> U282(equal(_>_(M', N), true)) U282(tt) -> 0 U291(tt, M', N) -> U292(equal(_>_(N, M'), true), M', N) U292(tt, M', N) -> s_(quot(d(N, M'), M')) U31(tt, N) -> N U41(tt, M, N) -> s_(s_(_+_(N, M))) U51(tt, M, N) -> _>_(M, N) U61(tt) -> false U71(tt) -> true U81(tt, M, N) -> _>_(N, M) U91(tt, N) -> N _*_(N, 0) -> U11(and(isNat(N), isNatKind(N))) _*_(s_(N), s_(M)) -> U21(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _+_(N, 0) -> U31(and(isNat(N), isNatKind(N)), N) _+_(s_(N), s_(M)) -> U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _<_(N, M) -> U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) _>_(0, M) -> U61(and(isNat(M), isNatKind(M))) _>_(N', 0) -> U71(and(isNzNat(N'), isNatKind(N'))) _>_(s_(N), s_(M)) -> U81(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) and(tt, X) -> X d(0, N) -> U91(and(isNat(N), isNatKind(N)), N) d(s_(N), s_(M)) -> U101(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) equal(X, X) -> tt gcd(0, N) -> U111(and(isNat(N), isNatKind(N))) gcd(N', M') -> U121(and(and(isNzNat(M'), isNatKind(M')), and(isNzNat(N'), isNatKind(N'))), M', N') gcd(N', N') -> U131(and(isNzNat(N'), isNatKind(N')), N') isBoolean(false) -> tt isBoolean(true) -> tt isBoolean(_<_(V1, V2)) -> U141(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBoolean(_>_(V1, V2)) -> U151(and(isNatKind(V1), isNatKind(V2)), V1, V2) isBooleanKind(false) -> tt isBooleanKind(true) -> tt isBooleanKind(_<_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isBooleanKind(_>_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNat(0) -> tt isNat(V) -> U161(isNatKind(V), V) isNat(_*_(V1, V2)) -> U171(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(_+_(V1, V2)) -> U181(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(d(V1, V2)) -> U191(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(gcd(V1, V2)) -> U201(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNat(p_(V1)) -> U211(isNatKind(V1), V1) isNat(quot(V1, V2)) -> U221(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNatKind(0) -> tt isNatKind(1) -> tt isNatKind(2) -> tt isNatKind(3) -> tt isNatKind(4) -> tt isNatKind(5) -> tt isNatKind(6) -> tt isNatKind(7) -> tt isNatKind(_*_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(_+_(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(d(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(gcd(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(p_(V1)) -> isNatKind(V1) isNatKind(quot(V1, V2)) -> and(isNatKind(V1), isNatKind(V2)) isNatKind(s_(V1)) -> isNatKind(V1) isNzNat(1) -> tt isNzNat(2) -> tt isNzNat(3) -> tt isNzNat(4) -> tt isNzNat(5) -> tt isNzNat(6) -> tt isNzNat(7) -> tt isNzNat(_*_(V1, V2)) -> U231(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(gcd(V1, V2)) -> U241(and(isNatKind(V1), isNatKind(V2)), V1, V2) isNzNat(s_(V1)) -> U251(isNatKind(V1), V1) p_(s_(N)) -> U261(and(isNat(N), isNatKind(N)), N) quot(M', M') -> U271(and(isNzNat(M'), isNatKind(M'))) quot(N, M') -> U281(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) quot(N, M') -> U291(and(and(isNzNat(M'), isNatKind(M')), and(isNat(N), isNatKind(N))), M', N) The set E consists of the following equations: _*_(x, y) == _*_(y, x) _+_(x, y) == _+_(y, x) d(x, y) == d(y, x) gcd(x, y) == gcd(y, x) The set E# consists of the following equations: _*_^1(x, y) == _*_^1(y, x) _+_^1(x, y) == _+_^1(y, x) D(x, y) == D(y, x) GCD(x, y) == GCD(y, x) We have to consider all minimal (P,E#,R,E)-chains